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 (ChatGPT, Claude Desktop, Claude Code, Codex, Cursor, Gemini, Grok, 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. It is compatible with 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.
Using ChatGPT, Claude, Gemini, Grok or Cursor? Nothing to install. Add Kiln inside the app by its address, https://api.kiln3d.com/mcp, and sign in: it designs the part, checks it will print, and shows it in 3D, right in the chat where the app can show it. Each app's page says exactly what was seen there: ChatGPT, Claude, Codex, Cursor, Gemini, Grok. To run your own printer, do the three steps below on the computer next to it.
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
kiln park --plan # Describe the safe park, send nothing; then --step 1, 2, 3
kiln home --plan # Same for the Home button; --plate-clear where Z homes onto the plate
kiln filament wipe --plan # Same for the wipe-pad pass; --plate-clear where its plan presses the plate
# 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 895 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 (User Settings › Application Keys) |
Klipper/Moonraker |
| Moonraker URL (usually |
Creality K1/K2/Hi/Ender V4/V3 KE |
| IP + |
Bambu Lab |
| IP + serial number + LAN access code, all on the printer's screen; LAN Only Mode and Developer Mode on to start and control prints |
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), and Kiln can show that camera as live video in the print monitor on the computer connected to the printer. The X1 series (X1C, X1E) streams RTSPS, which Kiln's live-video relay does not carry: on an X1, Kiln takes snapshots by cutting a frame from that stream with ffmpeg (brew install ffmpeg / sudo apt install ffmpeg), and there is no live video. 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 — compatible with 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, quoted and ordered through Kiln.
AI-native — 902 MCP capabilities and 246 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 — 38 materials and brand filament profiles for 69 brands and lines (the per-brand tune is part of Kiln Pro). 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 — a named safety profile for every supported printer, 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 | Compatible with 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 (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 70 models across 15 brands — Creality, Bambu Lab, QIDI, Elegoo, Prusa Research, Sovol, Voron, AON3D, Artillery, 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. Conflicts are shown as visual diffs of the geometry, not text patches. Manufacturing tolerance, not character offsets.
Signed releases. A release is cryptographically signed and pinned to its exact mesh, so anyone can verify the part they hold is the part that was released.
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 895 tools to agents, plus prompts and resources for 902 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
show_on_stage
Turn over a file you already have — a model, or the sliced file about to print — on Kiln's interactive 3D stage, without re-making or re-slicing it
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: where a machine reports no flow signal it says so rather than claiming success
Always says where the purge went: over the machine's own purge chute where Kiln knows it for your model (served through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it keeps working offline), or in place with the reason — never a guessed coordinate
wipe_nozzle
Clean the nozzle tip on the printer's own wipe pad (served through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it keeps working offline); refuses, and says what to use instead, on any model whose pad Kiln does not know
Run it in steps where the pass is new to a machine:
plan_onlydescribes every motion and sends nothing;step=Nsends one motion, says what it left armed, and holds the cool-down until the last step. A wipe that presses or crosses the plate asks forplate_clearon every call: a person's word, never inferred. Where a model's wipe has not yet been run on a real machine, Kiln says so and runs it in steps only
home_axes
The Home button, from Kiln: your model's own homing routine where Kiln has it (served through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it keeps working offline), the firmware's own routine elsewhere, a refusal that names the screen's jog controls where neither is safe
Run it in steps the first time:
plan_onlydescribes every motion before anything moves;step=Nsends one motion and says what it left armed
park_head
Move the head to the model's own spot off the plate and leave it there; never a Z touch, never heat
plate_status
What Kiln knows is on the build plate: the print that left a part there and how long ago, or that it is clear — a person's word (
kiln plate clear, orplate_clearon home and park) or a look through the printer's camera (look_at_plate); nothing marks it clear on its ownHome, park, slicing and starting a print refuse to cross a recorded part, and the refusal shows the plate through the camera where the printer has one, so an old record is checked rather than trusted
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. Orders go through Kiln's hosted service, which keeps provider credentials server-side and enforces your spend limits.
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 ($0.25 min / $200 max per order; a Pro account's first 3 orders each calendar month free; no fee on Business and Enterprise), 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. |
Founding offer: half off for life while founding spots last — Pro $24.50/mo or $234/yr, Business $99.50/mo or $954/yr. Students get half off for 12 months. Details and how to claim the student price: kiln3d.com/pricing.
Full comparison at kiln3d.com/pricing. Already subscribed? Run kiln signin to put this machine on your plan. 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)
A person says go before every print — in your AI app's approval dialog, by typing a code Kiln shows on your screen, or at the terminal — unless you chose not to be asked: for a while (a day at most), always on a printer you named yourself (at your own terminal, or on your Kiln account page with two-factor), or by switching on auto-print yourself; stopping, pausing and watching a print never need that yes
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 |
| 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 |
| Per-printer safety limits (temps, feedrates, flow) for every supported model, served per printer from Kiln's catalogue, over a bundled generic floor for any other machine |
| Bundled slicer profiles (auto-generates .ini files per printer) |
| Printer roster and spec sheets: each machine's limits, per-material temperatures and motion facts, with the spec sheet served per printer from Kiln's catalogue (curated quirks, calibration recipes and failure modes are in Kiln Pro) |
| 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) |
| 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 246 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.
Trademarks
OctoPrint is a registered trademark. Other product and company names are trademarks of their respective owners; Kiln is not affiliated with or endorsed by them.
Available Tools
851 toolsabrasive_escalationC
Pro+ — escalates the abrasive-filament warning by nozzle.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=abrasive_escalation
| 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 the full behavioral burden and largely fails. The one genuinely useful disclosure is "Requires Kiln Pro", a prerequisite, but it says nothing about side effects, reversibility, permissions, or whether this mutates printer state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first line relates to the tool's function; the remaining three lines are tier advertising and an upgrade URL. This is padded, not concise, and the promotional content crowds out actionable 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?
For a 2-required-parameter tool with no annotations and no output schema, an agent needs parameter meaning and behavioral context, neither of which is present. The tier requirement is the sole complete piece of contextual 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?
Schema description coverage is 0% for two required parameters (material, printer_id), so the description must compensate and does not. The parameter names are fairly self-explanatory, which keeps this above a 1, but no formats, accepted values, or ID conventions are 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?
The opening line "escalates the abrasive-filament warning by nozzle" names an action and resource, but "escalate" is semantically ambiguous — it is unclear whether this raises a severity flag, notifies someone, or blocks a print. The bulk of the description is plan-tier marketing rather than purpose, and nothing distinguishes it from siblings like nozzle_wear_status or get_material_warnings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no preconditions for the operation, and no routing to alternatives among the many nozzle/wear siblings. The Free/Pro+ tier sentences describe plan entitlements, not invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acquire_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 | Default: "agent". | |
| printer_name | Yes | ||
| timeout_seconds | No | Default: 30.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses exclusivity and that timeout_seconds is a maximum wait, but does not state what happens on timeout, how long the lock persists, whether it is reentrant, or what release behavior is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence, followed by a brief rationale and compact Args list. Every sentence is relevant and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful, concurrency-sensitive tool with no annotations and no output schema, the description is only partially complete. It should explain lock failure/lifecycle behavior and explicitly point to release_printer_lock or similar cleanup.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, with printer_name undocumented in the schema; the description compensates by explaining that it is the printer to lock and clarifies holder and timeout_seconds semantics. It still lacks format details for printer_name and holder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Acquire an exclusive lock on a printer." The scope and concurrency purpose are clear and distinguish it from the complementary release_printer_lock sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the usage context: safe concurrent access and preventing multiple agents from controlling the same printer simultaneously. It does not explicitly say when not to use it or name release_printer_lock as the required follow-up.
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 | Default: "clearance_fit". | |
| clearance_mm | No | Default: 0.2. | |
| assembly_json | Yes | ||
| magnet_polarity_aligned | 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 usefully explains that negative clearance is required for interference_fit and that unknown magnet polarity blocks downstream shipping instructions, but it does not describe mutation side effects, required permissions, idempotency, or what the call returns.
Agents need to know what a tool does to the world before calling 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 and front-loaded: purpose first, then a well-organized Args section. It is somewhat verbose and includes informal phrasing, but nearly every sentence adds practical information for correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the parameter semantics are strong, but the description omits return behavior and mutation effects. An agent still lacks clarity on whether assembly_json is updated in place, whether the tool returns a new assembly state, and how errors are surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 29%, but the description compensates thoroughly. It documents defaults for joint_type and clearance_mm, explains the non-obvious negative-value rule for interference fits, clarifies when magnet_polarity_aligned is meaningful, and lists supported fastener keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: add a mating interface between two parts in an assembly, including joint type and clearance. It is clearly distinct from generic part-addition siblings, but it does not explicitly name alternatives such as add_pin_joints or get_joint_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?
It explains that the interface is used during validation and clearance checking and that fastener data helps downstream manuals and BOM tools. However, it does not state when to use this tool versus sibling tools like add_pin_joints, recommend_joint_strategy, or add_assembly_part, nor does it give exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_assembly_partB
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 | Default: "structural". | |
| part_id | Yes | ||
| material | No | Default: "PLA". | |
| file_path | Yes | ||
| position_x | No | Default: 0.0. | |
| position_y | No | Default: 0.0. | |
| position_z | No | Default: 0.0. | |
| assembly_json | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool parses assembly JSON, appends the part, and returns the updated assembly state, but it does not cover permissions, validation failures, duplicate part_id behavior, or whether the operation writes to disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main operation is front-loaded in the first sentence, followed by a compact behavioral summary. The Args block is slightly repetitive but earns its place by documenting parameter meaning and defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition covers the core input semantics and notes that updated assembly state is returned. It remains incomplete on error behavior, validation rules, and the shape of the returned state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 63%, but the description compensates by explaining all eight parameters, including units for positions, default values, accepted mesh file types, the source of assembly_json, and that part_id must be unique within the assembly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource: 'Add a part to an existing assembly.' The phrase 'existing assembly' distinguishes it from create_assembly, but it does not explicitly differentiate it from siblings like add_assembly_interface or compose_assembly_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?
It implies that the tool is for adding a part to an existing assembly, but it gives no explicit when-to-use guidance, prerequisites, or alternatives. It never says when to choose this over create_assembly or other assembly-composition tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_feature_during_printC
Slice a new mesh at pause_z and resume printing it (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_feature_during_print
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| orient | No | Default: "auto". | |
| feature | Yes | ||
| bed_temp | No | Default: 65. | |
| placement | No | ||
| gcode_path | Yes | ||
| output_dir | No | Default: "". | |
| pause_z_mm | No | ||
| hotend_temp | No | Default: 220. | |
| printer_name | No | Default: "default". | |
| current_layer | Yes | ||
| filament_type | No | Default: "PLA". | |
| printer_z_known | No | Default: false. | |
| source_3mf_path | No | Default: "". | |
| target_ams_slot | No | Default: -1. | |
| parent_design_id | No | Default: "". | |
| printer_bed_size | No | ||
| require_ams_match | No | Default: true. | |
| slicer_config_ini | No | Default: "". | |
| target_filament_type | No | Default: "". | |
| first_layer_height_mm | No | Default: 0.2. | |
| target_filament_color | No | Default: "". | |
| manual_material_change_confirmed | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that a UI stage opens and that oversized meshes are decimated, but for a tool that alters G-code mid-print it says nothing about whether the printer is commanded, whether output writes to disk (output_dir), whether the original file is preserved, or what happens on failure. The marketing sentence about Free-vs-Pro features adds no behavioral 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 useful content (one sentence of purpose) is buried under a subscription upsell with a pricing URL and a duplicated INLINE 3D STAGE section that repeats what the first paragraph already said about the stage and browser link. Roughly half the text earns no place in a tool definition and dilutes the front-loaded signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 22-parameter, no-annotation, no-output-schema tool that mutates a live print, the description leaves far too much unsaid: no return value description, no error or failure behavior, no explanation of the AMS/filament matching parameters, and no statement of what the print does while the slice runs. It is complete only about licensing and the UI stage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Twenty-two parameters with only 73% schema coverage, and most of that coverage is placeholder text like 'Default: 65.' or 'Default: ""'. Required parameters feature, gcode_path, current_layer, plus placement, printer_bed_size, source_3mf_path, target_ams_slot and require_ams_match are undocumented in both schema and description. The description mentions 'pause_z' but not that this maps to the optional pause_z_mm parameter, and adds no field semantics anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific action and target: slice a new mesh at a Z pause and resume the print. It does not distinguish it from the closely named sibling add_feature_during_print_fleet, nor from decorate_during_print or deboss_during_print, so an agent must infer which mid-print mutation applies. The parenthetical '(Pro)' is the only disambiguating signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only stated precondition is licensing ('Requires Kiln Pro'), which does function as a usage gate but is a commercial one, not a task one. Nothing says when to choose this over the fleet variant or over splice_mesh_at_z, and nothing states the obvious prerequisite that a print must already be in progress and paused. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_feature_during_print_fleetB
Add the same feature (e.g. a hat) to N paused printers (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_feature_during_print_fleet
| Name | Required | Description | Default |
|---|---|---|---|
| orient | No | Default: "auto". | |
| feature | Yes | ||
| bed_temp | No | Default: 65. | |
| printers | Yes | ||
| hotend_temp | No | Default: 220. | |
| filament_type | No | Default: "PLA". | |
| parent_design_id | No | Default: "". | |
| first_layer_height_mm | No | Default: 0.2. |
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 Business tier requirement and the important precondition that printers are paused, but it omits mutation side effects, reversibility, per-printer failure behavior, and what happens after the feature is 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 key operation and scope are front-loaded in the first sentence. The remaining lines are short, though the pricing/upgrade line is somewhat promotional rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a multi-printer mutation with no annotations and no output schema. The description gives tier and state preconditions, but it lacks enough detail about effects, failure handling, and results for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema already documents most parameters. The description adds limited semantic value by clarifying that the feature is shared across printers and that printers are paused, but it does not explain the optional 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?
States a specific verb and resource: adding the same feature to N paused printers, with a concrete example. The fleet scope distinguishes it from single-printer siblings, though it does not explicitly name add_feature_during_print as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 useful prerequisites: Business+ and paused printers. However, it does not explicitly say when to choose this over add_feature_during_print or decorate_during_print_fleet, nor does it describe 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.
add_interception_ruleB
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 | Default: "". | |
| pattern | No | ||
| trigger | Yes | ||
| priority | No | Default: "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 at all, the description must carry the full burden. It discloses the rule model (trigger/action/priority/message semantics) but not whether rule creation affects an in-flight print, whether rules persist across sessions, whether validation errors are returned, or that it is a mutating operation. Useful but incomplete for an unannotated 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 one-line purpose is front-loaded, and the argument list is dense with no filler. It retains raw docstring 'Args:' formatting, which is functional but less scannable than prose or a table.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. However, for an 11-parameter rule-creation tool with no annotations, the description leaves out prerequisites (interception active, session validity) and the blast radius of a rule that can block or pause printing.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 18% and zero parameters carry enums, so the description carries the load: it enumerates the valid trigger types, action types and priority levels, and ties conditional params to their triggers (blocked_commands for command_blocked, pattern for pattern_match, threshold_max for range triggers). It omits required-vs-optional marking and the interaction between threshold and threshold_max.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb and resource: 'Add a custom interception rule to an active session.' That clearly separates it from remove_interception_rule or list_interception_sessions. It stops short of naming the related lifecycle siblings (start_gcode_interception, load_safety_interception_rules) that an agent must consider first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only contextual clue is the phrase 'active session', implying a session must exist, but there is no statement about whether gcode interception must be running, whether this is safe mid-print, or when to prefer load_safety_interception_rules. No when-not conditions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mesh_chamferA
Bevel a part's edges, exactly, on its CAD file.
The flat-faced twin of ``add_mesh_fillet``: same CAD route, same
edge selection, same reply.
Literal: it bevels the edges you select at the distance you give
(measured along each face from the edge). An edge on a narrow
face gets a smaller bevel or stays sharp, a hole's rim stays sharp
unless selected, and ``edges.left_sharp`` gives every reason.
A mesh with no CAD file behind it is refused, and a part made
from an OpenSCAD script is bevelled in its script; each refusal
says which.
AGENT DISPLAY CONTRACT: a result carries a before|after self-check
of the part. Look at it and write what changed before calling
the job done.
:param file_path: The part: a STEP file, or a mesh converted from one.
:param distance_mm: Bevel distance from the edge in mm (default 0.5).
:param angle_threshold_deg: An edge is sharp when the surface
turns at least this much across it (default 60).
:param output_path: Output ``.stl`` path (defaults to
``<name>_chamfered.stl``); the CAD is written beside it.
:param edges: Which edges; see ``add_mesh_fillet``.
:param printer_id: The printer the part is for.
:param nozzle_mm: The nozzle size, when it differs from the one
Kiln has for the printer.
:param layer_height_mm: The layer height it will print at.
:param material: The material it will print in.
:param plan_only: Return the plan and every edge's id without
building anything.
:returns: ``path``, ``step_path``, ``edges`` (finished, left
sharp, cautions), ``sized_for``, ``volume_mm3`` and the
measurements before and after; or a refusal saying why.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| edges | No | Default: "". | |
| material | No | Default: "". | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| plan_only | No | Default: false. | |
| printer_id | No | Default: "". | |
| distance_mm | No | Default: 0.5. | |
| output_path | No | Default: "". | |
| layer_height_mm | No | ||
| angle_threshold_deg | No | Default: 60.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the whole burden and does so well: it discloses that output is written to an .stl with the CAD beside it, that refusals explain why, that plan_only builds nothing, and that an inline 3D stage opens with automatic decimation for oversized meshes. The remaining gap is that it never states whether the source file is left untouched versus overwritten, though the defaults imply new 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?
Front-loaded with the core action, then edge-case semantics, then the display contract, then params and returns — a sensible ordering. Some sentences repeat themselves ('same CAD route, same edge selection, same reply' and the later restatement of literal bevel behavior) and could be tightened without losing 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 10-parameter mutation tool with no annotations and no output schema, the description covers the gap: it enumerates the return keys (path, step_path, edges with finished/left-sharp/cautions, sized_for, volume_mm3, before/after measurements), describes refusals, and sets the agent-display expectation. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 70%, and the description adds real meaning beyond it: distance_mm is measured along each face from the edge, angle_threshold_deg defines when an edge counts as sharp, edges defers to add_mesh_fillet for selection syntax, and plan_only is explained behaviorally rather than just as a boolean. Empty-defaulted string params like material and printer_id get only one-line glosses, which is the main shortfall.
Input schemas describe structure but not intent. Descriptions should explain 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+scope: bevel a part's edges, exactly, on its CAD file. It then distinguishes itself from its nearest sibling by naming add_mesh_fillet and characterizing the difference (flat-faced twin, same CAD route and edge selection). An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'flat-faced twin of add_mesh_fillet' framing plus the plan_only flag gives clear conditions for use and for dry-running first. Refusal cases (no CAD file behind the mesh, OpenSCAD-script parts) route the agent elsewhere. It stops short of an explicit 'use chamfer when X, fillet when Y' rule, so it is clear context rather than full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_mesh_commentC
Add a region-anchored comment to a versioned artifact.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_mesh_comment
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| scope | No | Default: "comment". | |
| anchor | No | Default: "global". | |
| author | No | ||
| artifact_type | Yes | ||
| artifact_version_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 it discloses only one behavioral fact: a Kiln Pro entitlement requirement, stated vaguely enough ("Everything in Free, plus...") to be ambiguous about whether this tool is gated. It says nothing about mutation effects, whether the comment is append-only, whether the target version must be locked or in a particular state, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is one sentence; the remaining three lines are subscription upsell copy with a marketing URL that does not help an agent invoke the tool. The front-loading is good but roughly three-quarters of the text is 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?
A six-parameter mutation tool with no annotations and no output schema needs the description to explain parameter intent, entitlement gating and success behavior. Almost all of that is missing, and the paywall text is too imprecise to tell an agent whether the call will be rejected on a free tier.
Complex tools with many parameters or behaviors need more documentation. Simple 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 33% and only schema defaults for scope and anchor are documented; body, author, artifact_type and artifact_version_id have no descriptions anywhere. The description nods at two of these ("region-anchored" hints at anchor, "versioned artifact" hints at artifact_version_id) but adds no format, valid value, or default semantics to compensate for the 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 opening sentence gives a specific verb and resource ("Add a region-anchored comment to a versioned artifact"), which is materially clearer than the bare tool name. However, it never distinguishes itself from the nearby comment siblings (list_mesh_comments, reply_to_comment, resolve_comment_thread, get_comment_thread), so an agent cannot tell from the text which of these to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus reply_to_comment or resolve_comment_thread, and no prerequisites such as needing an existing artifact version or thread. The only conditional language present is a paywall notice, which is not invocation 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
Round a part's edges, exactly, on its CAD file.
Pass the part's STEP file (or a mesh Kiln converted from one that
still sits beside it). The CAD kernel rebuilds each face, so the
result is a closed solid of the size geometry gives; it comes back
as a mesh (``path``) and as CAD beside it (``step_path``), so the
next edit starts from CAD again.
Literal: it rounds the edges you select at the radius you give.
Two things can change that, and the reply says so each time:
* an edge on a narrow face gets a smaller radius (the face keeps
one nozzle width of flat), or stays sharp when what is left
would not show in a print;
* a hole's rim stays sharp unless you select it.
``edges.left_sharp`` lists every selected edge left sharp, with
its reason. ``edges.cautions`` says what will print badly as
asked: a finish on the bed or facing down whose surface overhangs
past what the printer bridges, and by how much.
A mesh with no CAD file behind it is refused: rounding on a mesh
left an open surface and a bigger part on every part measured. A
part made from an OpenSCAD script is rounded in its script; the
refusal names it.
AGENT DISPLAY CONTRACT: a result carries a before|after self-check
of the part. Look at it and write what changed before calling
the job done.
:param file_path: The part: a STEP file, or a mesh converted from one.
:param radius_mm: Fillet radius in mm (default 1.0).
:param angle_threshold_deg: An edge is sharp when the surface
turns at least this much across it (default 60).
:param output_path: Output ``.stl`` path (defaults to
``<name>_filleted.stl``); the CAD is written beside it.
:param edges: Which edges. Empty or ``all``: every sharp edge.
Words narrow it -- where the edge sits as the part prints
(``vertical``, ``top``, ``bottom``, ``under``, ``sloped``) and
which way the corner goes (``outside``, ``inside``);
``holes`` selects hole rims. Combine with commas:
``top,outside``. Or name edges by id: ``e12,e15`` (ids come
from ``plan_only``).
:param printer_id: The printer the part is for; sizes are limited
by its nozzle and layer height.
:param nozzle_mm: The nozzle size, when it differs from the one
Kiln has for the printer.
:param layer_height_mm: The layer height it will print at.
:param material: The material it will print in.
:param plan_only: Return the plan and every edge's id without
building anything.
:returns: ``path``, ``step_path``, ``edges`` (finished, left
sharp, cautions), ``sized_for``, ``volume_mm3`` and the
measurements before and after; or a refusal saying why.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| edges | No | Default: "". | |
| material | No | Default: "". | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| plan_only | No | Default: false. | |
| radius_mm | No | Default: 1.0. | |
| printer_id | No | Default: "". | |
| output_path | No | Default: "". | |
| layer_height_mm | No | ||
| angle_threshold_deg | No | Default: 60.0. |
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: it discloses silent radius reduction on narrow faces, sharp-hole-rim defaults, a refusal for CAD-less meshes (with the reason), OpenSCAD-script refusal, the `left_sharp`/`cautions` reply fields, and automatic stage decimation. It also states a display contract telling the agent to read the before|after self-check before declaring the job done.
Agents need to know what a tool does to the 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 exceptions, then parameters — a sensible order, and every paragraph carries information. It is long and occasionally convoluted ('an open surface and a bigger part on every part measured'), and the capitalization-heavy AGENT DISPLAY CONTRACT / INLINE 3D STAGE blocks add visual weight without much new semantic 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?
Ten parameters, no annotations, and no output schema — yet the description covers the return shape (`path`, `step_path`, `edges`, `sized_for`, `volume_mm3`, before/after measurements), the failure mode, and the post-call verification obligation. Nothing material for a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 70% and the schema descriptions are mostly bare defaults, so the prose is doing real work: it defines how `edges` is expressed (positional words, inside/outside, `holes`, or ids from `plan_only`), explains what `angle_threshold_deg` measures, and clarifies `output_path` writes the CAD alongside. It stops short of units/format constraints for a few parameters like `material` and `printer_id`.
Input schemas describe structure but not intent. Descriptions should explain 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+scope: 'Round a part's edges, exactly, on its CAD file.' It also names the output artifacts (mesh `path` and CAD `step_path`), which pins down what the tool actually produces versus a pure mesh 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?
Gives concrete entry conditions: pass a STEP file or a Kiln-converted mesh that still sits beside it, and use `plan_only` to get edge ids before building. It doesn't explicitly contrast with the sibling `add_mesh_chamfer` or say when a chamfer is preferable, so routing to the right edge treatment is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pin_jointsC
Give two touching parts a REAL pin-and-socket joint. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_pin_joints
INLINE 3D STAGE: on success this tool 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 | No | Default: 1.0. | |
| material | No | Default: "PLA". | |
| design_id | No | Default: "". | |
| output_dir | No | Default: "". | |
| part_a_path | Yes | ||
| part_b_path | Yes | ||
| clearance_mm | No | Default: 0.2. | |
| pin_diameter_mm | No | Default: 0.0. | |
| application_class | No | Default: "consumer_product". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavior: the tool opens an interactive 3D stage on success, attaches a browser stage link in some hosts, and auto-decimates oversized meshes for the stage. The tier note ('Requires Kiln Pro') hints at an authorization gate. What is missing is equally important for a geometry mutation tool: whether input meshes are modified in place or new files are written, and what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded, but the definition is then padded with a pricing pitch and upgrade URL that carry no tool-selection value. The inline-stage behavior is stated twice — once in the lead sentence and again in a dedicated all-caps paragraph — so the description spends its length on repetition and marketing rather than on the nine 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?
There is no output schema and no annotations, so the description must cover both semantics and return behavior. It does partially cover results by describing the interactive stage and the PNG preview fallback, which is helpful. It remains incomplete for a nine-parameter mutation tool: nothing about output file locations, whether existing geometry is altered, 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?
Schema description coverage is 78% across nine parameters, so the schema already documents defaults for scale, material, clearance_mm, pin_diameter_mm, application_class, design_id, and output_dir. The description adds no parameter-level meaning at all — notably nothing about how clearance_mm interacts with pin_diameter_mm or what application_class controls, which is exactly the kind of guidance a pin-joint tool needs. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a concrete verb and resource: give two touching parts a pin-and-socket joint. That is far more specific than the name alone, and the requirement that parts be touching is a useful scoping fact. It does not, however, distinguish this from adjacent siblings such as get_joint_recommendation, recommend_joint_strategy, or add_assembly_interface, so an agent must infer when to create joints versus request a 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 only usage condition offered is 'two touching parts,' which is a geometric precondition rather than guidance on when to select this tool. There is no mention of when not to use it, no named alternative from the many joint/assembly siblings, and no prerequisite steps such as having both parts loaded or validated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_qr_to_productC
Add a scannable QR code to any product STL (Business). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Kiln Business would generate the QR geometry, pocket it into the product, and keep it scannable at print size. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_qr_to_product
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size_mm | No | Default: 0. | |
| nozzle_mm | No | ||
| placement | No | Default: "bottom". | |
| qr_content | Yes | ||
| product_type | No | Default: "". | |
| pad_height_mm | No | Default: 0.5. | |
| product_stl_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the entitlement gate and that an interactive 3D stage opens (with automatic decimation for oversized meshes), which is useful, but it never states whether the source STL is modified in place or a new artifact is produced, nor what the output looks like. The core mutation semantics of a write tool are left 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 purpose is reasonably front-loaded, but the entry is bloated by a large all-caps "INLINE 3D STAGE" paragraph, a marketing upgrade URL, and the Business requirement stated twice. The stage behavior is explained redundantly in both the opening and the dedicated section, so several sentences do not earn their 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 7-parameter write tool with no annotations and no output schema, the description is incomplete: it omits parameter meaning, the mutation/destructive profile, and return behavior. The space it does use is spent on promotional content and repeated stage messaging rather than the operational detail an agent needs 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?
Seven parameters with only 57% schema coverage, and the description mentions none of them explicitly. The phrase "scannable at print size" loosely gestures at size/placement/QR content but provides no syntax, defaults, or meaning for product_stl_path, qr_content, placement, nozzle_mm, or pad_height_mm. It fails to compensate 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?
States a specific verb+resource ("Add a scannable QR code to any product STL") and ties it to the Business tier, so the core action is unambiguous. It does not, however, distinguish itself from sibling tools like generate_qr_decoration or the other QR/decorate tools, leaving the agent to infer which QR tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the entitlement prerequisite ("Requires Kiln Business") with an upgrade link, which is real usage context. But it never says when to choose this over the many alternative QR/decoration tools, and the duplicated "Requires Kiln Business" line adds no new guidance.
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. Free at every tier.
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.
For a printer Kiln has no number for, a limit above its generic
floor needs two things. A signed-in install (a free account:
``kiln_signin``), because Kiln vouches for ceilings it enforces
and a ceiling nobody set is held to the floor. And a PERSON's
confirmation: Kiln shows a code on the screen of the machine it
runs on, the person types it in the chat, you pass it to
``give_print_code``, then call this again with the same numbers. Find the numbers on the maker's own spec
page (maximum hotend and bed temperature, bed size) and say where
they came from in ``notes``; never guess them, and never ask the
person to type numbers they do not know. The code is the
confirmation; nothing you can call stands in for it.
A Klipper printer that is set up here can state them itself.
Leave ``profile`` out and Kiln reads the heater ceilings, travel
and velocity limit off the printer's own configuration (through
Moonraker), puts them in front of the person as ``proposal`` with
the configuration lines they came from, and takes the same code.
The saved limits are labelled as read from that printer. The
hotend and bed numbers are the board's shutdown points, and a
hotend proposal above Kiln's generic floor carries a
``caution`` about PTFE-lined hotends: say it to the person
before they confirm. A printer that cannot state them (any
other backend) says so and asks for ``profile``; a
configuration that states only some of them hands those back
in ``proposal`` for you to complete.
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``. Omit it to read the
limits off the printer.
printer_name: Which registered printer to read the limits
off when ``profile`` is omitted; the default printer
when empty. Ignored when ``profile`` is given.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | ||
| printer_name | No | 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 and does so thoroughly: it discloses local-only storage, no upload/sharing, tightening-only semantics, owner-supplied labeling, signed-in and human-confirmation requirements, and Klipper/Moonraker proposal behavior. These are behavioral details beyond what any structured field 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 definition is front-loaded and well organized around the primary action, wrong-tool alternative, confirmation flow, and Klipper proposal path. It is long, but the length is mostly justified by the complexity of the safety override and human-confirmation 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?
Despite no output schema and no annotations, the description gives enough context for correct invocation, including prerequisites, the code-confirmation loop, local persistence behavior, proposal/caution concepts, and fallback behavior. Nothing essential for an agent to call this safely appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low at 33%, but the description compensates by documenting `printer_model` as a short identifier, `profile` as a dict with required and optional fields, and `printer_name` as only relevant when `profile` is omitted. It adds substantial meaning 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 first sentence gives a specific verb and resource: adding a local safety-profile override for a printer model. It also distinguishes the tool from nearby alternatives by naming `select_printer_variant` for upgraded-hotend cases and explaining when `profile` is omitted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 it is the wrong tool, and which sibling to use instead. It also documents prerequisites for unknown printers, including sign-in and the person-confirmation code flow through `give_print_code`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_spoolA
Add a filament spool to inventory, or correct how much is left on one.
To ADD a spool, give its ``material``. ``remaining_grams`` is what is
left on a spool that is not new; left out, the spool is full.
To CORRECT a spool already on record, pass its ``spool_id`` (from
``list_spools``) with ``remaining_grams``: the person says they have
more left than Kiln shows, or less. Only the amount changes. Kiln
counts a spool down as the prints it starts use it, and a count drifts,
so the person's word wins. ``remaining_grams=0`` records the spool as
used up and keeps it on the list; ``remove_spool`` takes it off.
Args:
material: Material type (PLA, PETG, ABS, etc.). Required to add.
color: Filament color.
brand: Manufacturer brand.
weight_grams: Total spool weight in grams (default 1000).
cost_usd: Cost of the spool in USD.
remaining_grams: Grams left on the spool.
spool_id: A spool already on record whose remaining amount to set.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | ||
| color | No | ||
| cost_usd | No | ||
| material | No | ||
| spool_id | No | ||
| weight_grams | No | Default: 1000.0. | |
| remaining_grams | 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 states that a correction changes only the amount, that Kiln's automatic count-down can drift and the person's word wins, and that the spool is retained at zero grams. It stops short of stating error behavior (unknown spool_id, duplicate adds) 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?
Front-loads the add-vs-correct split before the Args block, which is the right order. The Args section partly restates schema titles, but it adds real meaning (defaults, mode-required fields, examples) rather than pure duplication; total length is justified for a dual-mode 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?
Seven parameters, no annotations, no output schema — the description covers both modes and every parameter, which is the core need. It never says what comes back (e.g., the new spool_id), which matters for a create operation that an agent may need to reference later.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 14% (just the weight_grams default), so the description must compensate and does: it defines all seven parameters in an Args block, marks material as required for adding, marks spool_id as the correct-mode key, and supplies material examples (PLA, PETG, ABS) that the schema's bare string type 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?
Opens with a specific verb+resource ('Add a filament spool to inventory') and immediately names the second capability ('correct how much is left on one'). The two modes are separated into labeled paragraphs, so an agent can tell exactly which operation it is invoking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional routing: pass material to ADD, pass spool_id (from list_spools) with remaining_grams to CORRECT. It also names the boundary case that would otherwise confuse an agent — remaining_grams=0 keeps the spool on the list while remove_spool takes it off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_team_memberC
Add tenant_id to team_id.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=add_team_member
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Default: "member". | |
| team_id | Yes | ||
| added_by | No | ||
| tenant_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does contribute one genuinely useful behavior: the organisation owner must be on Kiln Business, not the caller. Beyond that gating fact it is silent — no idempotency on re-adding, whether the invitee is notified, required caller permissions, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative sentence is front-loaded and tight, but everything after it is promotional copy ("the whole shop works from one library") and a bare upgrade URL. Those sentences do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no annotations, no output schema, and 25% parameter coverage needs the description to explain prerequisites, effects, and failure modes. It covers only the plan gate, leaving success behavior, duplicate handling, and role semantics entirely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (just a default for role). The description hints that tenant_id is the added party and team_id the destination, but role and added_by are undocumented in both places, and there is no format guidance or explanation of what values tenant_id accepts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add *tenant_id* to *team_id*" supplies a verb and a target, but it describes the operation in raw parameter names rather than saying what a tenant actually is (a user, an org, a service account) or what membership grants. It also fails to distinguish itself from the adjacent manage_team_member and remove_team_member 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?
There is no explicit when-to-use statement and no mention of the alternative tools (manage_team_member for role changes, list_team_members to check existing membership). The closest thing to guidance is a plan-entitlement note, which is a prerequisite rather than a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
advise_kit_scaleC
Find the largest scale at which EVERY part of a kit prints.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_x_mm | No | Default: 256.0. | |
| bed_y_mm | No | Default: 256.0. | |
| bed_z_mm | No | Default: 256.0. | |
| nozzle_mm | No | ||
| part_paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It reveals the core optimization objective but not whether the tool is read-only, what it returns, how failure/no-feasible-scale cases are handled, or whether it 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?
It is a single front-loaded sentence with zero filler, and the 'EVERY part' constraint is emphasized efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nontrivial five-parameter advisory computation with no annotations and no output schema, the description is too sparse. It omits return value details, feasibility semantics, parameter expectations, and any indication of what the agent should do with 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 description provides no parameter-level detail, and schema coverage is only 60%. The part_paths and nozzle_mm parameters are undocumented, and the description does not explain units, path format, or how bed and nozzle dimensions affect the result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find the largest scale for an entire kit. The 'EVERY part of a kit' scope distinguishes it from individual-part scaling tools, though it does not explicitly name sibling 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?
It implies this is for scaling multi-part kits, but gives no explicit when-to-use guidance, prerequisites, or alternatives such as scale_mesh_to_fit or verify_mesh_fit. An agent must infer the use case from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ams_filament_dryingA
Start or stop an AMS 2 Pro / AMS HT active dry cycle.
Bambu printers with an AMS 2 Pro or AMS HT dry filament in place.
This controls that dryer.
To START (``mode=1``): set ``temp_c`` (drying temperature),
``duration_min`` (> 0), and ``cooling_temp_c`` -- which must be
>= 45, or the printer silently ignores the command. A start is
checked against the unit's own ceiling (AMS 2 Pro 65 C, AMS HT 85 C)
before it is sent; when Kiln cannot run that check, nothing is sent and
the answer says why. To STOP (``mode=0``): only ``ams_id`` is needed,
and a stop is always sent.
Only Bambu printers with an AMS 2 Pro / AMS HT support this; other
printers and plain AMS / AMS Lite units return an error.
:param ams_id: AMS unit index (0-based).
:param mode: 1 to start drying, 0 to stop.
:param duration_min: Dry-cycle length in minutes (> 0 to start).
:param temp_c: Drying temperature in C (required to start; capped
at the unit's max -- AMS 2 Pro 65 C, AMS HT 85 C).
:param cooling_temp_c: Cooldown temperature in C (>= 45 to start).
:param humidity: Optional target humidity.
:param rotate_tray: Optional tray-rotation flag.
:param printer_name: Target printer. Omit for the default printer.
:returns: Dict with the dispatched command and a status message.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| ams_id | Yes | ||
| temp_c | No | ||
| humidity | No | ||
| rotate_tray | No | ||
| duration_min | No | Default: 0. | |
| printer_name | No | ||
| cooling_temp_c | 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: it discloses silent-failure semantics (values below 45 are silently ignored by the printer), pre-flight ceiling validation (65 C / 85 C) and that nothing is sent when the check cannot run, that stops are always sent, and the return shape. These are non-obvious behaviors an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the hardware scope, then the start/stop split, then per-parameter notes. Well organized, though the START/STOP paragraph is dense and the ceiling-limit fact is repeated in both the prose and the temp_c note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no annotations and no output schema, the description covers applicability, required-vs-optional inputs, validation rules, failure modes, and return value. Nothing an agent needs to invoke it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 13% (just duration_min), so the description must compensate, and it documents all eight parameters in prose — including the crucial numeric encoding of mode (1/0), the 0-based ams_id, per-unit temperature ceilings, and the humidity/rotate_tray hints. The two optional flags (humidity, rotate_tray) are described only vaguely ('Optional target humidity', 'Optional tray-rotation flag'), leaving their valid ranges and effects unstated.
Input schemas describe structure but not intent. Descriptions should explain 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 pair (start/stop) and a specific resource (AMS 2 Pro / AMS HT active dry cycle), scoped to Bambu printers that own one of those units. This separates it cleanly from advisory siblings like drying_advisor and from status readers like ams_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?
Gives explicit when-to-use branching: mode=1 start requires temp_c, duration_min > 0, and cooling_temp_c >= 45; mode=0 stop needs only ams_id. It also states when the tool is not applicable ('other printers and plain AMS / AMS Lite units return an error'), which is exactly the exclusion guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
Each tray carries its unit's own ``slot`` (0-3), the printer's
``tray_id`` for it (``unit * 4 + slot`` on a chained unit, the unit id
itself on an AMS HT) and Studio's ``name`` (``A1``…``D4``, ``HT-A``);
each unit carries its ``name`` (``A``, ``HT-B``). ``feeding`` is the
tray feeding the nozzle -- ``{tray_id, unit, slot, name, source}``, or
``None`` when nothing feeds -- and ``feeding_source`` says which field
of the printer's report it came from. The raw ``tray_now`` is kept as
sent: ``"254"`` is the external spool,
``"255"`` no tray. 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()``.
This dump carries no fault line of its own. To follow a print, poll
``printer_status(detail="lite")``: it reports the run state and every
fault code under ``faults``. A fault the printer stops for on a
watched print also rides this and every other tool result as
``printer_fault`` while it stands.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so: it explains field-level semantics (unit vs tray_id vs name, feeding/feeding_source), edge cases (tray_now '254'/'255', A1/AMS Lite reporting), and bitmask meaning. It also discloses that this dump has no fault line and that faults surface via printer_status or the printer_fault field on other results — non-obvious cross-tool 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?
Front-loaded with purpose, then differentiation, then use cases, then payload semantics, then fault caveat — a sensible ordering. It is long and dense, but with no output schema the field documentation is load-bearing rather than filler; a small amount of repetition around tray naming keeps it just short of 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?
With no output schema and no annotations, the description must explain both the return payload and the safety/behavioral profile, and it does: return fields, edge cases, and fault-reporting behavior are all covered, plus where to look to monitor a print instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description instead invests its detail in return-value semantics, which is appropriate given the empty 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?
Opens with a specific verb+resource+scope: 'Full AMS hardware dump — all trays, humidity, RFID (Bambu Lab only).' It also explicitly names the two nearest siblings (get_active_material, get_material) and states how this tool differs, so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives both routing rule ('For just the currently-active material, use get_active_material instead. For Kiln's software material tracker, use get_material.') and positive use cases ('check filament levels before printing, verify the correct material is loaded, or select the right ams_mapping for start_print()'). When-to-use, when-not, and alternatives are all explicit.
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?
With no annotations, the description carries the behavioral burden and does disclose the return contents and the internal relationship with design_session. It does not state whether the lookup is read-only/side-effect free, deterministic, or subject to rate limits, leaving a minor gap for a tool agents might call repeatedly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then context, then examples, then Args — a readable structure. It is somewhat long, and the seven-item example list plus the multi-clause design_session explanation carry mild redundancy, but every section serves the router/analysis decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 exist, so the description must explain returns, which it does by enumerating the five output categories. The Args block plus examples cover both inputs. Only the absence of safety/permission context keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document the parameters itself, and it does: requirements is explained as natural-language functional needs/environment/loads with seven concrete example strings, and material is documented as an optional override (e.g. "petg") with default-recommendation 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?
States a specific verb+resource ('Analyze a functional requirement and return technical recommendations') and then enumerates the exact output categories: material recommendations, design patterns, dimensional constraints, print orientation rules, and expert guidance notes. It explicitly differentiates itself from sibling tools like design_session and the user-facing flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it versus the alternative: it is 'the internal-lookup tool' and a 'pre-design analysis pass, not the user-facing entry point,' directing agents to design_session(verb="start") for the user-facing goal-capture flow. Both the when and the when-not are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_frame_bracingC
Where the diagonals go in a shelf, rack, frame, or lattice.
Kiln Pro would compute the load verdict — factor of safety and derate chain included — and recommend the bracing and joints to carry it. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=analyze_frame_bracing
| Name | Required | Description | Default |
|---|---|---|---|
| cols | No | ||
| mode | No | Default: "auto". | |
| rows | No | ||
| brief | No | ||
| braces | No | ||
| joints | No | ||
| panels | No | ||
| members | No | ||
| brace_kind | No | ||
| bay_width_mm | No | ||
| bay_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 behavioral burden. It mentions the Kiln Pro requirement and that the gated capability would compute a load verdict with factor of safety and derate chain, but it does not confirm actual behavior, side effects, return format, or what happens when Kiln Pro is unavailable.
Agents need to know what a tool does to the world before calling 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 starts with the domain, but it spends substantial space on Kiln Pro promotion and an upgrade URL that do not help an agent invoke the tool. It is not bloated, but some sentences are marketing rather than operational 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 an 11-parameter analysis tool with no output schema and no annotations, the description is far too incomplete. It states a Kiln Pro gate but does not explain inputs, outputs, or usage conditions sufficiently for an agent 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?
There are 11 parameters with only 9% schema description coverage, and the description adds no meaning for cols, rows, braces, joints, panels, members, brace_kind, bay dimensions, brief, or mode. The parameter burden is almost entirely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the domain as diagonals in a shelf, rack, frame, or lattice, but does not use a clear action verb for the tool itself. The sentence about what Kiln Pro 'would compute' is conditional and framed as an upsell, so an agent cannot confidently tell exactly what analyze_frame_bracing does or how it differs from sibling structural-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?
It lists applicable structures (shelf, rack, frame, lattice) and states 'Requires Kiln Pro', which gives a prerequisite. However, it provides no guidance on when to use this tool versus alternatives such as analyze_structural_risks, assess_load_bearing, or recommend_joint_strategy, and no when-not-to-use conditions.
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 | Default: false. | |
| failure_mode | No | ||
| non_manifold | No | Default: false. | |
| original_prompt | Yes | ||
| has_floating_parts | No | Default: false. | |
| max_overhang_angle | No | ||
| min_wall_thickness | 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 does disclose the return shape ('feedback with specific constraints to add to the generation prompt'), which matters since there is no output schema. However, it says nothing about whether the analysis is read-only, whether it is slow or costly, whether it reads local vs cloud files, or what happens on invalid input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-sentence purpose and return statement are front-loaded, followed by an organized Args block. The structure is efficient, though the docstring formatting is slightly verbose for a tool description and the file_path/original_prompt entries add little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter analysis tool with no annotations and no output schema, the description covers the core behavior and every parameter but omits operational details an agent needs: accepted failure_mode values, whether the file is local or remote, expected latency, and what the returned constraints look like structurally.
Complex tools with many parameters or behaviors need more documentation. Simple 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 low (38%), and the description compensates by documenting all eight parameters, adding units ('degrees', 'mm'), examples for failure_mode ('adhesion', 'spaghetti'), and clarifying the conditional nature of the boolean defect flags (has_bridges, non_manifold, has_floating_parts). It still lacks enumeration of valid failure modes or guidance on which optional flags the caller must supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Analyze a generated model') and states the outcome ('get feedback for improvement' with constraints for the generation prompt). This clearly distinguishes it from geometry-only siblings like analyze_model_geometry or diagnose_mesh, but it never explicitly names an alternative tool, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is only implied: the failure_mode parameter hints at post-print analysis ('if the model was printed and failed'), and the return-value sentence implies a fix-then-regenerate loop. There is no explicit statement of when to call this versus improve_generation_prompt or analyze_model_geometry, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_mesh_geometryARead-only
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 ``mesh_check_score`` (0-100), a
quick mesh check. It is not the printability score: call
``analyze_printability`` for that grade.
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, .3mf) 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?
Annotations already declare readOnlyHint=true, so the safety profile is covered, but the description adds rich behavioral context well beyond them: automatic CAD conversion, that every metric is measured on Kiln's mesh copy except an added 'exact' block read from the CAD surfaces, that the two disagree slightly, and that 'exact' should be quoted to users. This is exactly the kind of subtle, non-obvious behavior structured fields cannot carry.
Agents need to know what a tool does to the 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 front-loaded: purpose and metric list come first, then usage, then the CAD caveat, then the param/return notes. Each paragraph earns its place, though the CAD-conversion discussion is somewhat long and slightly interrupts the core usage guidance. No filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns, and it does ('Dict with full mesh analysis metrics, plus exact for CAD input'). For a single-param read-only analysis tool, an agent has everything needed to decide when to call it, what formats are accepted, and what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter and 0% schema description coverage, the description carries the burden and does so: file_path accepts a mesh (.stl, .obj, .glb, .3mf) or a CAD file (.step, .stp) which is converted automatically. It also documents the return shape ('Dict with full mesh analysis metrics, plus exact for CAD input'). Valid formats and conversion semantics add real value beyond the bare string 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?
Names a specific verb (analyze) and resource (mesh geometry) and enumerates exactly what is computed: volume, surface area, center of mass, overhang detection, connected components, degenerate triangles, and mesh_check_score. It explicitly disambiguates itself from analyze_printability ('It is not the printability score') and points to mesh_quality_scorecard, so an agent can distinguish it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the trigger ('Use this after generating a model to understand its geometry and identify printability issues before sending to the slicer'), the exclusion (it is not the printability grade, call analyze_printability for that), and an alternative for fuller reports (mesh_quality_scorecard). Both when-to-use and when-not-to-use are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_mid_print_impactD
Pre-commit truth gate: which layers will actually change (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=analyze_mid_print_impact
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Default: "". | |
| carved_gcode_path | No | Default: "". | |
| engine_output_dir | No | Default: "". | |
| requested_depth_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden and fails: it never says whether the call is read-only or mutates state, whether it writes to engine_output_dir, or what a result looks like. The only real behavioral disclosure is the entitlement requirement 'Requires Kiln Pro', which is useful but far from sufficient for a 4-param tool touching gcode and output directories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful clause is front-loaded, but roughly two-thirds of the text is pricing copy and a marketing link rather than tool semantics. That is wasted space in a definition that needs the room for parameter and behavior disclosure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 four undocumented parameters, no annotations, and no output schema, the description should explain inputs, side effects and results; instead it explains none of them and substitutes a feature-tier pitch. An agent could not reliably invoke this tool from the definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 100%, but every parameter 'description' is a placeholder like 'Default: ""' or 'Default: 0.0.', conveying no semantics. The tool description adds nothing about what session_id, carved_gcode_path, engine_output_dir, or requested_depth_mm mean or how they interact, so an agent cannot resolve them from either 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 phrase 'Pre-commit truth gate: which layers will actually change' gestures at a diff/preview of layer impact, but never states plainly that this analyzes mid-print edit consequences. The remainder of the description is a Pro upsell, and nothing distinguishes it from the many sibling tools about mid-print edits (add_feature_during_print, decorate_during_print, revert_mid_print_fleet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only the word 'Pre-commit' implies timing, suggesting it should be run before committing a mid-print change. There is no explicit when-to-use statement, no prerequisite (e.g., an active print session or a carved gcode), and no naming of alternatives such as revert_mid_print_fleet or generate_recovery_gcode.
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?
With zero annotations, the description carries the full behavioral burden; 'detect' and 'analyzes' imply a read-only operation but this is never stated explicitly. It does disclose one useful behavioral trait — that output regions receive adaptive slicing parameters — plus the model_stats-over-model_path precedence rule, but says nothing about cost, file access requirements, auth, or whether any state is mutated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is front-loaded in the first sentence, with region types and the Args section following in a predictable docstring structure. Every part earns its place given the empty schema, though the em-dash aside and parenthetical could be 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?
For a tool with no annotations, no output schema, and no schema descriptions, the description should say what the analysis returns (e.g., a region map, statistics, or a modified plan). It explains the input side well but leaves the return value and the relationship to the persisted adaptive plan entirely implicit.
Complex tools with many parameters or behaviors need more documentation. Simple 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, and it largely does: model_path is documented as 'Path to an STL or 3MF file' and model_stats is documented as a pre-computed dict from slicer preview or external tools with example keys (height_mm, overhangs, bridges, thin_walls). The precedence rule ('model_stats takes precedence') adds genuine meaning beyond the schema, though the full set of valid keys remains undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Detect geometric regions in a 3D model that affect slicing') and enumerates the region classes it identifies, so an agent knows exactly what analysis it performs. It does not, however, differentiate itself from plausible siblings such as analyze_mesh_geometry, segment_mesh_regions, or analyze_printability, which leaves ambiguity about which analysis call to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description notes regions feed into 'the adaptive plan', hinting the tool precedes generate_adaptive_slicing_plan or quick_adaptive_plan, but it never names an alternative or states when NOT to use it. There is also no mention of prerequisites (e.g., whether a design must be loaded, whether the file must be uploaded first).
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_printabilityARead-only
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).
When the mesh turns out to have holes in it, the result also
carries a ``fastener_advice`` block saying they were measured
but not checked against the hardware meant to go in. Kiln
raises that once per session across every tool that can raise
it, so a later analysis may omit the block even though the
part has holes. Read its ``agent_instruction`` before
repeating any of it to the user.
Args:
file_path: Path to an STL or OBJ mesh file.
nozzle_diameter: Printer nozzle diameter in mm. Leave unset
and name the printer: Kiln then checks for the nozzle on
record for it, else the printer's own setting, else the
model's stock size, and ``report.nozzle`` says which.
With no printer named, the only printer Kiln knows of
stands in; with none, the check assumes 0.4 and says so.
layer_height: Print layer height in mm (default 0.2).
max_overhang_angle: Maximum overhang angle in degrees before
supports are needed. Leave unset for the material's own
limit (45 when none is known) — the value every other
tool that reports this score uses, so the numbers agree.
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 | Default: "pla". | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| layer_height | No | Default: 0.2. | |
| 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?
Annotations already declare readOnly=true and destructive=false; the description adds substantial behavioral context beyond that: free-tier vs Kiln Pro thresholds, which checks depend on material/printer, and the session-level fastener_advice dedup behavior including reading agent_instruction. This is rich, actionable 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 purpose and key guidance are front-loaded, but the description is long and includes a complex fastener_advice paragraph that is useful but verbose. Some scaffolding text could be trimmed without losing 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 9-parameter, no-output-schema tool, the description supplies enough: what is analyzed, what is returned at a high level, which parameters materially affect results, and important session-level dedup caveats. Nothing critical is missing for correct 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 only 33%, so the description carries the burden and does so well: it explains nozzle_diameter fallback logic (printer record → printer setting → stock → nozzle unknown → 0.4), max_overhang_angle defaults and rationale, material default, and printer_id's role. Build volumes are left to the schema but are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 an STL/OBJ mesh for FDM printability, enumerating overhang detection, thin walls, bridging, bed adhesion, and support volume. It also describes the return (score, grade, recommendations). It does not explicitly differentiate itself from nearby siblings like check_print_readiness or validate_print_quality, so a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to pass material and printer_id so warping/thermal/adhesion checks use real filament data (and notes free-tier safe-floor thresholds). It does not explicitly say when to use this tool versus similar readiness/quality tools, but the context for its inputs is well specified.
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_smartB
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.
With kiln-pro installed the answer can also carry
``nozzle_wear_hypothesis``: whether the printer's nozzle wear
likely contributed. That check is Kiln Pro
(https://kiln3d.com/pricing); below it, a failure wear could
explain carries ``nozzle_wear_hypothesis_gated`` saying so once.
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 | Default: 0.0. | |
| printer_name | No | ||
| error_message | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden; it does disclose that classification is heuristic (not deterministic) and explains exactly what the gated nozzle_wear_hypothesis fields mean and when they appear, which is genuinely useful. It does not say whether the tool is read-only/advisory or whether it records anything, nor what the failure classes or recovery plan look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and heuristic basis are front-loaded and waste-free, but the middle paragraph spends four sentences on the Kiln Pro upsell and the exact gated field names, which is disproportionate for a 4-parameter, zero-required analysis call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 exist, so the description should convey more about the return shape (failure categories, recovery plan structure) than it does. It covers inputs and the one gated output field well but leaves the primary return value unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only progress carries a 'Default: 0.0' note), so the description's Args block is doing real work by defining all four parameters, including progress units 0.0-1.0. It stops short of saying which parameters are optional or how the heuristic behaves when job_id/error_message/printer_name are null, and the schema shows zero required 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?
States a specific verb+resource: classify a print failure and suggest recovery steps, with the heuristic basis (error messages, progress, failure history) spelled out. It does not differentiate itself from near-identical siblings such as analyze_print_failure, diagnose_print_failure_live, troubleshoot_print_issue, or plan_failure_recovery, so an agent cannot tell from the description alone which of these to 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?
There is no when-to-use, when-not-to-use, or alternative-naming guidance at all, despite several siblings that appear to overlap heavily. The only conditional language concerns the Kiln Pro gating, not tool selection.
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 | Default: 4.0. | |
| sharp_angle_threshold_deg | No | Default: 60.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the exact risk taxonomy detected, that locations are returned as (x, y, z) coordinates in mm, and the overall return shape. It does not mention cost/runtime, input file limits, or whether the analysis is read-only – modest gaps for a non-mutating 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?
Front-loaded with the purpose, then a scannable bullet list of risk types, then return semantics and params. Slightly long (the risk list repeats the enum-like categories), but every line adds information an agent needs to interpret the output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 or annotations exist, so the description must cover everything; it does explain the return dict structure (risks list with location, severity, description) and documents all three parameters. Missing only operational details such as expected file format constraints, runtime, or how severity should be acted upon.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, and the description supplies the missing meaning: 'Minimum safe cross-section area (default 4)' and 'Angle for sharp edge detection (default 60)' explain what each threshold controls, beyond the schema's bare 'Default: 4.0.' wording. It does not clarify acceptable ranges or units interaction for these thresholds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Analyze an STL mesh for structural weak points') and immediately enumerates the six risk classes it detects. It also explicitly distinguishes itself from printability analysis ('Goes beyond printability'), which cleanly separates it from siblings like analyze_printability and 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 phrase 'Goes beyond printability to find structural risks' implicitly tells the agent when to prefer this tool over printability checks. However, it never names a specific sibling alternative or states exclusions (e.g., that it requires an STL and won't work on SCAD or 3MF), so routing is left partly to inference.
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, led by the brim
or raft to use when the part calls for one
- adhesion: the brim / raft decision for this part (width, raft,
reason, slicer overrides) — the same one analyze_printability
reports
Args:
file_path: Path to STL, OBJ, GLB, or 3MF 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 | Default: "pla". | |
| file_path | Yes | ||
| printer_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly meets it: it discloses exactly what is inspected, the cross-reference against material thermal properties, and the full shape of the result including risk_level values and score_deduction. It stops short of stating that the call is purely read-only and side-effect free, or any cost/latency 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?
The opening sentence is front-loaded and the sections are cleanly separated into behavior, return fields, args, and examples. The seven-field return list is long but earns its place given there is no output schema; the two examples are short and illustrative rather than 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?
No annotations and no output schema, so the description must cover inputs and outputs alone, and it does: accepted formats, default material, optional printer influence, and a field-by-field account of the return value including bounded risk_level values. An agent can call this correctly without opening anything else.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 67% and the schema descriptions are bare defaults, so the description does the real work: it lists the accepted file formats (STL, OBJ, GLB, 3MF), gives material ID examples and what the value is used for, and explains that printer_id must be a registered printer whose real geometry and calibration feed the analysis. That meaning exists nowhere 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?
States a specific verb and resource ("Analyze warping risk for a 3D model") and names the basis of the analysis (geometry plus material). It is cleanly separable from siblings like analyze_printability, analyze_structural_risks, and analyze_model_geometry because the scope is warping-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?
Usage context is implied by the enumerated risk factors (flat surfaces, tall/narrow geometry, sharp base corners) and by the note that it shares its adhesion output with analyze_printability. However, it never says when to prefer this over analyze_printability or analyze_structural_risks, and gives no exclusions or prerequisite conditions beyond the optional printer_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotate_decoration_preset_branchC
Set the human-readable purpose string for a preset branch.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=annotate_decoration_preset_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_id | Yes | ||
| annotation | 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 behavioral burden. It discloses that Kiln Pro is required, which is useful, but it does not say whether setting an annotation overwrites an existing one, what permissions are needed, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is concise and front-loaded, but the remaining text is promotional material about Kiln Pro and pricing rather than tool guidance. Those sentences dilute the definition and do not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the definition is incomplete. The purpose is clear, but key details about overwrite behavior, prerequisites, branch ID format, and annotation constraints 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?
Schema description coverage is 0%, so the description should compensate for both undocumented parameters. It implies that annotation corresponds to the purpose string and branch_id identifies the preset branch, but it does not specify ID format, length limits, or formatting expectations for either 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 a specific verb and resource: setting the human-readable purpose string for a decoration preset branch. It is understandable without opening the schema, though it does not explicitly distinguish itself from sibling annotation tools such as annotate_design_branch or annotate_feature_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 gives no guidance on when to use it versus alternatives, nor any preconditions for use. The only contextual note is the Kiln Pro requirement, which is unrelated to choosing this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotate_design_branchC
Set the human-readable purpose string for a branch.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=annotate_design_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_id | Yes | ||
| annotation | 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 does disclose one genuinely useful behavioral fact — the Kiln Pro entitlement requirement — but says nothing about whether the annotation overwrites an existing one, who may set it, or what happens on failure. The remainder is promotional copy rather than 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 first sentence is tight and front-loaded, which is correct. The two following sentences are subscription marketing and an upsell URL that consume most of the description's length without helping an agent invoke 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?
For a two-parameter mutation with no annotations, no output schema, and 0% schema description coverage, the definition should cover permissions, overwrite behavior, and branch scoping. It covers none of these, and the space is spent on pricing copy instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters, so the description must compensate and largely does not. 'Human-readable purpose string' loosely clarifies the annotation parameter, but branch_id is never explained (which branch namespace? ID format? design vs feature branch?) and the schema offers only 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 opening sentence gives a specific verb and resource: setting a human-readable purpose string on a branch. However, it never distinguishes 'branch' from the sibling tools annotate_feature_branch and annotate_decoration_preset_branch, so an agent cannot tell which branch type this applies to without inspecting the 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?
There is no statement of when to use this tool, no prerequisites beyond a paywall note, and no mention of the near-identical annotation tools for feature and decoration-preset branches. The agent is left to infer routing entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
annotate_feature_branchC
Set the human-readable purpose string on a branch.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=annotate_feature_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_id | Yes | ||
| annotation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses only that Kiln Pro is required, but says nothing about whether setting the annotation overwrites an existing one, what permissions are needed, whether the operation is reversible, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is concise and front-loaded. The remaining sentences are an unrelated marketing upsell listing calibration, mid-print edits, and textures, none of which help an agent invoke this 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 simple two-parameter tool with no annotations or output schema, the description supplies the basic purpose and a licensing prerequisite, but omits branch-type scope, parameter constraints, and mutation semantics. The promotional text competes with the operational information instead of completing 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 coverage is 0%, so the description must compensate. It loosely maps annotation to a 'human-readable purpose string' and branch_id to a 'branch,' but provides no branch ID format, annotation length or character constraints, or validation 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 first sentence states a specific verb and resource: setting a human-readable purpose string on a branch. It is clear what the tool does, but it does not distinguish this from sibling annotation tools such as annotate_design_branch or annotate_decoration_preset_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any conditions beyond the Kiln Pro requirement. It does not explain which branch types are valid or when annotation is appropriate.
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.
answer_material_questionC
Answer one specific engineering question about one material.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=answer_material_question
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| question | 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 behavioral burden. It discloses that Kiln Pro is required, which is useful entitlement context, but says nothing about answer quality, limitations, or output behavior, and much of the text is unrelated subscription marketing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence serves the tool invocation. The remaining sentences are an upsell for Kiln Pro features that are unrelated to answering a material question, making the description noisy and poorly 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 two-parameter tool with no annotations and no output schema, the description is too thin. It omits what kind of engineering answer to expect, constraints on question scope, and any meaningful input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 both parameters are undocumented in the schema. The description implies that 'material' and 'question' are inputs, but it adds no format, scope, or example details 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?
The first sentence states a specific verb and resource: answer one engineering question about one material. It is clear what the tool does, but it does not distinguish itself from nearby material-related siblings such as get_material_properties or recommend_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 gives a constraint of 'one specific question about one material' but does not explain when to use this instead of alternatives. There are many material and engineering-advice siblings, and no routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
answer_printer_questionB
Answer one question about one printer: a hardware fact, whether it protects against thermal runaway, or which screw goes where when you take an assembly apart.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| printer_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 behavioral burden. It gives only the question scope and domains; it does not state whether this is read-only, what data source it uses, whether authentication or printer access is required, how uncertainty is handled, or what the answer format is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words. The examples are compact and directly clarify the intended question types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter Q&A tool, the description is enough to identify the basic call pattern and question domains. With no annotations and no output schema, however, it leaves gaps around return format, limitations, and how this differs from alternative diagnostic or material-question tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies that printer_id selects one printer and that question should be a single question in the listed domains, but it does not specify printer_id format or question 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 states a specific verb and resource: answer one question about one printer. It also names useful question domains (hardware facts, thermal-runaway protection, screw locations), but it does not explicitly distinguish this from nearby siblings such as answer_material_question or troubleshoot_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 examples imply the kinds of questions this tool is for, and the one-question/one-printer scope is clear. However, there is no explicit when-to-use guidance versus alternatives, and no stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_calibration_recommendationsC
Persist calibration tuning overrides as soft defaults.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_calibration_recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Default: "user_explicit". | |
| annotation | No | Default: "". | |
| noise_floor_mm | No | Default: -1.0. | |
| based_on_sample_count | No | Default: 0. | |
| clarification_threshold | No | Default: -1.0. | |
| auto_refresh_when_stable | No | Default: false. | |
| heuristic_confidence_levels | No | ||
| auto_refresh_stability_window | No | Default: 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it only hints at consequences via 'soft defaults' without explaining what that means (overridable? per-printer scope? does it alter future slicing?), what happens when Kiln Pro is absent, or whether the change is reversible. Two of four sentences are promotional copy rather than 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 operative sentence is front-loaded and useful, but the remaining text is an upsell pitch and a purchase URL that do nothing to help an agent decide or invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An eight-parameter mutation with a nested object, no annotations, and no output schema needs more than this: nothing is said about the effect on the stored profile, error behavior without a Pro license, or the existence of revert_calibration_recommendations as the undo path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema documents the eight parameters (including defaults for source, noise_floor_mm, clarification_threshold). The description adds no additional meaning about how these values map to the persisted profile, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb+resource: persist calibration tuning overrides as soft defaults. That is concrete and distinct from siblings like revert_calibration_recommendations or assess_calibration_status, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied (apply the recommendations produced by calibration analysis) plus a hard gating condition, 'Requires Kiln Pro.' No explicit when/when-not guidance or reference to the sibling that reverts these overrides.
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 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 | Default: "auto". | |
| name | Yes | ||
| material | No | Default: "". | |
| model_path | Yes | ||
| printer_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does reasonably well: it discloses that depth, mode, and image style are auto-resolved from the recipe, that oversized meshes are auto-decimated, and that an interactive 3D stage is opened on success. It omits permission/auth requirements and error behavior, but the automatic side effects are genuinely useful 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?
Front-loaded with the core action, but the second sentence restates the first, and the 'This is the magic tool' pitch is redundant marketing that repeats the one-call replay idea. The stage paragraph is useful but long, so several sentences do not fully earn their 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?
With no annotations and no output schema, the description must carry everything. It covers action, auto-resolved settings, side effects, and a brief returns summary, but omits the prerequisite that a saved decoration must already exist and says nothing about failure modes or output structure beyond 'dict with decorated model path and settings used'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 60% (most schema descriptions are bare 'Default: X'), but the :param block compensates: name accepts 'name or slug', model_path is 'STL or OBJ', material is an override where empty means use-proven-or-detect, and printer_id enables material detection. The face values are only partially enumerated ('auto, top, bottom, etc.'), leaving a small 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?
States a specific verb and resource — 'Apply a saved decoration to a new model' — and clarifies it uses a previously saved recipe rather than fresh settings. However, it never names or contrasts with near-siblings like apply_decoration_preset, decorate_surface, or smart_decorate, so the agent must infer the distinction. Clear but not fully sibling-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?
Usage is only implied: 'Loads a previously saved decoration' suggests a prerequisite (something must have been saved via save_decoration), and 'replayed on any model' hints at the reuse scenario. There is no explicit when-to-use/when-not or named alternative, and no statement of what to do if the decoration doesn't exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_decoration_presetB
Apply a saved decoration preset to a mesh — the preset's own recorded settings, no signing required. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_decoration_preset
INLINE 3D STAGE: on success this tool 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 | ||
| scale | No | ||
| preset_id | No | ||
| offset_x_mm | No | Default: 0.0. | |
| offset_y_mm | No | Default: 0.0. | |
| host_mesh_path | Yes | ||
| preset_release_id | No | ||
| preset_version_id | No | ||
| base_mesh_version_id | 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 disclose real behavior: the operation opens an interactive inline 3D stage on success, oversized meshes are auto-decimated, the PNG preview is only a floor, and no signing is needed. It omits whether existing decoration is overwritten, scope/permission needs, and reversibility, so it is strong but not 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 repeats itself: the opening sentence already says it opens the inline 3D stage, then a dedicated 'INLINE 3D STAGE' paragraph restates the same orbit/zoom/decimation behavior at length. The Kiln Pro upsell and pricing URL consume space without helping invoke 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?
For a 9-parameter mutation tool with no output schema and no annotations, the description should explain what the applied preset does to the host mesh and what the parameters control. Instead it explains staging/decimation and upsell, leaving the core operation and parameters undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Nine parameters with only 22% schema description coverage, and the description explains none of them (face, scale, offsets, preset_id, preset_release_id/version_id, base_mesh_version_id). It mentions the preset's 'own recorded settings' in passing but adds no meaning an agent could use to set values, failing to compensate 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?
States a specific verb+resource: 'Apply a saved decoration preset to a mesh', and the clause 'the preset's own recorded settings, no signing required' distinguishes it from the signing/release siblings and from plain apply_decoration. However, it does not name the nearest alternative (apply_decoration, preview_decorated_mesh) directly, so sibling differentiation rests on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied. The phrase 'no signing required' hints that a signed-preset path exists elsewhere, and 'Requires Kiln Pro' gives a prerequisite, but there is no explicit when-to-use/when-not or named alternative among the many decoration tools. Minimal viable guidance.
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 part 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** → rounded edges (stress concentration reduced at inside corners)
- **Insufficient base** → wider base plate (stabilizing geometry added)
- **Cantilevers** → triangular gusset ribs
Thickening and edge rounding are done on the part's CAD file, so
pass its STEP file when there is one (or a mesh Kiln converted
from one that still sits beside it). When every fix applied was
a CAD one the result carries ``step_path``, the reinforced part as
CAD. On a mesh with no CAD file, edge rounding is skipped with
the reason.
Edge rounding is sized for the printer: name it (or the nozzle,
layer height and material) and each rounded edge keeps one nozzle
width of flat beside it. Each rounded entry's ``edges`` lists
what was finished, what stayed sharp and why, and ``cautions``
for edges that will print badly; ``print_aware`` sums it up.
Choosing the finish edge by edge for the printer and material is
a Kiln Pro feature (https://kiln3d.com/pricing).
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.
AGENT DISPLAY CONTRACT: a result carries a before|after self-check
of the part. Look at it and write what changed before calling
the job done.
:param file_path: The part: an STL, or its STEP file.
: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).
:param printer_id: The printer the part is for.
:param nozzle_mm: The nozzle size, when it differs from the one
Kiln has for the printer.
:param layer_height_mm: The layer height it will print at.
:param material: The material it will print in.
:param fastener: The fastener the part's holes take, e.g.
``"M3"`` — pass only if the user actually named one. Kiln
does not read the part looking for screw holes.
:returns: Dict with before/after scores, applied/skipped reinforcements.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| fastener | No | Default: "". | |
| material | No | Default: "". | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". | |
| base_height_mm | No | Default: 2.0. | |
| layer_height_mm | No | ||
| wall_thicken_mm | No | Default: 0.6. | |
| fillet_radius_mm | No | Default: 1.5. |
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: it enumerates exactly which fixes get applied and the geometric change each makes, discloses that edge rounding is silently skipped on meshes with no CAD file (with a reason returned), and names an external dependency ('Requires OpenSCAD for base plate and gusset operations'). It also describes side effects beyond the tool's own output — opening an interactive 3D stage and automatic decimation of oversized meshes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose then a scannable bullet list of fixes, with parameter notes grouped after. Slightly overlong: the AGENT DISPLAY CONTRACT and the inline-3D-stage paragraph are both verbose relative to their informational payload, and the stage note repeats host-support caveats that could be one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, yet the description covers returns (before/after structural score, applied vs. skipped lists, step_path, print_aware, cautions) and names what cannot be auto-applied (reorient) so an agent knows to surface it. External prerequisites (OpenSCAD), tier gating, and the display expectation are all stated — nothing an agent needs to call this correctly 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?
All ten parameters are given meaning beyond their schema entries, including defaults that the schema omits for some (nozzle_mm, layer_height_mm) and usage conditions ('pass only if the user actually named one' for fastener; nozzle_mm only 'when it differs from the one Kiln has for the printer'). The file_path guidance — STL or its STEP file, and why STEP matters — is exactly the kind of semantics the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-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 states a specific two-phase verb+resource: 'Analyze a part for structural risks, then auto-apply fixes,' and the bolded 'one-step design hardening tool' frames it as the do-everything variant. It does not name the near-identical siblings (analyze_structural_risks, recommend_design_reinforcements) explicitly, so the contrast is inferred from 'auto-apply' rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context is given for calling it — hardening a part in a single step — plus concrete routing advice inside the body ('pass its STEP file when there is one'), and a stated limitation that per-edge finish selection is a Kiln Pro feature. What's missing is any explicit 'use this instead of X' or when-not-to-call statement, which matters given the very large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_geometric_textureC
Apply a procedural texture as physical surface relief. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 textures/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_geometric_texture
INLINE 3D STAGE: on success this tool 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 | ||
| mode | No | Default: "deboss". | |
| seed | No | Default: 0. | |
| scale | No | Default: 1.0. | |
| invert | No | Default: false. | |
| region | No | ||
| surface | No | ||
| texture | No | ||
| depth_mm | No | ||
| smoothing | No | Default: 0.0. | |
| symmetric | No | Default: false. | |
| input_path | Yes | ||
| mark_scale | No | Default: 0.45. | |
| mark_style | No | Default: "stencil". | |
| printer_id | No | ||
| projection | No | Default: "auto". | |
| resolution | No | ||
| falloff_curve | No | Default: "smoothstep". | |
| mark_depth_mm | No | ||
| mark_placement | No | Default: "center". | |
| angle_limit_deg | No | ||
| edge_falloff_mm | No | Default: 0.0. | |
| mark_image_path | No | ||
| region_textures | No | ||
| save_to_library | No | Default: false. | |
| mark_offset_x_mm | No | Default: 0.0. | |
| mark_offset_y_mm | No | Default: 0.0. | |
| prevent_overhangs | No | Default: "auto". | |
| segmentation_params | 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 disclose some real behavior: a 3D stage panel opens on success, oversized meshes are auto-decimated, and a monthly quota applies. It omits what an agent most needs for a 29-param mutation – where the textured mesh is written, whether the operation is destructive to the input, and any auth/tier gating beyond the quota count.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the paragraph after the pricing block restates the inline 3D stage almost verbatim from the opening sentence, and the upgrade URL plus 'the PNG preview is the floor, not the whole experience' is marketing copy rather than operational guidance. Roughly half the text is redundant or promotional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 29-parameter, annotation-free, output-schema-free tool, the description should explain the texture/face/region/depth surface and where the result lands. Instead it spends its length on the viewer and tier limits, leaving an agent unable to construct a correct call or predict the returned artifact.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 55% across 29 parameters, and the description explains none of them – not face, region, surface, texture, depth_mm, projection, or the mark_* family. Several params carry no schema description at all (input_path, face, region, surface, texture, depth_mm, resolution), so the description leaves large gaps unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource – 'Apply a procedural texture as physical surface relief' – which tells an agent this displaces geometry rather than painting color. However it never names the close siblings it competes with (apply_procedural_texture, apply_image_texture, decorate_surface), so differentiation must be inferred from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this over apply_procedural_texture or apply_image_texture, nor any prerequisites such as what input_path must point to or whether a printer_id is needed. The only conditional content is a quota note (3 textures/month on free tier), which is useful but is billing, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_image_textureB
Apply a photo-based texture as a tiled deboss/emboss pattern. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 textures/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_image_texture
INLINE 3D STAGE: on success this tool 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 | Default: "auto". | |
| mode | No | Default: "deboss". | |
| style | No | Default: "posterized". | |
| invert | No | Default: false. | |
| region | No | ||
| surface | No | ||
| depth_mm | No | Default: 1.2. | |
| smoothing | No | Default: 0.0. | |
| symmetric | No | Default: false. | |
| image_path | Yes | ||
| input_path | Yes | ||
| num_panels | No | Default: 8. | |
| projection | No | Default: "auto". | |
| resolution | No | Default: 300. | |
| tile_size_mm | No | ||
| falloff_curve | No | Default: "smoothstep". | |
| angle_limit_deg | No | ||
| edge_falloff_mm | No | Default: 0.0. | |
| prevent_overhangs | No | Default: "auto". | |
| segmentation_params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose real behavior: a 3D stage opens on success, oversized meshes are decimated for the stage, and there is a hard free-tier cap of 3 textures/month with a Pro upgrade path. It omits key mutation details — whether the source mesh is modified in place or a new file is written, what formats input_path/image_path accept, and whether the call requires an authenticated account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but the uppercase INLINE 3D STAGE paragraph restates the same information already given in sentence one at roughly triple the length. The pricing link is justified by the quota mention but the overall block is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 20-parameter mutation tool with no annotations and no output schema needs the description to cover where output goes, what the return looks like, and what the parameters mean. The description spends its budget on the viewer experience and pricing instead, leaving core call semantics undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is a nominal 65%, but those schema descriptions are almost entirely 'Default: X' with no meaning attached, and several parameters (region, surface, tile_size_mm, angle_limit_deg, segmentation_params) have no description at all. The tool description explains zero of the 20 parameters, so an agent gets no help understanding mode vs style, what 'face: auto' selects, or how depth_mm and tile_size_mm interact.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ('Apply a photo-based texture as a tiled deboss/emboss pattern'), and the qualifier 'photo-based' plus the image_path parameter implicitly separate it from the geometric/procedural texture siblings. It stops short of explicitly naming apply_geometric_texture or apply_procedural_texture as 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?
Usage is only implied: the agent can infer this is the tool for turning a raster photo into relief, and the free-tier quota (3/month) gives a practical constraint. There is no explicit when-to-use / when-not-to-use statement and no guidance on choosing between this and apply_geometric_texture or apply_procedural_texture.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_procedural_textureB
Apply a multicolor procedural texture (requires AMS/MMU for multi-material printing). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 textures/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_procedural_texture
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| seed | No | Default: 0. | |
| scale | No | Default: 1.0. | |
| preset | No | ||
| surface | No | Default: "all". | |
| texture | Yes | ||
| image_path | No | ||
| input_path | Yes | ||
| mark_scale | No | Default: 0.45. | |
| mark_style | No | Default: "stencil". | |
| num_colors | No | Default: 4. | |
| printer_id | No | ||
| color_palette | No | ||
| image_tile_mm | No | ||
| mark_depth_mm | No | ||
| mark_placement | No | Default: "center". | |
| relief_texture | No | ||
| color_overrides | No | ||
| mark_image_path | No | ||
| relief_depth_mm | No | ||
| save_to_library | No | Default: false. | |
| mark_offset_x_mm | No | Default: 0.0. | |
| mark_offset_y_mm | No | Default: 0.0. | |
| custom_palette_name | 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 the AMS/MMU dependency, the side effect of opening an inline 3D stage, automatic decimation of oversized meshes, and a rate limit (3 textures/month, unlimited Pro). It stops short of explaining what happens to the source file or how save_to_library mutates 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 core purpose is front-loaded and the AMS/MMU condition is stated early. But the definition is padded with an upgrade URL and a separate 'INLINE 3D STAGE' section that restates the stage-opening behavior already mentioned in the first paragraph, wasting 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?
For a 23-parameter mutation tool with no annotations, no output schema, and 43% schema coverage, the description is materially incomplete. It never explains the bulk of the parameters, the return value, or the effect on the input mesh/design, leaving the agent without enough to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43% across 23 parameters, and the description adds essentially no parameter meaning — texture, preset, surface, num_colors, color_palette, mark_* and relief_* fields are all unexplained. With high param count and low coverage, the description should compensate 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 names a specific verb and resource ('Apply a multicolor procedural texture') and states the key precondition (AMS/MMU required). It clearly distinguishes the tool by name-implication from siblings like apply_image_texture and apply_geometric_texture, but never names or contrasts them explicitly, so differentiation is left to the reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a hardware prerequisite (AMS/MMU for multi-material) and quota context (3/month free, unlimited Pro), which implies usage context. However it never says when to prefer this over apply_image_texture, apply_geometric_texture, or auto_multicolor_from_texture, and provides no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_role_templateA
Grant every scope in a role template to a tenant or team in a single call. Composes repeated grant_scope under the hood — no new primitive, just ergonomic bundling.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=apply_role_template
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| org_id | Yes | ||
| team_id | No | ||
| tenant_id | No | ||
| granted_by | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the Kiln Business plan requirement for the owning organisation (and that it does not restrict viewers), plus that this is a bulk composition rather than a new primitive. It omits permissions/auth needed to grant, idempotency and reversibility, and what happens on partial 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 core capability and the grant_scope relationship are front-loaded in the first two sentences, which is good. But the remainder is promotional copy about a hypothetical 'Kiln Business' workshop scenario plus an upgrade URL, which does not help an agent invoke the tool and dilutes the payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 permission-granting mutation with no annotations, no output schema, and five undocumented parameters, the description leaves too much unspecified: it never explains the parameter roles, whether grants are additive or idempotent, or what the call returns. The billing/upgrade framing takes space that should have gone to those 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% across 5 parameters, so the description must compensate. 'To a tenant or team' hints that team_id and tenant_id are alternative targets but never says whether they are optional or mutually exclusive, and role, org_id, and granted_by are completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (Grant), a specific resource (every scope in a role template), and a scope (to a tenant or team) in one call. It also names the primitive it wraps (grant_scope), so an agent can distinguish it from the sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states this tool is 'ergonomic bundling' that 'composes repeated grant_scope under the hood', which tells the agent to prefer this over calling grant_scope repeatedly. It does not explicitly say when NOT to use it (e.g. single-scope grants, or which of team_id vs tenant_id to supply), leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_decoration_presetB
Archive a decoration preset — hide from default listings while preserving every version, branch, release, and outcome.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=archive_decoration_preset
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry useful behavioral weight: it discloses that archiving is non-destructive and what state survives (versions, branches, releases, outcomes). However it never says the action is reversible (unarchive_decoration_preset exists but is unmentioned), how default listings are filtered for other tools, or what happens to a preset already archived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but roughly two thirds of the text is plan/upgrade advertising ('Everything in Free, plus calibration that learns your printer... Upgrade: https://...') that does not help an agent select or invoke 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?
For a single-parameter mutation with no annotations and no output schema, the description covers intent and side effects adequately but omits reversibility, authorization/tier gating details beyond 'Requires Kiln Pro', the identifier semantics, and any indication 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 coverage is 0% and there is one parameter (preset_id) that the description never mentions — no format, where to obtain an ID, or whether it accepts a name. The description therefore adds nothing to compensate for the undocumented 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 first sentence gives a specific verb (archive) and resource (decoration preset), then immediately explains the effect: hidden from default listings but all versions, branches, releases and outcomes preserved. That effect statement implicitly separates it from delete_decoration and unarchive_decoration_preset, though neither sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'hide from default listings while preserving' phrasing implies the use case (soft-retire without data loss), but there is no explicit when-to-use, when-not-to-use, or named alternative such as delete_decoration or unarchive_decoration_preset. The remaining text is tier marketing rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_designA
Archive a design — hide from default listings while preserving every version, branch, recipe sidecar, and print outcome.
| 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 carries the full burden and does disclose the key behavioral facts: the design is removed from default listings and every version, branch, recipe sidecar, and print outcome survives. It stops short of stating reversibility (unarchive_design exists) or any permission 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?
One sentence, front-loaded with the action and immediately followed by its effect and preservation guarantees. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description tells the agent what changes and what is preserved, which is what matters. Idempotency and reversibility are the only meaningful omissions.
Complex tools with many parameters or behaviors need more documentation. Simple 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 does not — design_id is never mentioned. However, the single parameter is self-explanatory by name, so the practical ambiguity is low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (archive a design) plus the observable effect — hidden from default listings. It implicitly contrasts with destructive siblings like delete_design by promising preservation, but never names an alternative tool outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'hide from default listings while preserving every version' implies the use case (soft-hide rather than delete), but there is no explicit when-to-use/when-not statement nor a pointer to unarchive_design or delete_design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_featureC
Archive a mechanical feature — hide it from default listings while preserving every version, branch, link event, and outcome.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=archive_feature
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden, and it does disclose the important trait: the operation is non-destructive and hides the feature from default listings while retaining versions, branches, link events and outcomes. It stops short of saying whether the archive is reversible via unarchive_feature, who may perform it, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but the remaining three lines are a generic plan-comparison advertisement ("calibration that learns your printer, mid-print edits, and unlimited textures and decorations") plus an upgrade URL that says nothing about archiving a feature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no annotations and no output schema, the description covers the crucial preservation semantics but leaves reversibility, permissions/Pro gating, and the identifier's form undocumented. The trailing marketing block actively dilutes the useful 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 description coverage is 0% and the single required parameter feature_id is never mentioned in the description — no format (UUID vs. name), no example, no scoping note. The prose therefore does nothing to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause gives a specific verb and resource ("Archive a mechanical feature") and immediately defines what archiving means — hidden from default listings but versions, branches, link events and outcomes preserved. That distinguishes it in substance from delete_feature and from unarchive_feature, though neither sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to archive versus delete_feature, retire_feature_branch, or unarchive_feature, and no preconditions for the caller. The only eligibility signal is the boilerplate "Requires Kiln Pro", which is ambiguous about whether it gates this specific tool.
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, or the
name of a printer set up in Kiln. When provided, printer
intelligence supplies the plate size.
Keep passing it downstream — a later
``compose_multicolor_3mf`` without it judges the layout
against a 256mm default plate.
:returns: Dict with arranged_parts, overflow_parts, plate_utilization, summary.
| Name | Required | Description | Default |
|---|---|---|---|
| copies | No | Default: "". | |
| file_paths | Yes | ||
| printer_id | No | Default: "". | |
| spacing_mm | No | Default: 5.0. | |
| plate_depth_mm | No | Default: 256.0. | |
| plate_width_mm | No | Default: 256.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses the packing algorithm, that it works on a 'virtual' plate, that it reports fit/overflow/utilization, and warns of a real downstream pitfall (a later compose_multicolor_3mf without printer_id judges against a 256mm default). It stops short of saying whether any files are written or whether the operation is purely computational.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and algorithm before the parameter block; each sentence carries information. The :param: style is slightly verbose but 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?
Six parameters, no annotations, no output schema — yet the description covers defaults, encoding formats, the returns dict keys, and a cross-tool caveat. The remaining gap is the relationship to auto_arrange_parts_on_plate and whether the layout is persisted.
Complex tools with many parameters or behaviors need more documentation. Simple 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 83% (baseline 3), but the description exceeds it: file_paths and copies are typed as plain strings in the schema, and the description supplies the required JSON array / JSON dict encodings with concrete examples, plus the printer_id semantics that the schema only labels 'Default: ""'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Pack multiple STL files onto a virtual build plate') and adds the algorithm used (greedy bottom-left bin-packing, largest first). It does not distinguish itself from the sibling tool auto_arrange_parts_on_plate, which an agent will likely confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'multiple STL files' and by the note to keep passing printer_id downstream, but there is no explicit when-to-use/when-not guidance and no routing away from auto_arrange_parts_on_plate or plan_kit_plates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_bom_sourcing_riskC
Flag the off-the-shelf parts a design can't reliably buy in a year.
Free door, tiered answer — Free: — · Pro: — · Business: — · Enterprise: ✓. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_bom_sourcing_risk
| Name | Required | Description | Default |
|---|---|---|---|
| bom | No | ||
| bom_csv | No | ||
| components | No | ||
| confirm_mapping | No | Default: false. |
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 a tier gate, but the rendering 'Free: — · Pro: — · Business: — · Enterprise: ✓' is cryptic rather than explicit, and it never states read-only vs mutating behavior, the error mode when the tier is insufficient, or what the confirm_mapping round-trip implies. The presence of a confirm_mapping param hints at a two-phase mapping confirmation, but the description never explains 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 lead sentence is tight and front-loaded, which is good. The pricing/upgrade block consumes roughly two-thirds of the text and the em-dash tier line conveys little; it is boilerplate rather than tool 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?
A sourcing-risk assessment with no annotations, no output schema, and four loosely specified parameters needs far more than one sentence. An agent cannot determine what a result looks like, whether the call is safe to repeat, or how to supply the BOM 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 25%, with only confirm_mapping documented ('Default: false'). The description adds no meaning for bom, bom_csv, or components — three of four parameters are undocumented in both places, including whether they are mutually exclusive or required in combination. The single clause about parts being unbuyable is only an indirect hint at what the BOM input should contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: flag off-the-shelf parts whose sourcing cannot be relied on within a year. That is meaningfully distinct from siblings like assess_load_bearing or propose_sourcing_remediation. It lacks any explicit comparison to those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Nothing says when to call this versus propose_sourcing_remediation, analyze_structural_risks, or the material-lookup tools. There is no guidance on choosing between bom, bom_csv, and components inputs, nor on when confirm_mapping should be set. The only implied usage is the vague 'a design' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_calibration_statusC
Calibration confidence + auto-import for slicer profiles.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_calibration_status
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| brief | No | ||
| printer_id | No | ||
| intended_material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full load. It does disclose one genuinely valuable behavioral fact — the tool requires Kiln Pro (with an upgrade URL) — which tells the agent to expect a gating failure on free tiers. But it says nothing about whether the call is read-only, whether 'auto-import' mutates anything, what output form the confidence assessment takes, or what happens if the printer has no calibration 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?
One useful sentence followed by a marketing paragraph and an upgrade URL with tracking parameters. Roughly half the text is promotional and does not help an agent decide or call correctly; the payload is not front-loaded relative to its bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 4-parameter tool with no annotations, no output schema, 25% schema coverage, and no parameter or return-value explanation. The only substantive fact added (Kiln Pro gating) is insufficient for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Four parameters and only 25% schema description coverage (mode's description is literally 'Default: "auto"'). The description never mentions mode, brief, printer_id, or intended_material, so neither schema nor prose explains what these are for — and the description must compensate here 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 opening line ('Calibration confidence + auto-import for slicer profiles') does name a resource — calibration confidence for slicer profiles — but bundles in an unrelated-sounding 'auto-import' capability that is never explained, and never distinguishes this from the many calibration siblings (classify_calibration_confidence, get_calibration_freshness, assess_calibration_status's near-namesakes). The bulk of the text is a Kiln Pro pitch rather than a statement of what the tool returns or does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all: no mention of prerequisites beyond the paywall, no differentiation from classify_calibration_confidence, get_calibration_freshness, explain_calibration_for_design, or any other calibration tool. An agent has to guess which of a dozen calibration siblings answers a given question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_conformal_coating_applicationC
Assess a populated board's conformal-coating and process path.
Free door, tiered answer — Free: Safety basics — always free · Pro: Safety basics · Business: Which coating family, how it fails, what you still must prove · Enterprise: + Named products tied to your controlled documents · governed review for safety-critical boards. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_conformal_coating_application
| Name | Required | Description | Default |
|---|---|---|---|
| threats | No | ||
| cure_method | No | Default: "". | |
| sds_revision | No | Default: "". | |
| contact_stack | No | ||
| exact_product | No | Default: "". | |
| render_packet | No | Default: false. | |
| geometry_flags | No | ||
| contact_reviews | No | ||
| electrical_role | No | Default: "". | |
| regulated_scope | No | Default: false. | |
| rework_required | No | Default: false. | |
| shadow_geometry | No | Default: false. | |
| use_description | Yes | ||
| candidate_family | No | Default: "". | |
| compliance_claim | No | Default: false. | |
| configuration_id | No | Default: "". | |
| evidence_case_id | No | Default: "". | |
| high_consequence | No | Default: false. | |
| isocyanate_status | No | Default: "unknown". | |
| application_method | No | Default: "". | |
| chemical_exposures | No | ||
| must_protect_zones | No | ||
| coverage_inspection | No | Default: false. | |
| cleanliness_evidence | No | Default: false. | |
| exact_product_family | No | Default: "". | |
| governance_requested | No | Default: false. | |
| keep_outs_documented | No | Default: false. | |
| process_capabilities | No | ||
| current_sds_available | No | Default: false. | |
| supplier_data_current | No | Default: false. | |
| configuration_revision | No | Default: "". | |
| exact_product_revision | No | Default: "". | |
| rework_plan_documented | No | Default: false. | |
| secondary_cure_verified | No | Default: false. | |
| spray_controls_available | No | Default: false. | |
| unknown_critical_contacts | No | ||
| solvent_controls_available | No | Default: false. | |
| safety_document_revision_id | No | Default: "". | |
| product_document_revision_id | No | Default: "". | |
| exact_product_family_verified | No | Default: false. | |
| uv_equipment_protocol_available | No | Default: false. | |
| chemical_exposure_details_complete | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that the answer is tier-gated by subscription level, which is useful context, but it says nothing about side effects, permissions, required prerequisites, or whether the assessment 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 purpose is front-loaded, but the body is dominated by promotional tier marketing and an upgrade URL. Very little of the text helps an agent decide how to call the tool or interpret its inputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 high-complexity 42-parameter assessment tool with no annotations and no output schema, the description is far too thin on input semantics and return behavior. Tier hints are present, but the overall definition is not complete enough for reliable 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?
There are 42 parameters with only 79% schema description coverage, and many schema descriptions are merely default values rather than semantic guidance. The description adds no explanation of what use_description, threats, candidate_family, or the many boolean flags should contain.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: assess a populated board's conformal-coating and process path. It is reasonably clear what domain the tool operates in, though 'process path' is vague and no sibling tool is named or contrasted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description spends most of its text on plan tiers and an upgrade link rather than explaining when to use this tool versus alternatives such as check_chemical_resistance or record_chemical_outcome. The only usage-adjacent hint is 'governed review for safety-critical boards', which is not enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_drawing_manufacturabilityC
The verdict: can this machine hold this drawing's tolerances?
Kiln Business would check the extracted requirements against the selected machine and material, flag what needs review, and prepare recommendations for the quote. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_drawing_manufacturability
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| quantity | No | Default: 1. | |
| design_id | No | Default: "". | |
| intake_id | Yes | ||
| printer_id | No | Default: "". | |
| printer_ids | No | ||
| verdict_policy | No | ||
| remember_policy | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the meaningful gating requirement ('Requires Kiln Business') and the kinds of checks performed, but the conditional phrasing 'Kiln Business would check... and prepare recommendations' makes it unclear whether the tool actually performs the assessment or merely describes what a paid tier offers, and nothing says whether it is read-only or whether parameters like remember_policy cause persistence.
Agents need to know what a tool does to the 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 core question, but the middle sentence is written in hedged conditional voice that adds ambiguity rather than information, and a marketing upgrade URL occupies a full line. Nothing is bloated exactly, but not 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 an 8-parameter, no-annotation, no-output-schema tool, the description is thin: it omits what the verdict contains (per-requirement pass/fail? quote-ready recommendations?), what happens if the caller lacks Kiln Business, and how printer_id vs printer_ids or verdict_policy shape the result. It names the tier gate but leaves the agent unable to predict the response or the failure mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eight parameters (material, quantity, design_id, printer_id, printer_ids, verdict_policy, remember_policy, intake_id) with only 63% schema coverage and mostly 'Default:' stubs. The description mentions machine and material in passing but never explains the ambiguous parameters – notably verdict_policy (nested object) and remember_policy, whose effect on behavior is undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-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 states a specific evaluative question – whether a machine can hold a drawing's tolerances – and the second sentence names the concrete operations (check extracted requirements against machine and material, flag review items, prepare quote recommendations). This is a clear verb+resource statement, though it never names a sibling (e.g. validate_design_for_requirements or match_design_requirements) that an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 statement of when to use this versus alternatives; the closest thing is the implied sequencing after 'extracted requirements' exist. No prerequisites (e.g. that intake_engineering_drawing must have run first), no exclusions, and no named alternative tool are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_fair_reaccomplishmentC
Detect FAI re-accomplishment signals from evidence drift.
Kiln Enterprise would tie the production record to the revision, surface missing approvals, and prepare the review packet. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_fair_reaccomplishment
| Name | Required | Description | Default |
|---|---|---|---|
| evidence_case_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the Kiln Enterprise tier requirement, which is useful, but the conditional "would tie... surface... prepare" phrasing implies the actual call may be a no-op upsell rather than the described assessment, and it does not state what happens on invocation without Enterprise. This is a meaningful ambiguity for a tool whose name promises detection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, which is good. But the remaining content is largely promotional ("Kiln Enterprise would...", pricing URL), and that copy does not help an agent select or invoke the tool, so it does not fully earn 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?
There is no output schema or annotations, so the description must be self-sufficient. It communicates the tier gate and a rough intent, but does not explain the return, what "evidence drift" means concretely, or what calling it without Enterprise yields. Adequate but with clear gaps for a 1-param assessment 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 100%, so the baseline is 3. The single parameter evidence_case_id is documented only as "Default: \"\"" in the schema, and the description adds no meaning about what an evidence case is or how to obtain its ID. No value is added 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?
"Detect FAI re-accomplishment signals from evidence drift" gives a specific verb (detect) and resource (FAI re-accomplishment signals), which distinguishes it from siblings like manage_fair_characteristics and prepopulate_fair_draft. However, the follow-on sentence describing what Kiln Enterprise "would" do muddies whether this tool actually performs that detection, leaving the core purpose slightly 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?
The description states a prerequisite ("Requires Kiln Enterprise") but offers no when-to-use guidance, no trigger conditions, and no alternatives among the many FAIR-related siblings (manage_fair_evidence_bundle, manage_fair_registry, prepopulate_fair_draft). An agent cannot tell when to select this over those tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_fleet_power_lossB
Triage a whole fleet after a power loss — mixed brands/models (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=assess_fleet_power_loss
| Name | Required | Description | Default |
|---|---|---|---|
| failures | 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 behavioral burden. It usefully discloses the Business tier requirement, approval gates, and printer-count scope, but it does not state whether the operation is read-only or mutating, what side effects it has, or what kind of result it returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the remaining text is partly promotional and repetitive: 'Business+', 'Requires Kiln Business', and an upgrade URL restate the same gating idea. It is short overall, but not 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?
There is no output schema and no annotations, and the only parameter is undocumented in both schema and description. The description provides tier context but leaves an agent without enough information about input shape, return behavior, or side effects to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the sole parameter is an optional nested `failures` object with additionalProperties true. The description never mentions `failures` or explains what structure the caller should provide, so it adds no interpretable 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 states a specific verb and resource: triage a whole fleet after a power loss, with scope clarified as mixed brands/models. It is meaningfully more specific than the tool name alone, but it does not explicitly distinguish itself from related recovery siblings such as check_power_loss_recovery or recover_power_loss_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 gives a clear triggering condition: use after a power loss on a whole fleet, including mixed brands/models. It also states the Kiln Business requirement, but does not name alternatives or exclusions, so it stops short of full 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.
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.
attach_part_featureC
Attach a reusable PART feature onto a host mesh and compose the result. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=attach_part_feature
INLINE 3D STAGE: on success this tool 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 | No | Default: 1.0. | |
| validate | No | Default: true. | |
| design_id | No | ||
| feature_id | No | ||
| output_path | No | Default: "". | |
| target_spec | No | ||
| host_mesh_path | Yes | ||
| feature_release_id | No | ||
| feature_version_id | 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 usefully discloses that the tool opens an inline 3D stage, decimates oversized meshes for the stage, and requires Kiln Pro. However, it does not state whether the host mesh is modified in place or a new output is created, whether the operation is reversible, or what permissions beyond Pro are 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 core purpose is front-loaded, but the middle includes a promotional upsell ('Everything in Free... Upgrade: URL') that does not help tool selection. The dedicated INLINE 3D STAGE section also repeats the stage announcement from the first sentence, adding bloat rather than new 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 nine parameters, a nested target_spec object, no annotations, and no output schema, the description should explain parameter usage and return behavior. It covers the purpose and some stage behavior but leaves too much unspecified for a complex composition 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 33%, and the three documented parameters only state defaults (e.g., 'Default: 1.0') rather than semantics. The description never explains any of the nine parameters, including how to choose between feature_id, feature_release_id, and feature_version_id, or what target_spec contains. With low coverage the description must compensate, and 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 first sentence states a specific verb ('Attach') and resource ('reusable PART feature onto a host mesh') and says it composes the result. It is clear what the tool does, but it does not explicitly differentiate from siblings like add_feature_during_print, import_external_feature, or cloud_clone_feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus alternatives such as add_feature_during_print, add_feature_during_print_fleet, or import_external_feature. The only contextual note is 'Requires Kiln Pro,' which is an entitlement prerequisite, not usage guidance.
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 | Default: 0.2. | |
| requirements | Yes | ||
| printer_model | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| max_overhang_angle | No | Default: 45.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that the tool aggregates multiple analyses into 'a single report' and is aimed at go/no-go decisions, but says nothing about runtime cost, whether the input file is modified, what happens when optional printer geometry is omitted, or the report's structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the when-to-use, then parameter semantics in a compact Args block. Every sentence carries information; the enumerated capabilities could be trimmed but they double as differentiation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with no output schema and sparse schema descriptions, the definition supplies the missing parameter meaning and states that a single consolidated report is returned. Remaining gap is operational: no hint about execution cost or what happens when printer_model and manual build-volume overrides are both 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 only 20% (just layer_height and max_overhang_angle carry defaults), yet the Args block compensates well: file format for file_path (STL or OBJ), units for build volumes and nozzle diameter, an example printer_model ID, and material example. It does not mark which parameters are optional versus required, leaving that to 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?
States a specific verb+resource ('run a ruthless audit of an original design before printing') and enumerates the six analyses it bundles, which distinguishes it from narrower siblings like validate_design_for_requirements or analyze_printability. It never names those siblings explicitly, so an agent must infer the boundary rather than being told 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?
Gives a clear trigger ('use this after generating or modeling a new part') plus the decision question it answers about print-readiness and next changes. It omits when-not-to-use guidance and does not route to cheaper alternatives (analyze_printability, check_print_readiness) for simpler checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_add_rubber_feetC
Add rubber foot positions to model bottom (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=auto_add_rubber_feet
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| num_feet | No | Default: 4. | |
| model_path | Yes | ||
| output_path | No | ||
| foot_height_mm | No | Default: 1.5. | |
| foot_diameter_mm | No | Default: 8.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that the tool opens an inline 3D stage on success and that oversized meshes are decimated automatically, plus the Pro requirement. But it never states whether it mutates model_path in place or writes to output_path, nor what the result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Heavily bloated: the inline 3D stage behavior is explained twice (parenthetical plus a dedicated block), and a large fraction of the text is tier upsell and a pricing link. The functional sentence is front-loaded but the rest is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description should explain placement behavior, output handling, and any value constraints. Instead it spends its budget on marketing and stage promotion, leaving substantive 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 60% and the description mentions none of the five parameters (num_feet, foot_height_mm, foot_diameter_mm, output_path). It does not compensate for the undocumented fields or clarify placement defaults, leaving the schema to do all the work.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource ('Add rubber foot positions to model bottom'), which is clear enough for an agent to distinguish it from mesh-editing siblings like add_pin_joints. However it does not explicitly differentiate itself from adjacent hardware-insertion tools, and the purpose is buried under promotional content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives, no prerequisites beyond a Pro tier paywall notice. The body text is upgrade marketing ('Everything in Free, plus...', pricing URL) rather than invocation 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`` — pass the SAME ``printer_id`` to that
call: the composer re-centres a group it judges off ITS plate
(256mm by default), so composing a layout packed for a different
bed without the printer undoes this placement.
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``, ``fits_bed`` (``False`` when the rows run past
the bed: the message then gives the layout's size, the bed's, and
what to do, instead of the next step), ``bed_fit``, and
``message``.
| Name | Required | Description | Default |
|---|---|---|---|
| gap_mm | No | Default: 5.0. | |
| part_specs | Yes | ||
| printer_id | No | Default: "". | |
| plate_depth | No | Default: 256.0. | |
| plate_width | No | Default: 256.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it discloses the row-layout strategy, that grouped parts intentionally overlap, the bed-fit failure mode (`fits_bed` false with diagnostic message), and the subtle re-centring interaction with the composer. These are exactly the behavioral traps an agent would otherwise hit.
Agents need to know what a tool does to the 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 purpose, then prerequisites, then strategy, then a concrete example — good ordering. It runs long and repeats the bed-size default twice, but essentially every paragraph adds actionable 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 exists, yet the Returns section enumerates success, parts with x/y, group_count, fits_bed, bed_fit and message. Combined with the usage warnings, an agent has everything needed to call it and chain the result into compose_multicolor_3mf.
Complex tools with many parameters or behaviors need more documentation. Simple 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 80% but the schema only carries defaults; the description documents every `part_specs` key (stl_path, extruder, group, name, color, material) including optionality and default grouping behavior. It also explains that printer_id overrides plate_width/plate_depth, which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — calculating non-overlapping XY positions for multiple parts on a print plate — and the body clarifies the group-overlap exception. It does not, however, distinguish itself from the sibling `arrange_parts_on_plate`, which an agent could easily confuse with this 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?
Explicitly states when to use it ('before compose_multicolor_3mf when you have multiple separate objects'), warns that the SAME printer_id must be passed downstream, and names kiln-pro as the alternative for denser packing. No guidance is given on when to prefer the sibling `arrange_parts_on_plate` instead.
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.
Says whether its colours are on the printer, as
``colour_availability`` (absent when Kiln cannot see what is
loaded). Relay its ``say`` as written and add nothing about
filament: never suggest buying filament unless the person asks
for one or says yes to the offer in ``say``. On a yes, call
``find_closest_filaments`` with these colours and the print's
material.
: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.
:param material: Optional material the part will be printed in
(e.g. ``"PETG"``). A spool on record in a clearly
different material is then not named as one to load.
:param printer_id: Optional supported printer model id. Names
the bed the composed 3MF is placed on, so a model sitting
off the plate is centred on the machine's real bed rather
than an assumed 256mm one.
: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 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 | Default: "". | |
| input_path | Yes | ||
| num_colors | No | Default: 4. | |
| printer_id | No | Default: "". | |
| color_palette | 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: it explains that boundary faces are cut exactly and capped so each zone is a closed solid, warns face counts can exceed the input's, discloses that files are written per zone, states zero cloud dependencies, and flags the interactive 3D stage side effect plus automatic decimation of oversized meshes. It also exposes the `colour_availability` response field and constrains what the agent may say about filament, which is behavioral guidance not obtainable 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?
Purpose is front-loaded, followed by geometry guarantees, artifacts, and the parameter block — a sensible order. It is longer than strictly necessary, and the trailing inline-3D-stage paragraph is disproportionately verbose relative to its value, though it does convey a real 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?
There is no output schema, and the :returns: block compensates by enumerating zone STL paths, hex colors, face counts, watertight verdicts, AMS slot mapping, weight estimates, and the optional 3MF. What remains unstated is failure behavior — bad path, non-binary STL, more zones than the model's height supports — which matters for a file-consuming 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 :param: block adds substantial meaning beyond the sparse schema (which only offers "Default: 4" and "Default: \"\""): color_palette gives hex examples and the default palette, material explains the spool-matching effect, and printer_id explains that it selects the real bed dimensions for 3MF placement instead of an assumed 256mm bed. That is meaning an agent could not recover from the schema at 60% 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 names a specific verb and resource with a precise mechanism ("Split a 3D model into horizontal color zones by Z-height"), and the band-cutting explanation makes the operation concrete. It does not name siblings like auto_color_by_region or auto_multicolor_from_texture, so an agent must infer the boundary rather than being told it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the description establishes that input must be a binary STL and that the tool outputs per-zone STLs/3MF, which suggests the workflow. It never says when to prefer this over auto_color_by_region or auto_multicolor_from_texture. The downstream routing protocol (relay `say`, call find_closest_filaments only on a yes) is genuinely useful guidance, but it governs post-call behavior rather than tool selection.
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.
Says whether its colours are on the printer, as
``colour_availability`` (absent when Kiln cannot see what is
loaded). Relay its ``say`` as written and add nothing about
filament: never suggest buying filament unless the person asks
for one or says yes to the offer in ``say``. On a yes, call
``find_closest_filaments`` with these colours and the print's
material.
: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.
:param material: Optional material the part will be printed in
(e.g. ``"PETG"``). A spool on record in a clearly
different material is then not named as one to load.
:param printer_id: Optional supported printer model id. Names
the bed the composed 3MF is placed on, so a model sitting
off the plate is centred on the machine's real bed rather
than an assumed 256mm one.
: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 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 | Default: "z_height". | |
| material | No | Default: "". | |
| input_path | Yes | ||
| num_colors | No | Default: 4. | |
| printer_id | No | Default: "". | |
| color_palette | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so substantially: it explains how z_height cuts and caps faces into closed solids, how normal/random colorings remain one watertight mesh, how slicers handle the 3MF, that there are zero cloud dependencies, and how the inline 3D stage behaves. It stops short of stating file overwrite behavior, permissions, or error conditions, but it is far more transparent than the schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the method list is well structured with bullets and indentation. It is fairly long, but most of the length is operational detail for a complex geometry tool; a few passages, such as the filament-offer instructions and stage note, 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?
The description supplies the return dictionary contents, method-specific behavior, material/printer context, and inline-stage behavior, which is important because there is no output schema and no annotations. It lacks explicit error handling and overwrite details, but it is complete enough for an agent to invoke the tool correctly in 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 description coverage is only 67%, and several schema fields are documented only as defaults, so the description adds real meaning: input_path is a binary STL, method accepts z_height/normal/random, color_palette is a list of hex colors with a default palette, material affects filament naming, and printer_id affects bed placement. The parameter guidance is strong overall, though some constraints such as exact path requirements 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 a specific verb and resource: split a 3D model into color zones by geometric region, and it enumerates the supported assignment methods. It does not explicitly differentiate itself from close siblings such as auto_color_by_height or paint_decoration_faces, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how to choose among its own methods: z_height is the default, normal groups by face direction, and random is for artistic prints. However, it does not say when to use this tool instead of sibling tools like auto_color_by_height or paint_decoration_faces, and it gives no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_detect_nozzleC
Parse a raw printer payload into a NozzleState.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | ||
| printer_id | Yes | ||
| raw_payload | 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 behavioral burden. It says the tool transforms a payload into a NozzleState, but it does not disclose whether the operation is read-only, whether it side-effects printer state, what validation or errors occur, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. Its brevity is structurally efficient, though it leaves important details unaddressed for a tool with three required 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?
With no annotations, no output schema, and 0% schema description coverage across three required parameters, the description is too sparse. It does not explain the raw payload format, the role of printer_id and brand, or what a NozzleState contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for three required parameters: printer_id, brand, and raw_payload. The description does not explain any parameter's expected format, role, or constraints, so it adds no semantic information 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 states a specific verb, 'Parse', and a specific resource, a raw printer payload, producing a NozzleState. It is clear what the tool does, but it does not distinguish itself from nearby nozzle-state siblings like get_nozzle_state, list_nozzle_states, or set_nozzle_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus get_nozzle_state or list_nozzle_states. The only implied usage is when a raw payload exists, but no prerequisites, exclusions, or alternative selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_generate_manual_for_printC
Fire the automatic manual trigger for a multi-part print (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=auto_generate_manual_for_print
| Name | Required | Description | Default |
|---|---|---|---|
| branding | No | ||
| languages | No | ||
| background | No | Default: true. | |
| output_dir | No | ||
| design_name | No | ||
| assembly_json | Yes | ||
| co_brand_name | No | ||
| cover_language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It discloses the plan/tier requirement, which is genuinely useful context, but says nothing about whether the call is a mutation, whether generation is synchronous or background (despite a 'background' parameter existing), what happens on failure, or what the response contains.
Agents need to know what a tool does to the 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 sentences, of which two are promotional ('Business adds team review, approval gates, and 3 printers...' plus a pricing URL). The one useful sentence (the actual action) is front-loaded, but half the text is upsell that does not help an agent invoke 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?
For an 8-parameter, no-annotation, no-output-schema mutation-ish tool at 13% schema coverage, the description is far too thin. It conveys the tier gate but omits argument sourcing, execution mode, and any hint of the result, leaving the agent unable 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?
Eight parameters, of which only 'background' has a schema description (13% coverage); the description adds no parameter meaning whatsoever. Critically, the required 'assembly_json' — the one thing the agent must supply — is never explained in terms of format or source, so the description fails to compensate 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?
It names a resource (a manual for a multi-part print) and a scope (Business+), but the verb phrase 'Fire the automatic manual trigger' is ambiguous about whether it generates a manual or merely kicks off a background trigger. Sibling tools like generate_assembly_manual, diff_assembly_manuals and embed_manual_in_3mf are not distinguished from it, so an agent cannot confidently route between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the plan gate ('Requires Kiln Business', 'Business+'), which tells the agent when it will fail rather than when it should be chosen. There is no mention of when to prefer this over generate_assembly_manual or the other manual-related siblings, and no prerequisites beyond the tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_multicolor_from_textureC
Segment a textured OBJ mesh into discrete color zones for multi-material printing. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 multicolor splits/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=auto_multicolor_from_texture
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| n_colors | No | Default: 4. | |
| obj_path | Yes | ||
| output_dir | No | Default: "". | |
| printer_id | No | ||
| compose_3mf | No | Default: true. | |
| texture_path | No | ||
| min_island_faces | No | Default: 3. | |
| min_island_area_mm2 | No | Default: 1.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does useful work: it discloses automatic decimation of oversized meshes, that an interactive 3D stage is opened, and that a browser stage link may be attached. However, it omits significant side effects implied by the schema — it writes to output_dir, composes a 3MF by default (compose_3mf: true), and presumably emits files — so a mutating, file-producing tool's behavior is only partially 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 INLINE 3D STAGE paragraph largely restates the first paragraph's stage/viewer claim, and the pricing URL plus tier upsell consume space without helping invocation. The genuinely useful fact (automatic decimation) is buried at the very end rather than 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 an 8-parameter, no-annotation, no-output-schema tool, the description should explain what gets produced and how the parameters steer segmentation. Instead it focuses on marketing the viewer experience, leaving the agent without a clear picture of outputs (meshes? 3MF? where?) or parameter 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 coverage is 63% and the remaining descriptions are only defaults ('Default: 4.', 'Default: true.'). The prose contributes zero parameter meaning: n_colors, texture_path, obj_path, min_island_faces and min_island_area_mm2 are never explained, so the description does not compensate 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?
States a specific verb and resource: 'Segment a textured OBJ mesh into discrete color zones for multi-material printing.' An agent can picture the operation and its input type. It does not name or distinguish itself from near-siblings like segment_mesh_regions, auto_color_by_region, or auto_color_by_height, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to choose this over segmentation or auto-color siblings; the only usage-flavored content is a quota/upgrade note ('Free tier: 3 multicolor splits/month'). There are no prerequisites, no exclusions, and no routing guidance, so an agent must infer the case from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_orient_modelA
Find the optimal print orientation for a 3D model.
Evaluates multiple rotations of the model, ranks them, and
reports each candidate's bed contact, support volume, print
height and overhang share. On a plain install, and for a
caller below Kiln Pro on Kiln's hosted service, the ranking is
by bed contact, the lower part first between equals; a Kiln Pro
caller on the hosted service gets Kiln's own scorer
(https://kiln3d.com/pricing). A caller the scorer was withheld
from is told so once, in ``upgrade_hint``. 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 | Default: false. | |
| file_path | Yes | ||
| candidates | No | Default: 24. | |
| output_path | No | ||
| nozzle_diameter | No | Default: 0.4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the ranking criterion, tier-gated scorer behavior, the upgrade_hint mechanism, and that setting apply=True writes a reoriented STL to disk. It does not state whether the input file is modified, whether output overwrites an existing file, or the computational cost of evaluating candidates.
Agents need to know what a tool does to the world before calling 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 a structured Args block. The tier/scorer paragraph is longer than strictly necessary but contains decision-relevant behavior; overall there is little wasted 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?
There is no output schema, so the description must explain returns, which it does: each candidate's bed contact, support volume, print height, and overhang share, plus upgrade_hint. It is nearly complete for a 5-parameter analysis tool, though it could be clearer about the exact result shape (e.g., ranked list vs single best) and file-handling 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 coverage is only 60% (file_path and output_path have no schema descriptions), and the description fills those gaps with meaning: file_path accepts STL or OBJ, output_path is only used when apply is True and defaults to <input>_oriented.stl. It also clarifies nozzle_diameter is in mm and candidates is the count evaluated, adding value beyond the bare schema 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 states a specific verb and resource ('Find the optimal print orientation for a 3D model') and details the evaluation/ranking/reporting behavior. It does not explicitly distinguish itself from the very similar sibling 'optimize_print_orientation' (or 'check_orientation'), so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 by the description of what is evaluated and the optional apply step, but there is no explicit when-to-use guidance, no exclusions, and no named alternatives such as the near-identical 'optimize_print_orientation' sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_recess_pocketC
Add recessed pocket to a face for bed-safe decoration (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=auto_recess_pocket
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Default: "bottom". | |
| model_path | Yes | ||
| output_path | No | ||
| pocket_depth_mm | No | Default: 1.2. | |
| pocket_inset_mm | No | Default: 3.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the full behavioral burden. It discloses the Kiln Pro entitlement requirement, but does not explain whether the model is modified in place, how output_path is used, what happens to the original file, or what the operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is useful and front-loaded, but it is followed by promotional copy about Free/Pro features and an upgrade URL. Those sentences do not help an agent select or invoke the tool and dilute the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations and no output schema, the description is materially incomplete. It names the operation and Pro gate but omits output behavior, side effects, and parameter guidance an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 60%, and the description adds no parameter-level meaning beyond the schema. It does not clarify model_path vs output_path, units, defaults, or how face/depth/inset interact, leaving the undocumented parameters without compensating 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?
The first sentence states a specific verb and resource: 'Add recessed pocket to a face'. It is clear what the tool does, though it does not distinguish itself explicitly from nearby mesh/modification siblings such as recommend_hardware_pocket or add_mesh_chamfer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites beyond the Pro entitlement. The phrase 'for bed-safe decoration' implies a use case but does not tell the agent how to choose this tool over related pocket/hardware/decorating tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_recoverB
Recover a failed print in one guided operation.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=auto_recover
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| job_info | No | ||
| telemetry | No | ||
| failure_id | No | Default: "". | |
| gcode_path | No | Default: "". | |
| retry_mode | No | Default: "off". | |
| run_actions | No | Default: "". | |
| auto_confirm | No | Default: true. | |
| printer_name | Yes | ||
| printer_type | No | Default: "". | |
| plate_objects | No | ||
| snapshot_path | No | Default: "". | |
| failed_objects | No | ||
| telemetry_history | No | ||
| vision_strictness | No | Default: "advisory". | |
| alternative_printers | No | ||
| monitoring_interval_s | No | Default: 30.0. | |
| monitoring_max_wall_s | No | Default: 600.0. | |
| baseline_snapshot_path | No | Default: "". | |
| allow_skip_failed_objects | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely does so: it discloses that the tool may command the printer (upload/start/pause/resume/set speed), that it is two-phase (proposes actions and runs nothing, then executes via run_actions=actions_digest), and that execution is delegated through Kiln's own tools with their checks. Gaps remain around reversibility and what happens to the in-progress job, but this is unusually rich for an unannotated 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?
Purpose is correctly front-loaded and the two-phase instruction is tight, but the middle paragraph is largely promotional upsell (tier feature list plus an upgrade URL) that consumes a full paragraph without helping selection or invocation. The one operationally useful fact buried there, the Kiln Pro requirement, is stated ambiguously.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 19-parameter, no-output-schema, no-annotation mutation tool, the description covers the execution model well but leaves the bulk of the input surface and the shape of the first-call 'actions' response unexplained. It is enough to understand the mechanism but not enough to drive the tool confidently on a first attempt.
Complex tools with many parameters or behaviors need more documentation. 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 only run_actions (the actions_digest handshake); the other 18 parameters are unaddressed. The schema's nominal 63% coverage is misleading because most 'descriptions' are bare defaults (Default: ""), and the nested free-form objects (job_info, telemetry, plate_objects, failed_objects, telemetry_history, alternative_printers) have no semantic guidance anywhere. An agent cannot know what to supply for the core inputs like failure_id, job_info, or retry_mode.
Input schemas describe structure but not intent. Descriptions should explain non-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 ('recover a failed print') and adds a scope qualifier ('in one guided operation') that hints at consolidation versus the many multi-step siblings (plan_print_recovery, start_print_recovery, confirm_print_recovery). It is clear what the tool does, but it never names or contrasts with those siblings, so the agent must guess which recovery entry point applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the failure context, and the third paragraph gives concrete invocation mechanics (first call proposes, second call executes). However, there is no explicit when-not guidance and no routing to alternatives among the dense recovery-tool cluster, so selection remains inferential.
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 | Default: 600. | |
| provider | No | Default: "meshy". | |
| poll_interval | No | Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it usefully discloses polling, terminal-state behavior, timeout handling, and default timing values. However, it does not explain what happens when the timeout is exceeded, what terminal statuses mean, or whether failures are returned or raised, leaving important operational behavior ambiguous.
Agents need to know what a tool does to the world before calling 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 behavior and then provides a compact Args section. It is appropriately sized and every sentence contributes useful 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 blocking polling tool with no annotations and no output schema, the description covers the mechanics and parameters but remains incomplete about the returned status object and timeout outcome. It is adequate but leaves gaps an agent may need to handle 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 75%, and the description adds useful meaning for every parameter, especially job_id's origin from generate_model and the meaning of provider, timeout, and poll_interval beyond the schema defaults. It does not enumerate valid provider values, but it materially improves 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?
The description states a specific verb and resource: wait for a generation job to complete and return final status. It also distinguishes itself implicitly from non-blocking status checks by saying it polls and blocks until a terminal state. It does not name the sibling generation_status, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use it when an agent wants to block until a model is ready. It does not state when not to use it or explicitly name alternatives such as generation_status, so it lacks the exclusions and alternatives required for a 5.
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.
A print carrying a hardware plan (pauses written in for nuts, magnets or
bearings) also returns early with ``outcome: "hardware_stop"`` and a
``hardware`` block: when a stop is a few minutes away, when the printer
has stopped for the parts, and when it went past a stop without
stopping. Tell the person what the block says, then wait again. A
finished print's ``hardware`` block names what goes in after the print.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| timeout | No | Default: 7200. | |
| brief_id | No | Default: "". | |
| poll_interval | No | Default: 15. |
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 enumerates terminal outcomes (completed/failed/cancelled/timeout), states the timeout default and poll cadence, discloses the early-return 'hardware_stop' outcome and its hardware block, and flags brief_id resolution as best-effort with graceful degradation when kiln-pro is absent. That is exactly the behavioral context an agent needs to handle the call's non-obvious paths.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and outcome list, then structured into Args/Returns/hardware-stop paragraphs, all of which earn their place. Minor cost: the defaults for timeout and poll_interval are restated from the schema, and the hardware_stop paragraph is long relative to the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 long-running blocking tool with no output schema, the description compensates fully: it documents the return dict's keys (outcome, printer state, elapsed time, completion history, design_goal, hardware) and the special early-return path. Nothing an agent needs to interpret or act on the result 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 Args section adds real meaning beyond the schema's bare titles and defaults: job_id's provenance ('from submit_job()') and the behavioral fork between tracking a job vs. monitoring the printer, and brief_id's enrichment of the response with a design_goal block. The only repetition is the timeout/poll_interval defaults, which are minor against the substantive semantics added.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Wait for the current print to finish and return the final status') and immediately scopes it to polling until a terminal state. An agent can tell this is the blocking/completion-wait tool rather than a one-shot status read like printer_status or print_status_lite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 frames the intended usage pattern: 'fire-and-forget a print and pick up the result later without managing their own polling loop,' and explains that job_id tracks a queued job while omitting it monitors the printer directly. It stops short of naming the sibling alternatives (monitor_print, watch_print, job_status) it should be chosen over, so the routing decision is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backfill_artifact_into_orgC
Move an existing tenant-owned artifact into org_id, updating BOTH the cloud rows and the local ownership marker.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=backfill_artifact_into_org
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | ||
| artifact_id | Yes | ||
| artifact_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does disclose one genuinely useful behavior: the operation writes BOTH the cloud rows and the local ownership marker, which signals a dual-write mutation. However it says nothing about reversibility, permissions, conflict handling, or what happens if the artifact is already in the target org.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content is a single well-formed leading sentence. Everything after it is marketing boilerplate ('Business adds team review, approval gates, and 3 printers', a pricing URL) that does not help an agent decide or invoke the tool and dilutes the actual instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and zero parameter documentation, the description should cover permissions, conflict/failure behavior, and valid artifact types. It covers only the high-level effect, leaving an agent unable to predict the outcome of a failed or repeated move.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all three parameters. The description names org_id and implies an existing artifact via artifact_id/artifact_type, but never states what artifact_type values are accepted (there is no enum) or what identifier format artifact_id expects, so it only partially compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('Move an existing tenant-owned artifact into *org_id*') and even states the dual effect on cloud rows and the local ownership marker. It is clear what the tool does, but it never distinguishes itself from the sibling 'transfer_artifact_between_orgs', so an agent cannot tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage condition offered is the licensing prerequisite ('Requires Kiln Business'). There is no guidance on when to use this instead of transfer_artifact_between_orgs, no prerequisites about ownership or tenant state, and no statement of when-not to call it.
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 | Default: true. | |
| 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 redaction is on by default, enumerates the sensitive field classes affected (API keys, access codes, payment refs), and explains the default timestamped destination. It still doesn't say whether an existing file at output_path is overwritten, what permissions are needed, or how large/slow the copy may be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its safety-relevant default are front-loaded in the first two sentences, and the Args block cleanly covers the two parameters. No filler sentences; every line adds information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-optional-parameter mutation-ish tool with no output schema and no annotations, the description should state what is returned (presumably the backup path) and any failure modes. It covers behavior and defaults well but leaves the return value and error conditions undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (output_path has no schema description), but the description compensates: it documents the default path template '~/.kiln/backups/kiln-YYYYMMDD-HHMMSS.db' and restates that redact defaults to True, adding the meaning of what redaction does. Only overwrite/error semantics for output_path are left unspecified.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Back up the Kiln database') and immediately qualifies it with 'optional credential redaction', then clarifies it creates a copy of the SQLite database. It doesn't name or differentiate from nearby siblings such as cloud_backup_configure or database_status, but the purpose itself 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?
Usage is only implied via the default-path description; there is no explicit statement of when to use this local SQLite backup versus cloud_backup_configure or other persistence tools. The description also omits any preconditions (e.g., safe to run while the server is active).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_decorateC
Apply the same decoration to multiple models (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=batch_decorate
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Default: "auto". | |
| mode | No | Default: "deboss". | |
| scale | No | Default: 0.7. | |
| content | Yes | ||
| depth_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| output_dir | No | ||
| model_paths | 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 implies a mutation ('apply') and notes Pro gating, but does not state whether existing decorations are overwritten, how partial failures are handled, what permissions are needed, or what the operation returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in a clear first sentence, but the remaining two lines are largely marketing copy about Pro features and an upgrade URL. This tier information is relevant to access but crowds out behavioral and parameter 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?
This is a batch mutation tool with eight parameters, no annotations, and no output schema. The description covers the basic purpose and Pro requirement but omits behavioral details, parameter semantics, output expectations, and error handling that an agent would need 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 description adds no meaning for any of the eight parameters beyond the schema. With only 63% schema description coverage and required fields like content and model_paths lacking descriptions, the description should compensate but does not mention face, mode, scale, depth_mm, material, or output_dir.
Input schemas describe structure but not intent. Descriptions should explain non-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 specific verb and resource: apply the same decoration to multiple models. It distinguishes the batch behavior from single-model decoration siblings implicitly through 'multiple models.' However, it does not name any sibling alternative or clarify scope further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 a prerequisite ('Requires Kiln Pro') but gives no guidance on when to use this tool versus apply_decoration, decorate_surface, or smart_decorate. There are no exclusions, alternatives, or context for selecting batch vs. single-model decoration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_estimate_plate_part_costsB
Batch-estimate per-part economics for many sliced plates (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=batch_estimate_plate_part_costs
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| material | No | Default: "PLA". | |
| cost_per_kg_usd | No | ||
| printer_wattage | No | Default: 200.0. | |
| electricity_rate | No | Default: 0.12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It discloses the entitlement gate (Business tier required), which is genuine behavioral context an agent cannot get from the schema, but it says nothing about whether the call is read-only, how errors surface on unlicensed accounts, or the cost/rate-limit profile of a batch 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 purpose sentence is front-loaded and tight, but the trailing marketing copy ('3 printers (grow to 50)') and the pricing upgrade URL do little for an agent deciding how to call the tool, consuming roughly half the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, an untyped required array, no output schema, and no annotations, the description should explain the 'items' structure and what comes back (per-part cost fields). It instead spends its budget on tier upsell, leaving an agent unable to construct a correct call from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple 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 60%, and the description adds no parameter information at all. The lone required parameter, 'items', is typed as an untyped array (`items: {}`), and 'cost_per_kg_usd' has no description either; the phrase 'many sliced plates' only loosely hints at the item shape and does not compensate for the documentation gaps.
Input schemas describe structure but not intent. Descriptions should explain 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+resource: batch-estimates per-part economics across many sliced plates. The plural 'many sliced plates' implicitly distinguishes it from the singular sibling estimate_plate_part_costs and from estimate_batch_cost, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires Kiln Business' line functions as a real prerequisite/gating condition, which is useful call-selection guidance. However, there is no statement of when to prefer this over estimate_plate_part_costs or estimate_batch_cost, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_generate_productsB
Generate N decorated products from N photos in one call (Pro). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=batch_generate_products
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| photos | Yes | ||
| size_mm | No | Default: 0. | |
| material | No | Default: "". | |
| image_style | No | Default: "". | |
| include_step | No | Default: false. | |
| product_type | Yes | ||
| thickness_mm | No | Default: 0. | |
| text_template | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the Pro-tier gate, but says nothing about what happens on batch failure, whether photos are consumed, rate limits, or the shape of the result. The injected MAKE DOORS paragraph describes other tools, not this one'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 first sentence is tight and front-loaded. The MAKE DOORS block, feature list, and pricing URL are boilerplate that does not describe this tool and dilutes the definition, though the core is still 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?
For a 9-parameter, no-annotation, no-output-schema tool, the description covers the tier gate but leaves batch semantics, failure behavior, and output shape unexplained. It is adequate to start an invocation but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema documents most of the 9 parameters already. The description adds only the loose mapping 'N photos' to the photos array and 'N products' to the batch count, with no clarification of mode, material, size_mm, or text_template.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource with scope: 'Generate N decorated products from N photos in one call (Pro).' That distinguishes it from the singular generate_decorated_product and from batch_decorate. However, it never names those siblings, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the batch/photo use case and that Kiln Pro is required, which implies when to use it. But the only named alternatives (design_session, compile_scad) belong to a different task entirely (the make loop), so there is no real when-to-use-this-vs-a-sibling guidance.
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?
No annotations are provided, so the description carries the full burden. It does disclose what the call reports (leveling status and whether leveling is needed), which is useful since there is no output schema, but it says nothing about whether the state is read live from the printer, how fresh it is, or any auth/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?
Two short lines, the purpose is front-loaded ahead of the argument block, and no sentence is padding. The 'Args:' docstring formatting is slightly mechanical but costs nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-optional-parameter, read-only status check with no annotations and no output schema, the description covers the intent and the one parameter's defaulting rule. Only the meaning of the returned status values is unaddressed, which is minor given 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?
Schema coverage is 0% and the single parameter has no description in the schema, so the description must compensate. It does: it identifies printer_name as the target printer and, importantly, explains the defaulting behavior ('Omit for the default printer'), which is information nowhere else in the structured 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?
States a specific verb+resource ('Check bed leveling status') plus the scope of the answer ('whether leveling is needed'). An agent can distinguish it from the sibling mutation tools trigger_bed_level and set_leveling_policy, though it never names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'whether leveling is needed' clause hints this is the pre-check before triggering a level, but there is no explicit when-to-use, when-not-to-use, or stated alternative (e.g. get_bed_mesh, first_layer_status). The 'omit for the default printer' note is parameter guidance rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
best_design_versionC
Find the version with the highest success rate.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=best_design_version
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| printer_id | No | Default: "". | |
| version_ids | 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 it does disclose a tier/auth gate ('Requires Kiln Pro'), which is genuinely useful behavioral context. However it says nothing about how the success rate is computed, what happens when no outcome data exists, or how ties/missing material or printer arguments are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded, but the second paragraph is marketing ('branch, restyle, compare outcomes...') and the third is a paid-upgrade URL. Roughly two-thirds of the text sells Kiln Pro rather than describing tool 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 3-parameter selection/scoring tool with no annotations and no output schema, the description omits the return shape, the ranking basis, and edge-case behavior. Only the Kiln Pro requirement is covered, leaving significant 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 67%, and the undocumented required parameter version_ids has only the title 'Version Ids', while material and printer_id carry useless 'Default: ""' descriptions. The description adds no parameter meaning at all, not even clarifying that version_ids is the candidate pool or that material/printer_id scope the success-rate lookup.
Input schemas describe structure but not intent. Descriptions should explain 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: find the version with the highest success rate. This is distinguishable from siblings like list_design_versions, search_design_versions, and compare_design_versions, though it never names those siblings or says where the candidate versions come from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no comparison to alternatives such as compare_design_versions or design_version_health. The only conditions given are commercial ('Requires Kiln Pro'), not operational.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_badC
Mark the current (or explicit) candidate as known-bad.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_bad
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| version_id | 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 this marks a candidate as known-bad and mentions a Kiln Pro entitlement, but does not explain session effects, reversibility, idempotency, required permissions, or what happens next.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in one clear sentence, but the remaining three sentences are unrelated promotional copy about Free/Pro tiers, calibration, textures, and decorations. Most of the description does not help an agent select or invoke this 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 mutation tool with no annotations, no output schema, and zero schema description coverage, the description is too thin. It states the basic action but omits workflow context, side effects, return behavior, and the meaning of the required session_id.
Complex tools with many parameters or behaviors need more documentation. Simple 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 partially clarifies that version_id is optional and defaults to the current candidate, but session_id is never explained and no format or constraint details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: marking a candidate as known-bad. It implicitly contrasts with bisect_good, though it does not name the sibling or explain the broader bisect workflow. The marketing sentences add noise but do not obscure the core 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 says the tool acts on the current or explicit candidate, but gives no guidance on when to use it versus bisect_good, bisect_skip, bisect_current, or bisect_end. It also omits prerequisites such as needing an active bisect session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_currentC
Return the current candidate + progress for a session.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_current
| 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. It does not say whether the call is read-only, whether it mutates the session or advances state, what 'progress' contains, or what happens with an invalid or expired session_id. The licensing boilerplate does hint at a paid-tier gate, but that is incidental marketing rather than deliberate 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 useful sentence is front-loaded, which is good, but three of the four sentences are unrelated upsell copy about mid-print edits and textures that does not help an agent invoke this tool. The signal-to-noise ratio is poor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 must explain the return shape (what a 'candidate' and 'progress' look like) and the tool's place in the bisect workflow, and it does neither. An agent can guess it is a status read, but cannot know what it gets back or how it relates to the other bisect tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required parameter session_id has 0% schema description coverage, and the description only says 'for a session' without adding format, origin (e.g., from bisect_start or list_bisect_sessions), or validity constraints. It adds essentially no meaning beyond the parameter 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 first sentence states a specific verb and resource: return the current candidate plus progress for a session. However, 'candidate' is undefined jargon (a bisect candidate version of what?) and nothing distinguishes this from the many bisect_* siblings (bisect_start, bisect_good, bisect_bad, bisect_skip, bisect_end). The remaining three quarters of the text describe subscription tiers, not the tool's 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?
There is no statement of when to call this versus list_bisect_sessions, bisect_start, or the good/bad/skip markers, and no mention of prerequisites such as having an active session. The only conditional content ('Requires Kiln Pro') reads as a generic upgrade banner rather than tool-specific guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_endC
End a bisect session without requiring full convergence.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_end
| 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. It omits the things that matter for a session-terminating tool: what happens to an unconverged bisect (is a result committed, discarded, or marked aborted?), whether the call is idempotent, and what the response contains. The remaining text is a pricing advertisement, not behavioural 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 useful information is confined to one front-loaded sentence. The following three lines about Free/Pro tiers, mid-print edits, and an upgrade URL are pure marketing that occupies more space than the actual tool documentation and dilutes the signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 state-changing tool with no annotations and no output schema, the description should explain side effects, session-state requirements, and return behaviour. Instead it spends most of its length on tier promotion, leaving an agent unable to predict what ending the bisect actually does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter (session_id) is never mentioned in the description. It does not say where to obtain a session id (e.g., from list_bisect_sessions or bisect_start) or what format it takes, so the description fails to compensate 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 first sentence states a specific verb and resource: 'End a bisect session'. That is unambiguous and an agent can identify the operation. However, it never contrasts itself with the surrounding bisect siblings (bisect_start, bisect_good, bisect_bad, bisect_current, list_bisect_sessions), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without requiring full convergence' hints at when early termination is acceptable, but the description never says when to call this instead of bisect_good/bisect_bad, nor what state the session must be in. No alternatives and no prerequisites are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_goodC
Mark the current (or explicit) candidate as known-good.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_good
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| version_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 behavioral burden, yet it says nothing about side effects (does marking good advance/terminate the session?), required session state, or errors on a non-existent version. Three of four sentences are Kiln Pro marketing, which is irrelevant to 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 single useful sentence is front-loaded, but it is followed by three lines of pricing/upgrade advertising that do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 bisect-workflow mutation with two undocumented params, no annotations and no output schema, the definition omits session lifecycle, ordering relative to bisect_start/bisect_end, and outcome behavior. An agent could not reliably drive the workflow from this 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?
Schema description coverage is 0%, so the description must compensate. It only hints that version_id is optional and defaults to the current candidate; session_id, the required parameter, is never explained, nor is the relationship between session and candidate.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource: mark a bisect candidate as known-good. It is clear what the tool does, but it never mentions the bisect session or distinguishes itself from near-identical siblings such as bisect_bad and bisect_current.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus bisect_bad/bisect_skip/bisect_end, nor any prerequisite that an active bisect session must exist. The only additional text is promotional upsell copy that carries no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_skipC
Skip the current candidate (uncertain / untested).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_skip
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | ||
| version_id | 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 not meet it: it never says whether skipping advances/shrinks the bisect range, what state the session ends in, or whether version_id scopes the skip to a specific version. Worse, the appended marketing paragraph ('Requires Kiln Pro') introduces licensing/paywall ambiguity that an agent could easily misread as a precondition for calling this 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?
Only the first sentence earns its place; the remaining two sentences are a pricing upsell plus a URL, unrelated to invoking the tool and actively harmful to comprehension. Signal-to-noise is poor and the key behavioral information is absent entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 workflow-mutating tool in a bisect sequence, with no annotations, no output schema, and zero parameter documentation, the description should explain session state effects and parameter meaning. It explains neither and instead spends its length on promotional copy, leaving an agent unable to predict the outcome of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters (session_id required, version_id optional) and the description says nothing about either — not what a session_id identifies, not why version_id is optional or what omitting it means. This is the maximum-coverage-gap case where the description must compensate and 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 first sentence states a specific verb+object ('Skip the current candidate') and the parenthetical 'uncertain / untested' clarifies its role relative to the implied bisect_good/bisect_bad siblings. It is clear enough to distinguish from those, though it never names them explicitly and 'candidate' is only meaningful to an agent already versed in the bisect workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'uncertain / untested' implies the condition for choosing this over bisect_good or bisect_bad, which is genuine guidance. However, no alternative is named and there is no statement of prerequisites (e.g., an active bisect session from bisect_start), so the routing is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bisect_startC
Start a new bisect session — find where something broke.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=bisect_start
| Name | Required | Description | Default |
|---|---|---|---|
| operator | No | ||
| artifact_id | Yes | ||
| target_check | No | ||
| artifact_type | Yes | ||
| bad_version_id | Yes | ||
| good_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely fails: it does not say whether the session persists across calls, what state it creates, how it interacts with bisect_good/bisect_bad/bisect_end, or what auth/tier is actually required. The only behavioral hint ('Requires Kiln Pro') is stated as part of an upgrade pitch rather than as a clear access constraint for this 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 first sentence is well front-loaded, but the remaining two sentences are paywall/marketing content ('unlimited textures and decorations', an upgrade URL) that consumes the bulk of the description without helping the agent invoke the tool. Roughly two-thirds of the text does not earn 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 six-parameter mutation tool with no annotations, no output schema and 0% parameter coverage, the description should at minimum explain the bisect workflow (start → bisect_good/bisect_bad → bisect_end) and define its inputs. It omits all of that and substitutes promotional copy, leaving the agent unable to call 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% across six parameters (operator, artifact_id, artifact_type, target_check, good_version_id, bad_version_id), and the description explains none of them — not even the format of version IDs or what a 'target_check' or 'operator' value looks like. Nothing compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource — 'Start a new bisect session — find where something broke' — which an agent can distinguish from list_bisect_sessions, bisect_end, bisect_good and bisect_bad. However, it never names or contrasts those siblings, and the remainder of the text is unrelated marketing copy that dilutes the signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 start a bisect versus resuming one or recording a result with bisect_good/bisect_bad, nor on prerequisites such as needing good_version_id and bad_version_id up front. The only quasi-usage statement is 'Requires Kiln Pro', which is buried in an upsell block and is ambiguous about whether it applies to this tool or to the advertised features.
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 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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does well: it discloses the OpenSCAD dependency, that output_path defaults to a temp file, the return payload shape, and even the inline 3D stage behavior including automatic decimation of oversized meshes. It does not state failure modes or whether input STLs are modified, which is the remaining 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?
Front-loaded with the core action, then progressively adds operations, prerequisite, use cases, and parameter notes in a scannable list. The bulleted use cases and the stage paragraph are somewhat verbose but each carries information an agent cannot get from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies the return value shape, the temp-file default, and the UI side effect, which is enough to invoke the tool confidently. The only missing piece is error/failure behavior and the ordering semantics for intersection beyond 'overlapping region'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only output_path is documented in the schema), so the description must compensate — and it does: it gives the three legal operation values with their meanings, states file_paths requires a minimum of two entries, and explains the default for output_path. Enum values are conveyed in prose rather than schema, which is slightly weaker but still effective.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Perform a CSG boolean operation on two or more STL meshes') and then enumerates the three supported operations with their exact semantics (union combines, difference subtracts from first, intersection keeps overlap). This lets an agent distinguish it from siblings like merge_stl or compose_models without reading any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides three concrete use cases (drill a hole, combine parts into one printable body, build complex shapes from primitives) and states the hard prerequisite that OpenSCAD must be installed. It stops short of naming alternatives such as merge_stl and when to prefer them, so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_modelsARead-only
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 | Default: 1. | |
| category | No | ||
| per_page | No | Default: 10. | |
| browse_type | No | Default: "popular". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds return-shape context and the per_page max, but omits operational details such as rate limits, authentication, or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The summary is front-loaded, followed by a compact Args block and a Returns note. Every sentence carries useful information, and constraints are placed next to the relevant 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?
For a tool with no output schema, the description gives enough information about parameters and return summaries, while annotations cover the safety profile. Additional detail on ordering and pagination totals would help, but is 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?
The description explains all four parameters beyond the schema: allowed browse_type values, 1-based page numbering, per_page default and max, and category slug examples with a cross-reference to list_categories. This compensates well for the 75% 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 and resource: browse Thingiverse models by popularity, recency, or category. It references search_models for return similarity but does not clearly differentiate when to choose browse over search, so sibling distinction is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the browse criteria, and list_categories is named for resolving category slugs. However, there is no explicit guidance on when to use browse_models versus search_models or search_all_models, 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.
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?
No annotations, so the description carries the full burden. It usefully discloses the prompt-length budgets per backend (100K vs 600 chars) and what the prompt is grounded in, but never says what is actually returned (a prompt string?), whether it performs any lookup against printer/material catalogs, or what happens with an unknown printer_model.
Agents need to know what a tool does to the world before calling 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 capability, then parameter notes, with no filler sentences. The comparative 'best pre-generation tool' clause is the only soft claim, but it is short and read early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with no output schema and no annotations, the description covers inputs well but omits the return value entirely — an agent cannot tell whether it receives a plain prompt string, a structured object, or a token-budget report. Given no output schema exists, that gap should have been filled in prose.
Complex tools with many parameters or behaviors need more documentation. Simple 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 all four parameters are explained with examples ('petg', 'bambu_a1'), and provider gets genuine semantics — it controls the prompt length budget, with two concrete backend examples. This meaningfully compensates for the empty schema, though the interaction between printer_model/material and the injected constraints is left undescribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build a design-aware generation prompt') plus the scope ('original 3D creation') and what gets injected (manufacturing constraints, printer-fit limits, material guidance). It does not name the closely related siblings build_parametric_prompt or improve_generation_prompt, so an agent must infer the boundary 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?
Frames itself as 'the best pre-generation tool for original designs,' which implies when to reach for it, and gives guidance for the provider parameter ('use provider="openscad" … omit for the default limit'). But there is no explicit when-not or named alternative despite several overlapping siblings, leaving the routing decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_material_overridesA
The slicer settings a material gets on a printer: temperatures, melt rate, cooling.
Every slicing door applies these itself when it is told the material --
``material=`` on ``slice_model``, ``slice_and_print``,
``reslice_with_overrides``, ``run_quick_print``, ``run_reslice_and_print``
and ``kiln slice`` -- so naming the material is all a slice needs. This
tool shows what that will be and why, from the same resolver
(:mod:`kiln.slicer_material`): a product's own figures when you name one
(``"bambu_tpu_95a"``), else Kiln's settings for the material on this
printer, else the middle of the material's range, never above what the
printer is rated for. The melt-rate ceiling
(``filament_max_volumetric_speed``) slows every feature of the print to
suit the material, the outer wall and the first layer included.
Its ``overrides`` can still be passed to ``reslice_with_overrides`` to
pin them; a setting passed that way is the caller's, and a slice leaves
it alone.
Example::
build_material_overrides("tpu", "bambu_a1")
# overrides: temperature 225, bed_temperature 50, max_fan_speed 50, ...
Args:
material_id: Material (``"petg"``, ``"tpu"``, ``"PA-CF"``) or a
product (``"bambu_tpu_95a"``).
printer_id: Printer model, for its own settings and limits.
Omitted, the material's own.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | No | ||
| material_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does a good job: it discloses the resolution precedence (product figures, else Kiln's per-printer material settings, else the middle of the material's range), the hard clamp 'never above what the printer is rated for', and that the melt-rate ceiling slows every feature including outer wall and first layer. What is missing is an explicit statement that this is a side-effect-free computation with no printer interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and the Args block and example are well-placed, but the middle paragraph spends a lot of prose re-explaining that slicers already apply these settings, which mostly duplicates the usage point made in the same paragraph. It is information-dense but longer than a two-parameter read tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description must supply everything, and it nearly does: it gives the resolution algorithm, the clamping guarantee, and a sample return shape (temperature 225, bed_temperature 50, max_fan_speed 50). The remaining gap is the exact return envelope -- whether it is a bare mapping or wrapped -- which an agent must infer from the example.
Complex tools with many parameters or behaviors need more documentation. Simple 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 Args section does real work: material_id accepts either a bare material ("petg", "tpu", "PA-CF") or a product ("bambu_tpu_95a"), and printer_id is described as 'printer model, for its own settings and limits', with the omitted case falling back to the material's own values. That covers both parameters meaningfully, though it says nothing about behavior on an unknown material or printer id.
Input schemas describe structure but not intent. Descriptions should explain non-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 names the resource precisely (slicer settings for a material on a printer: temperatures, melt rate, cooling) and the example output confirms it returns an overrides map. What it does not do is distinguish itself from near-siblings such as get_material_slicing_profile, resolve_filament_profile or predict_print_settings, so an agent must infer the difference. Purpose is clear, sibling differentiation is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tells the agent when NOT to call it: every slicing door (slice_model, slice_and_print, reslice_with_overrides, run_quick_print, kiln slice) resolves these itself once the material is named. It also states the follow-on use case -- pass the returned overrides to reslice_with_overrides to pin them. That is clear routing, though no exclusion versus the other material-profile lookup tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_organic_meshC
Build a freeform/organic mesh from a smooth-blended primitive recipe. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
INLINE 3D STAGE: on success this tool 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 | No | Default: false. | |
| recipe | Yes | ||
| brief_id | No | Default: "". | |
| output_dir | No | Default: "". | |
| output_path | No | Default: "". | |
| reference_images | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description does disclose real behavior: it opens an interactive 3D stage, oversized meshes are auto-decimated, and non-panel hosts get a browser stage link. However it says nothing about whether the mesh is written to disk (the output_dir/output_path parameters imply file mutation), nor about failure modes or what happens on invalid recipes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The inline-3D-stage information is stated twice (in the opening sentence and again in the 'INLINE 3D STAGE' paragraph), and the 'MAKE DOORS' block is off-topic for this tool. The actual purpose statement is a single sentence buried ahead of 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 tool with 6 parameters, a required nested free-form object, no annotations and no output schema, the description leaves the core call contract and the return/preview behavior largely unexplained. It spends its length on host-panel plumbing instead of what an agent needs 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 67%, but the covered descriptions are vacuous ('Default: false.', 'Default: ""'), and the one required parameter, `recipe`, is a free-form nested object with additionalProperties:true and zero documentation. The description never explains the recipe shape, what `parts` toggles, or what reference_images are used for, so an agent cannot construct a valid call from 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 first sentence gives a specific verb and resource: 'Build a freeform/organic mesh from a smooth-blended primitive recipe'. It is reasonably distinguishable from parametric siblings like compose_part_from_primitives, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' paragraph talks about design_session not being installed and claims compile_scad is 'the make → preview → iterate loop', which redirects attention away from this tool rather than explaining when to call build_organic_mesh. No conditions for choosing it over compose_part_from_primitives, compose_models, or generate_model are given.
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, so the description carries the full burden; it discloses the return value ('an enhanced prompt with OpenSCAD-specific instructions') and the qualities it injects (named variables, descriptive comments, material-aware design limits), which implicitly signals this tool does not itself generate code. It stops short of saying the output prompt must be fed to a downstream generator (e.g. generate_model) or whether it is side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then return value, then the disambiguation sentence, then args — a sensible order. The middle list of code qualities is slightly verbose but each item tells the agent what the generated prompt will enforce.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing what the returned prompt contains. For a 3-parameter prompt-construction tool with no annotations this is nearly sufficient; the only gap is guidance on what to do with the returned prompt next.
Complex tools with many parameters or behaviors need more documentation. Simple 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 and largely does: all three parameters are named with meaning and examples ('petg', 'bambu_a1'), and 'requirements' is defined as a natural-language description of the part. The 'printer_model ID' format is only conveyed by example, leaving no stated list or lookup 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?
States a specific verb and artifact: 'Build a prompt optimized for parametric OpenSCAD code generation,' and immediately names the sibling it competes with (build_generation_prompt). An agent can tell this apart from build_generation_prompt and from code tools like compile_scad without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rule: 'Use this instead of build_generation_prompt when you want the AI to generate editable OpenSCAD code rather than a mesh file.' That is a clear when-to-use plus a named alternative and the condition that selects between them.
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 the full behavioral burden. It implies a write/persist operation but says nothing about whether an existing cache entry is replaced, what storage or size limits apply, whether a failed cache is rolled back, or what state the cached entry ends up in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the Args block is terse. The Args list largely duplicates the schema titles, which is mild redundancy rather than bloat, so the description stays 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?
With no annotations, no output schema, and 0% schema coverage on three parameters, the description must carry the whole load and does not. It omits overwrite semantics, supported file formats, failure behavior, and any indication of the cached entry's state or how it is later retrieved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 three parameters are only glossed with near-restatements of their titles ('label: Human-readable label for the cached design', 'file_path: Path to the design file to cache'). 'material: Intended material' adds a sliver of meaning (intended vs. measured), but no format, accepted values, or default behavior is clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (cache a 3D design file) plus a stated benefit (faster access, version tracking). It does not differentiate itself from clearly related siblings such as cache_model, cache_design_with_source, or list_cached_designs, which an agent must disambiguate unaided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says when to cache vs. use cache_model / cache_design_with_source, whether re-caching an already-cached file is intended, or what prerequisites must hold before caching. The agent gets no routing information at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_design_with_sourceA
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 | Default: "openscad". | |
| file_path | Yes | ||
| scad_source | Yes | ||
| filament_type | No | ||
| generation_prompt | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does disclose the persistence effect and what metadata gets attached, which is useful beyond a bare 'store' claim. It remains silent on overwrite/dedup behavior for a repeated file_path, required permissions, and what the call returns, which matters for a write-path tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence states the action and effect, followed by a compact Args block that adds real semantic detail rather than restating schema titles. No filler or hedging 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?
For a 6-parameter mutation with no annotations and no output schema, the description covers inputs and purpose but omits what happens after caching (is an ID returned? how is it later retrieved via get_cached_design?) and any failure or duplicate-handling behavior. Adequate, but the agent is left guessing about post-call state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it largely does: every one of the six parameters is given meaning, including file format examples for file_path, provider examples ("openscad", "gemini"), and filament_type examples ("PLA", "PETG"). It does not clarify which two are required or what the empty-string default for generation_prompt implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: caching a design file together with its parametric source, and enumerates exactly what is persisted (STL/3MF file, OpenSCAD source, generation prompt). It does not explicitly differentiate itself from nearby siblings like cache_design or cache_model, so the agent must infer that this variant is the source-preserving one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The rationale 'so the design can be re-generated or tweaked later' implies when this is appropriate (after generating a design from OpenSCAD), but there is no explicit directive about when to prefer this over cache_design or cache_model, and no stated prerequisites or exclusions.
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?
With no annotations, the description carries the full behavioral burden. It usefully discloses the cache directory, metadata persistence, and SHA-256 duplicate detection, but it does not say what happens when a duplicate is found, whether the operation is idempotent, what errors can occur, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and structured with an Args section appropriate for seven parameters. Most sentences earn their place, though the docstring-style formatting 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?
It covers purpose, storage behavior, duplicate detection, and all parameter semantics, which is substantial. However, with no output schema and no annotations, it omits return values, duplicate-resolution behavior, and error conditions that an agent would need before safely invoking a cache mutation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 documents all seven parameters, including source examples, source_id meaning, comma-separated tag format, dimensions JSON example, and that metadata is optional. This substantially compensates for 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 first sentence gives a specific verb and resource: 'Add a 3D model file to the local cache.' It also scopes the intent to 'reuse across jobs' and names the cache location, making it distinguishable from cache_design and the read/delete/list cache 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 usage via 'for reuse across jobs,' but it does not explicitly say when to choose this over cache_design, cache_design_with_source, import_external_mesh, or upload_file. No exclusions or alternative-routing guidance is provided.
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?
With no annotations, the description carries the load well: it discloses the delivery channel, the idle requirement, which option subsets each firmware family supports, and the default when options are omitted. It stops short of describing what a call returns, how long routines take, or failure modes, which is the remaining 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 purpose and alternative are front-loaded, then options are bulleted for scanability. Slightly verbose in the middle paragraph about transports, but every line is actionable information rather than 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 one-optional-param command tool with no annotations and no output schema, the definition covers selection, preconditions, valid values, defaults, and compatibility. It does not describe return values or expected duration, which is the only meaningful omission.
Complex tools with many parameters or behaviors need more documentation. Simple 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 types options only as string[], so the description must compensate — and it does, enumerating all four valid values with one-line meanings, stating the default (bed leveling when omitted), and noting printer-specific support. This is materially 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?
States a specific verb (send calibration commands) and resource (printer adapter), plus the transport layer (MQTT for Bambu, G-code for OctoPrint/Moonraker). It explicitly distinguishes itself from the sibling run_calibrate, which orchestrates the guided 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?
Names the alternative (run_calibrate) and the condition that selects it (full guided pipeline vs. raw commands), plus the hard precondition that the printer must be idle and cannot be printing. Per-printer capability differences are spelled out, so an agent can decide whether to call at all.
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 | Default: false. | |
| expected_chamber_target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description carries the full load well: it discloses transport selection per firmware, the irreversibility of cancel (no resume unless a resume-mode 3MF is pre-staged), Bambu's default cool-down-on-cancel, and that chamber restore is a best-effort raw M141. It even explains known firmware cache quirks (bed target reading 0 after a long pause) that change caller 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?
Purpose and precondition are correctly front-loaded, but the printer_name doc wanders into tier/licensing commentary ("owning more than one printer is free at every tier... control of a hot machine is never something a licence takes away") that adds no invocation guidance. The parameter blocks are also formatted as prose rather than tight one-liners, inflating an otherwise simple cancel 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 destructive, argument-light action with no output schema and no annotations, the description supplies everything needed to call it safely: precondition, transport behavior, irreversibility, per-parameter defaults and overrides, and pointers to the resume-tooling siblings. Nothing required to avoid a wrong call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just "Default: false." on preserve_temperatures), so the description must compensate and does: every one of the five parameters gets purpose, default, and override semantics. The expected_* overrides are explained with the exact failure mode they exist to fix (MQTT cache returning 0 after pause), which is meaning the schema cannot convey.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ("Cancel the currently running print job") and adds that the command is dispatched automatically over MQTT (Bambu) or REST (OctoPrint/Moonraker). It never names the closely related siblings (pause_print, emergency_stop, cancel_queued_job, fleet_cancel), so the agent must infer the boundary 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?
The precondition is explicit: "The printer must have an active job (printing or paused)." Usage of preserve_temperatures is also given a concrete trigger scenario (swap file mid-print, hold bed adhesion across cancel-then-start). What's absent is any exclusion or alternative-routing guidance versus pause/emergency-stop/queued-job cancellation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_print_recoveryC
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 | 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 behavioral burden. It indicates a mutation by saying 'cancel' and limits the target to an 'active' session, but does not state whether cancellation is reversible, what happens to recovery data, what permissions are needed, or what the result is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in one clear sentence and then documents arguments compactly. The structure is efficient, though the argument descriptions are minimal and partly restate field names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 state-changing cancellation tool with no annotations, no output schema, and incomplete parameter documentation, the description is too thin. It omits important context such as effects on recovery state, preconditions, irreversibility, and expected 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 50%. The description clarifies that session_id identifies the session to cancel and that reason is optional, which adds some meaning, but session_id remains heavily reliant on schema title and reason adds little beyond 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?
States a specific verb and resource: cancel an active recovery session. It is clear what the tool does, though it does not explicitly distinguish itself from recovery siblings such as complete_print_recovery or confirm_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?
Only implies that it is used to cancel an active recovery session. It gives no guidance on when to cancel versus complete, confirm, retry, or otherwise manage a recovery session, and no prerequisites are stated.
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 | Default: false. | |
| 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 and does: it discloses that only QUEUED jobs are affected, that each status is re-checked immediately before cancelling so started/finished jobs are skipped, that JOB_CANCELLED events are emitted, and that running prints are never interrupted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then bullets for params and a safety paragraph. Every sentence earns its place, though the return-value sentence is slightly dense and could be tightened; overall well structured and appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with no output schema and no annotations needs safety, scope, and result-shape disclosure, and the description provides all three, including the exact return keys and the invariant that count equals len(cancelled).
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% (dry_run says merely 'Default: false', printer_name is undocumented), and the description compensates fully: printer_name limits the sweep to one printer and omission clears all, while dry_run previews the exact set with no changes.
Input schemas describe structure but not intent. Descriptions should explain 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+scope: cancel ALL queued print jobs in one call. It explicitly contrasts with the sibling cancel_queued_job (single job by id) and cancel_print (running job), so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names alternatives and selection conditions: use this to clear a backed-up queue in bulk, use cancel_queued_job for one job, use cancel_print for the running job. It also recommends running dry_run=True first on large queues, which is actionable usage 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 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 | Default: 256.0. | |
| bed_y_mm | No | Default: 256.0. | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the mutation ('Translates the model'), the overwrite risk ('output_path defaults to overwriting input'), the return shape, plus two non-obvious side effects — automatic decimation of oversized meshes for the stage and the 3D stage panel opening on success. Missing only permission or failure-mode notes.
Agents need to know what a tool does to the 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 one-line summary, then behaviors, then params — good ordering. It loses a little to docstring artifacts ('Translates' indentation, ':param'/':returns' markup) and a fairly long trailing paragraph about the inline stage, though that paragraph is genuinely 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?
For a 5-param mesh mutation with no annotations and no output schema, the definition covers what changes on disk, where the result goes, how bed size is resolved, and what the user sees afterward. An agent has everything needed to call it without surprise.
Complex tools with many parameters or behaviors need more documentation. Simple 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 80%, but the description still adds meaning the schema lacks: it explains that printer_id causes printer intelligence to supply the bed size (schema only says default "") and that output_path overwrites the input by default. Defaults for bed_x_mm/bed_y_mm are already in the schema, so those lines are redundant rather than additive.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb plus resource and the exact geometric outcome ('Center a mesh on the build plate and place at z=0'), and the body restates it as 'lowest point touching the build plate'. It is unambiguous what the tool does, but it never names how it differs from near-siblings like auto_orient_model 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?
Usage is only implied by the purpose: use it when a mesh needs to be recentered on the bed. There is no explicit when-to-use/when-not clause and no routing to alternatives (auto_orient_model, arrange_parts_on_plate, split_mesh_to_fit), which matters in a catalog this crowded.
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?
With no annotations, the description carries the full burden and does well: it discloses that the check reads the current chamber temperature, evaluates material-specific limits with a printer-max fallback, and that 'all checks are local — no data leaves the machine.' It does not say what the result looks like (a verdict, a list of warnings, a boolean), which is a gap since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, behavior follows, then a scannable bullet list of failure modes, ending with the local-only guarantee and the argument note. The 'Args:' block duplicates what a schema normally holds, but it is short and additive rather than 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?
For a single optional-parameter, read-only check with no annotations and no output schema, the description covers what is measured, what thresholds are applied, what conditions are flagged, and that the operation is offline. The only missing piece an agent would want is the shape of the response it gets back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: 'material' is explained as a filament type with concrete examples ("PLA", "ABS", "PETG") plus the explicit null-case behavior — 'If not provided, only checks against printer max.' That is meaningfully more than the anyOf[string, null] 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 first sentence names a specific verb and resource — check the printer's chamber temperature against a material's thermal limits — which is far more precise than the tool name alone. It does not, however, differentiate itself from nearby siblings such as check_material_environment or check_material_sufficiency, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The warnings list implicitly signals when the tool matters (before printing PLA in a hot chamber, ABS/ASA in a cold one, after a high-temp print), so usage is inferable. But there is no explicit 'use this when / use X instead' statement, and no alternatives are named, so the agent must reason about routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_assembly_clearancesB
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 | Default: 0.2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (a list of clearance check results indicating pass/fail per interface), which is useful. However, it does not address permissions, whether it is strictly read-only, or failure modes, leaving gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a return-value note and a compact Args block. There is little waste, though the Args block mostly repeats schema-level 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?
With no output schema, the description's note about the returned results list is necessary and present. With no annotations, it should also cover safety/read semantics, and the assembly_json format is not described, so it 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?
Schema coverage is 50%: assembly_json has no schema description, and the description compensates by explaining it as 'JSON string of the current assembly state.' default_clearance_mm is further clarified (used when an interface does not specify one, default 0.2). The assembly_json structure remains unspecified, so the description adds only partial 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 states a specific verb and resource: 'Check clearances between all mating parts in an assembly.' This distinguishes it from assembly siblings such as add_assembly_interface, validate_assembly, and check_assembly_stands. It is clear but does not explicitly name the alternatives it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus related tools (validate_assembly, check_assembly_stands, tolerance_stack_analysis, compute_iso_fit). No prerequisites or exclusions are stated, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_assembly_standsC
Judge how an object LIVES and whether it STANDS — from geometry and the words, with every assumption said out loud.
| Name | Required | Description | Default |
|---|---|---|---|
| pose | No | Default: "auto". | |
| intent | No | Default: "". | |
| gravity | No | ||
| lives_as | No | Default: "". | |
| design_id | No | Default: "". | |
| materials | No | ||
| part_names | No | ||
| part_paths | Yes | ||
| pin_recipes | No | ||
| template_id | No | Default: "". | |
| product_type | No | Default: "". | |
| carried_at_mm | No | ||
| carried_mass_g | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It vaguely promises that 'every assumption said out loud' will be surfaced, which is a useful hint, but it does not state whether the tool is read-only, what inputs drive the judgment, what the output contains, or what limitations apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence, so length is not the issue, but the front-loaded verb and metaphor ('Judge how an object LIVES') prioritize style over clarity. The sentence is concise yet under-informative rather than wastefully long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 13-parameter structural or assembly-stability tool with no annotations and no output schema, the description is far too sparse. It does not explain required inputs, optional context such as gravity or materials, expected assumptions, or what a result means.
Complex tools with many parameters or behaviors need more documentation. 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 13 parameters at 54% schema description coverage, and most schema descriptions are only defaults. The description does not explain what parameters like pose, gravity, intent, lives_as, materials, pin_recipes, or carried_mass_g mean in the context of the stability judgment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Judge how an object LIVES and whether it STANDS', which hints at stability or structural evaluation but uses metaphorical and capitalized terms that obscure the actual operation. It does not clearly distinguish this tool from siblings like validate_assembly, check_assembly_clearances, analyze_frame_bracing, or estimate_structural_load.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus related assembly-validation or structural-analysis siblings. It mentions 'geometry and the words' and 'every assumption said out loud' but gives no context, prerequisites, or exclusions for selecting it.
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 | Default: 0.0. | |
| material | No | Default: "". | |
| tool_name | Yes | ||
| tool_temp | No | Default: 0.0. | |
| safety_level | Yes | ||
| estimated_time_seconds | No | Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It explains that a decision is returned and that material, time, and temperatures may influence it, but it does not disclose the possible decision values, whether the operation has side effects, or what happens on denial.
Agents need to know what a tool does to the world before calling 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 tight sentences with the purpose front-loaded and the usage rule immediately after. Every sentence contributes useful information without 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 tool has six parameters, no annotations, and no output schema, so the description must carry most of the context. It covers purpose and inputs adequately but omits the decision format, valid safety levels, and failure behavior, leaving meaningful gaps for correct 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 description maps the parameters meaningfully: tool name, safety level, and optional operation context covering material, time, and temperatures. It adds purpose beyond the schema, though it does not explain valid safety_level values or clarify which temperature maps to bed versus 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 states a specific verb and decision resource: checking whether the agent may execute a tool without human confirmation. It is clear enough to distinguish from a generic autonomy-level getter, but it does not explicitly name sibling tools like get_autonomy_level or confirm_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?
It gives a concrete usage rule: call this before confirm-level tools to decide whether to proceed or ask. That is clear guidance, though it does not state when not to use it or name alternative tools for related decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_chemical_resistanceB
Will a printed part survive ? -- cited, plain-English, tier-gated.
Free door, tiered answer — Free: Warnings — always free · Pro: Warnings · Business: Verdicts — solvents, fuels, oils, bleach, UV, weather · Enterprise: + Safety-critical grade — concentrated acids, caustics, food contact. Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_chemical_resistance
| Name | Required | Description | Default |
|---|---|---|---|
| reagent | Yes | ||
| material | Yes | ||
| show_math | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It does disclose a genuinely important trait that structured data does not: results are tier-gated, so lower tiers return warnings only rather than verdicts. It omits auth prerequisites beyond tier, citation/liability caveats for safety-critical cases, and what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead question is well front-loaded, but two of the three sentences are a pricing ladder and an upgrade URL rather than tool behavior. The tier breakdown is partly useful, partly upsell, and could be compressed to one line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no-annotation, no-output-schema tool, the description leaves key gaps: accepted value formats, what a 'warning' versus a 'verdict' actually looks like in the response, and whether low-tier calls still return something usable. Only the tier hierarchy 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 is only 33% (only show_math is documented), and the description adds nothing about the two required parameters. It never says whether material expects a family name, a trade name, or a printer profile, and gives no reagent naming conventions (generic solvent vs brand), which is the most likely source of failed calls.
Input schemas describe structure but not intent. Descriptions should explain non-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 states the exact question the tool answers (material + reagent -> chemical compatibility) with a concrete verb-ish framing that an agent can map to the call. It is distinguishable from prose-adjacent siblings like get_material_warnings or check_material_environment, though the tier/pricing sentences dilute the signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Invocation is implied by 'Will a printed <material> part survive <reagent>?', but it never says when to prefer this over compare_material_properties, answer_material_question, or get_material_warnings. The only routing guidance is about pricing tiers, not about alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_design_regressionC
Check if the latest version of a design is printing worse.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_design_regression
| Name | Required | Description | Default |
|---|---|---|---|
| version_ids | 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 does disclose one real constraint – 'Requires Kiln Pro' – but says nothing about what 'printing worse' means (threshold, metrics, comparison basis), whether it is read-only, or what it returns. Three of the four lines are promotional upsell rather than 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?
Only the first line serves the calling agent; the remaining lines are a pricing pitch and upgrade URL. The useful purpose statement is front-loaded, but the majority of the text is noise that dilutes it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, an agent needs at least what regression means, what the result conveys, and which versions to pass. None of this is covered; the description is dominated by entitlement/pricing copy instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required version_ids parameter, so the description must compensate and does not. It mentions 'the latest version' singular, which arguably conflicts with an array of version IDs and gives no format or sourcing hints (e.g., from list_design_versions).
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource: check whether a design version is printing worse. It distinguishes itself reasonably from siblings like get_regression_alerts and design_version_health, though it says 'the latest version' (singular) while the parameter is version_ids (array), creating mild 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 when-to-use guidance, no prerequisites for invoking, and no routing to alternatives such as compare_design_versions or get_regression_alerts. An agent has to guess whether this supersedes the other regression-related siblings.
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_magnet_designC
Check a proposed printed magnet design for hidden failure modes.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_magnet_design
| Name | Required | Description | Default |
|---|---|---|---|
| coating | No | Default: "". | |
| use_case | Yes | ||
| load_mode | No | Default: "pull". | |
| show_math | No | Default: false. | |
| commercial | No | Default: false. | |
| max_temp_c | No | ||
| environment | No | Default: "indoor". | |
| grade_class | No | Default: "". | |
| has_air_gap | No | Default: false. | |
| adhesive_only | No | Default: false. | |
| body_adjacent | No | Default: false. | |
| magnet_family | No | Default: "". | |
| child_accessible | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely falls short: it never states whether the check mutates anything, what inputs it requires to be meaningful, or what a result looks like. The tier breakdown ('Free: Warnings · Pro: Sizing and fit · Business: + Per-machine fit, validation tests and QC plans') is genuine behavioral disclosure about how much answer you get back, which is worth some credit, but it is framed as a sales ladder rather than operational 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 useful content is one front-loaded sentence; everything after it is pricing/upgrade marketing with a tracking URL. That material partly serves a purpose (tier-gated output depth) but is verbose and repeated in link form, and it crowds out information an agent actually needs to invoke 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?
Thirteen parameters, no annotations, no output schema, and the description explains neither the failure modes it detects nor the shape of the warnings it returns. For a tool of this input complexity, the description leaves the agent guessing about what a call produces and how to interpret a 'warning'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 85%, so per the baseline the schema is nominally responsible for the 13 parameters — though most of those descriptions are just 'Default: ""' stubs. The description contributes nothing explicit about use_case, load_mode, environment, child_accessible, or max_temp_c, only indirectly implying concerns like child safety and hardware fit through the tier copy.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — checking a proposed printed magnet design for hidden failure modes — which is far more informative than the name alone. It does not, however, distinguish this from nearby siblings such as recommend_magnet_for_product, generate_magnet_qc_plan, or review_magnet_supplier_packet, so an agent cannot tell which of those to pick from this text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives, no prerequisites (e.g. must a design or magnet spec already exist?), and no exclusions. The only conditional content is commercial tier gating, which describes output depth, not invocation guidance.
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, and optionally whether it meets the rules the part must meet.
Args:
material: Material ID from the design knowledge base.
environment: Natural language environment description.
requirements: Optional rules to check the material against
before printing: any of ``food_safe``, ``reach``,
``rohs``, ``flame_retardant``, ``uv``. The answer comes
back under ``rule_checks``: the material's warnings at
every tier, and from Kiln Business a meets / does-not-meet
verdict with the reason for each requirement
(https://kiln3d.com/pricing). When the check cannot be
made, ``rule_checks.checked`` is false and no
requirement is called met.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| environment | Yes | ||
| requirements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does useful work: it explains that requirements results appear under rule_checks, that warnings are returned by tier, that Kiln Business provides meets/does-not-meet verdicts, and that checked=false means no requirement is called met. It does not discuss permissions, rate limits, or the exact shape of the primary compatibility result, but it adds substantial 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 front-loaded with the core purpose and then structured as Args. It is somewhat long, especially the requirements paragraph and pricing URL, but the detail is relevant and no major sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema and no annotations, the description covers input semantics and important requirement-check behavior. It stops short of explaining the primary compatibility result shape, but otherwise gives enough context 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 description coverage is 0%, so the description must carry parameter meaning. It does: material is a Material ID from the design knowledge base, environment is a natural language description, and requirements accepts a clearly enumerated set of rule names with an explanation of how each is evaluated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (check) and resource (material compatibility with an environment), plus an optional requirements check. It is clear what the tool does, though it does not explicitly distinguish itself from many sibling material-check tools such as check_printer_material_support or check_chemical_resistance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: check compatibility and optionally validate requirements before printing. The description gives context for the optional requirements parameter but does not say when to choose this tool over 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.
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?
With no annotations, the description carries the full behavioral burden and does so well: it discloses that the result is based on Kiln's material record rather than a sensor, enumerates the three possible `match` outcomes, and explains the `sensed` flag including the warning not to tell the user material is confirmed when `sensed` is false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by the critical record-versus-sensor distinction and outcome semantics. The Args section is compact and every sentence contributes useful information for interpreting or invoking 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?
For a simple two-parameter read/check tool with no output schema and no annotations, the description is complete enough: it covers purpose, return-state interpretation, the `sensed` caveat, and both parameters. Nothing essential to correct invocation or interpretation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document parameters, and it does: `expected_material` is defined as the material the print file requires, and `printer_name` is described as the target printer with the important omission behavior of resolving the active printer. This adds meaning well 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 states a specific verb and resource: checking whether Kiln's recorded material matches what a print expects. It also distinguishes the record-oriented purpose from sensor readings and from the value typed via `set_material`, so an agent can separate it from generic material-lookup 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?
It gives clear usage context by explaining that `match: false` is worth stopping for, `match: null` needs attention, and `sensed: false` means the material should not be reported as confirmed. It does not explicitly name alternative sibling tools or state when-not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_material_sufficiencyA
Check if a printer has enough material for a print job.
When material is insufficient, says what the person can do with
what they have: a spool on the shelf, a pause-and-swap. Only
when nothing they have will do does it end with one offer of
help finding a filament. Relay that offer as written and never
suggest buying filament unless the person asks or says yes;
then use ``find_closest_filaments``. 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 provided, the description carries the full behavioral burden and does so richly. It discloses how insufficient-material cases are handled, the exact offer-relay policy, the constraint against upselling, the follow-up path to find_closest_filaments, and the Kiln Business tier boundary for fleet-wide suggestions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the following sentences all carry operational or policy value. The Args block is compact and appropriate for a three-parameter 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 without annotations or an output schema, the description covers the key interaction policy and basic parameter meanings. It still does not describe what a successful sufficient-material response looks like or how sufficiency is operationally determined.
Complex tools with many parameters or behaviors need more documentation. Simple 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 document the parameters, and its Args block does name all three with basic meanings. However, material_type lacks accepted values and printer_name format is unspecified, leaving meaningful gaps beyond the minimum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: checking whether a named printer has enough material for a print job. It distinguishes this from filament-finding via find_closest_filaments, but does not explicitly differentiate from other material-status 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?
It gives explicit routing: use find_closest_filaments only after the person asks or accepts, and never suggest buying filament unless prompted. It also explains that fleet-wide suggestions require Kiln Business while the local sufficiency check works on every tier, though it does not compare against other material-check tools.
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.
JUST PAIRED, AND THE TIER LOOKS STALE? Try this order, and do
it yourself rather than handing the user a checklist:
1. Call ``restart_server``. This server caches what it
resolved at startup, so a pairing that happened after it
launched may simply not be visible to it yet. A restart
re-execs in place and is invisible to the user.
2. Call this tool again.
3. Only if the tier is STILL stale, ask the user to fully
quit and reopen their AI app. That is the one step they
have to do by hand, so it is the last resort, not the
first suggestion — and MCP clients differ (some reconnect
to a restarted server on their own, some do not).
Report the tier plainly whatever it turns out to be, Free
included: pairing is not a purchase, and a free account that
paired successfully must not be told it failed.
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?
With no annotations, the description carries the full burden and meets it: it discloses that the tool takes no arguments, is free-tier safe, requires no license, and is available to every user. It also reveals the internal resolution order (env var → license file → OAuth token → cached entitlement → free fallback) and warns that the server caches the tier resolved at startup, which explains stale results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded: the purpose is in sentence one, usage examples next, mechanics and troubleshooting after. It is somewhat long and partially redundant, listing the return fields once in the bulleted walk-through and again in a 'Returns:' block with overlapping keys (success, tier_rank added later).
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 must document returns — and it does, naming effective_tier, resolution_chain, matched_source, agent_summary, tier_rank, pricing_url. It additionally provides interpretation guidance for common (effective_tier, matched_source) combinations, which an agent would otherwise have to guess.
Complex tools with many parameters or behaviors need more documentation. 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, so there is nothing to disambiguate; the description correctly states 'No arguments.' Baseline is 4 for a 0-param tool, and the description adds no parameter-level confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence gives a specific verb+resource ('Check the user's current Kiln subscription tier') plus the enumeration of possible values and the diagnostic angle ('explain WHY they're on it'). It is clearly distinguished from the neighboring license/plan tools (license_status, license_status_live, activate_license) by being the read-only explanation 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?
Provides an explicit trigger list of natural-language phrasings ('what tier am I on', 'why does it say I need Pro', 'I just paid but I'm still seeing free tier') covering both status and paywall-confusion cases. It also gives an ordered escalation path with restart_server and explicitly defers the manual app-restart to last resort.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_nozzle_capacity_for_printC
Pre-print check — will the nozzle survive this print's wear cost?
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes | ||
| planned_grams | Yes | ||
| printer_model | No | Default: "". | |
| filament_material | No | Default: "". |
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, yet it discloses almost nothing. 'Check' weakly implies a read-only operation, but there is no statement about what is evaluated, what threshold or verdict is produced, or what to do with the result. The question format adds flavor, not behavioral facts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but a single rhetorical question is under-specification rather than disciplined concision. There is no front-loaded statement of action or return value for the agent to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description should explain what the check returns (a pass/fail? remaining capacity? wear cost estimate?) and how the optional model/material inputs affect the verdict. None of that is present, leaving the agent unable to predict or 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?
Schema coverage is 50%, and the two required parameters (printer_id, planned_grams) have no schema descriptions at all, while printer_model and filament_material only say 'Default: ""'. The phrase 'this print's wear cost' hints at planned_grams but adds no meaning about units, ranges, or why printer_model/filament_material matter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Pre-print check — will the nozzle survive this print's wear cost?' conveys loosely that the tool assesses nozzle wear capacity against a planned print, but the verb and outcome are rhetorical rather than stated. It does not differentiate from close siblings such as nozzle_wear_status, get_nozzle_state, preflight_check, or may_i_print, which an agent must distinguish between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pre-print check' implies timing (before starting a job) but gives no explicit when-to-use, when-not-to-use, or named alternative. With many overlapping siblings (nozzle_wear_status, get_community_wear_baseline, abrasive_escalation, check_printer_health), the agent gets no routing guidance.
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_power_loss_recoveryC
Assess how to recover an interrupted print after a power loss (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_power_loss_recovery
| Name | Required | Description | Default |
|---|---|---|---|
| probe_xy | No | ||
| failure_id | No | Default: "". | |
| gcode_path | No | Default: "". | |
| print_bbox | No | ||
| printer_name | No | Default: "". | |
| bare_confirmed | No | Default: false. | |
| moonraker_config | No | ||
| probe_clearance_mm | No | Default: 5.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it says nothing about whether this reads printer state, performs analysis or mutates recovery state, what inputs it needs from the printer, or what the caller gets back. The only real disclosure is the Pro entitlement requirement, which is genuinely useful but far from sufficient for an 8-parameter recovery 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 purpose is front-loaded in one sentence, but the remaining half of the text is promotional copy about Pro features and an upgrade URL with an agent-tracking query string. That content does not describe the tool and displaces information an agent actually needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with eight largely undocumented parameters, a nested object (moonraker_config), no annotations and no output schema, the description provides only a one-line purpose plus an upsell. It is not complete enough for an agent to confidently construct a call or predict 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 63%, below the 80% baseline, so the description needs to compensate for parameters like probe_xy, print_bbox and moonraker_config that have no schema descriptions. The description mentions no parameters at all, leaving the caller to guess what geometry, failure identifier or printer config is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a clear verb and resource: assessing how to recover an interrupted print after a power loss. However, it does nothing to distinguish itself from the many close siblings (plan_print_recovery, recover_power_loss_print, assess_fleet_power_loss, resume_interrupted_print, get_recovery_plan), so an agent cannot tell which recovery tool is the right entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus the many alternative recovery tools, and no prerequisites beyond the entitlement note. 'Requires Kiln Pro' is a useful gate, but that is a licensing condition rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations, the description carries the full burden and does disclose the key behavioral trait: one check cycle, returns immediately, no background thread. It also discloses a conditional side effect (adhesion risk is evaluated via analyze_printability only when model_path is supplied) and a concrete threshold (within 15 °C of target). It stops short of stating that the call is read-only/no-state-change and says nothing about the shape of the returned results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The contrast with watch_print is front-loaded and the check list is scannable. The Args block repeats parameter names already in the schema, which is slightly redundant, though it earns its space by adding semantics the schema lacks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-required-parameter read tool with no annotations and no output schema, the description covers what is checked and how optional inputs change behavior. The notable gap is the absence of any return-value description, which matters since no output schema exists, and no statement of what happens when no print is active.
Complex tools with many parameters or behaviors need more documentation. Simple 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 and it largely does: all four parameters get meaning beyond their names, including the default behavior for printer_name, the dependency relationship between model_path and material, and the purpose of printer_id. What is missing is how printer_name and printer_id interact when both are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('single-shot health assessment of the current print') and immediately delimits scope against the sibling watch_print. The bulleted list of checks makes the tool's coverage concrete, so an agent can distinguish it from watch_print, printer_status, or check_printer_health without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the use case ('quick "is the print OK right now?" queries') and the exclusion (no persistent background tasks), naming watch_print as the alternative for the monitoring case. It does not distinguish itself from other closely-named siblings such as check_printer_health or printer_status, leaving some ambiguity in a very crowded namespace.
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, supports (``analyze_printability``'s own verdict, which
knows a short ceiling bridges), 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, or the
name of a printer set up in Kiln. When provided, printer
intelligence supplies the build volume.
:param material: Material the supports verdict and the
``printability_score`` are judged for (default ``"pla"``) —
``analyze_printability``'s own, so the two agree.
:returns: Dict with can_print verdict, issues, and actions taken.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_fix | No | Default: false. | |
| bed_x_mm | No | Default: 256.0. | |
| bed_y_mm | No | Default: 256.0. | |
| bed_z_mm | No | Default: 256.0. | |
| material | No | Default: "pla". | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it enumerates what is checked and, crucially, what auto_fix actually mutates (degenerate triangles, holes, floating regions) and that output_path is where the repaired file is written. It omits failure/reversibility behavior and permissions, so not quite 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 core behavior is front-loaded in the first paragraph and each subsequent block (validation list, auto_fix effects, parameters, returns) is purposeful. It is somewhat long due to per-parameter restatement, but there is little outright 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 an 8-parameter tool with no output schema, the description covers return shape ('can_print verdict, issues, and actions taken'), the full check list, and every parameter's semantics, which is close to sufficient for correct invocation. Minor gaps around failure modes and side effects keep it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already high (88%), so the baseline is 3, but the description adds genuinely new meaning beyond the schema: printer_id may be either a supported model id or the name of a Kiln printer set and supplies the build volume, and material governs the supports verdict and printability_score so it agrees with analyze_printability.
Input schemas describe structure but not intent. Descriptions should explain 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 ('print readiness check') with a clear scope modifier ('single-call ... with optional auto-repair'), then enumerates the exact validation battery the tool runs. It also distinguishes itself from the related `analyze_printability` by noting it reuses that tool's own verdict rather than duplicating 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 'single-call' framing and the auto_fix toggle imply when this is preferable to chaining validations manually, and the reference to analyze_printability hints at the relationship. However, it never explicitly states when to use this versus siblings like `validate_and_prepare_mesh`, `preflight_check`, or `check_print_health`, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_skin_contact_declarationC
Check a supplier substance declaration against per-market restricted-substance limits (Enterprise).
Enterprise adds SSO, RBAC, and audit export. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_skin_contact_declaration
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | Default: "". | |
| declaration | No | Default: "". | |
| material_id | No | Default: "". | |
| material_scope | No | Default: "plastic". | |
| product_category | No | Default: "adult". |
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 disclose a genuinely useful behavioral trait: this tool is gated behind Kiln Enterprise with SSO/RBAC/audit export, which affects whether an agent can call it at all. However, it says nothing about the result shape (pass/fail per market?), whether the call is read-only or records anything, or what happens with the empty-string defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one good sentence, but the remaining lines are redundant Enterprise marketing: 'Enterprise adds SSO, RBAC, and audit export' and 'Requires Kiln Enterprise' restate the same gating, followed by an upgrade URL that adds no invocation 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 five unconstrained string parameters, no annotations, and no output schema, the description would need to explain input formats and expected results. Instead it omits what a 'declaration' looks like, how markets are expressed, and what the check returns, so an agent cannot call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is nominally 100%, but the schema 'descriptions' are only default values ("Default: \"\"", "plastic", "adult") and convey no domain meaning. Five free-form string parameters with no enums (markets format, declaration syntax, material_scope values, product_category values) get zero explanation in the description, so it 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?
States a specific verb and resource: checking a supplier substance declaration against per-market restricted-substance limits. That is clearly distinguishable from generic tools, but the sibling check_skin_contact_suitability is not mentioned or contrasted, leaving ambiguity about which check to run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites beyond the licensing gate, and no mention of the closely related check_skin_contact_suitability sibling. An agent must guess at the intended workflow and cannot infer when this is preferred over the suitability check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_skin_contact_suitabilityB
Is a printed material OK against skin, and which materials are lower-risk for a use? -- honest, cited, tier-gated.
Free door, tiered answer — Free: Flags — always free · Pro: Flags · Business: Sell-ready remediation steps · Enterprise: + Market compliance checks (EU · UK · US · Canada). Upgrade: https://kiln3d.com/pricing?src=agent&tool=check_skin_contact_suitability
| Name | Required | Description | Default |
|---|---|---|---|
| use | No | Default: "". | |
| exposure | No | Default: "". | |
| material | No | Default: "". | |
| show_math | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose one genuinely useful trait — answers are 'cited' and 'tier-gated', with free tier returning only flags and remediation/compliance detail gated behind paid tiers. However, it says nothing about permissions, read-only nature, or what the response actually contains, and the framing is marketing-driven.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and the tier table that follows is compact. Nothing is buried or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, zero-annotation, no-output-schema tool, the description gives the question being answered and the tier-gating behavior but not the shape of the answer or what show_math does. An agent could call it, but would be guessing at the return 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 description coverage is nominally 100%, but the descriptions are placeholder text ('Default: ""'), so they carry almost no meaning. The description gestures at the material and use parameters ('a printed material OK against skin', 'for a use') but never explains exposure or show_math. Baseline 3 is appropriate given the coverage figure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific question the tool answers: whether a printed material is OK against skin, and which materials are lower-risk for a given use. That is a clear verb+resource statement of purpose. It does not distinguish this tool from nearby siblings such as check_skin_contact_declaration, record_skin_contact_outcome, or food_safety_for_printer, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call this versus the skin-contact declaration/outcome siblings or the broader material safety tools. The only usage-adjacent content is the tier table, which describes what a paying customer gets back, not when an agent should reach for this tool.
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.
cherry_pick_decoration_modificationC
Apply ONE field modification from source onto target. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cherry_pick_decoration_modification
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| feature_id | Yes | ||
| source_branch_id | No | ||
| source_preset_version_id | Yes | ||
| target_preset_version_id | Yes | ||
| ancestor_preset_version_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 does disclose two behaviors: a 3D stage opens on success and oversized meshes are decimated for it. But it says nothing about whether this requires a specific auth/plan state at call time, what happens on merge conflicts, whether the operation is reversible, or what the result contains. Large portions of the text are pricing/upsell copy rather than 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 useful content is one sentence at the top; the rest is tier/upgrade marketing ('Everything in Free, plus calibration...', pricing URL) plus an INLINE 3D STAGE section that largely repeats the first sentence. Substantial text does not earn its place or help the agent invoke 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?
For a 5-parameter mutation tool with no annotations, no output schema, and zero schema descriptions, the definition is far short of what an agent needs to call it correctly — the three version-id parameters are the crux of the operation and are completely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and does not. It never explains ancestor_preset_version_id vs source_preset_version_id vs target_preset_version_id, feature_id, or source_branch_id; 'from source onto target' is the only faint hint and covers at most two of the five.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a verb+resource ('Apply ONE field modification from source onto target'), which is a real purpose statement. However, it never says what a 'decoration modification' is or how it differs from the sibling tools cherry_pick_feature_modification and cherry_pick_modification, so an agent cannot distinguish the three from the text alone. The 'ONE' constraint is the only differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no named alternatives (e.g., cherry_pick_feature_modification, cherry_pick_modification) despite three near-identical siblings existing. The only usage constraint is 'ONE field modification', which is implied by the name and does not tell the agent which of the cherry-pick tools to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cherry_pick_feature_modificationC
Isolate ONE modification and project the target fingerprint after applying. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cherry_pick_feature_modification
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| feature_field | Yes | ||
| source_branch_id | No | ||
| source_feature_version_id | Yes | ||
| target_feature_version_id | Yes | ||
| ancestor_feature_version_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 it does disclose real behavior: it opens an interactive 3D stage, decimates oversized meshes for display, and the PNG preview is only a floor. However, it never says whether this mutates the target feature version or merely previews the projected fingerprint, and it says nothing about conflict handling or reversibility — a serious gap for a cherry-pick 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 genuine tool behavior is buried under a subscription pitch paragraph and a duplicated, verbose INLINE 3D STAGE block that repeats the stage concept three times. Front-loading the scope sentence is good, but several sentences do not earn their 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 viewer side-effect well, which is useful given there is no output schema. It is not complete for the operation itself: no parameter guidance, no mutation semantics, no conflict or failure modes, so an agent could call it with the right argument names but the wrong mental model.
Complex tools with many parameters or behaviors need more documentation. Simple 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% across five parameters, four of them required, and the description explains none of them. It never clarifies the ancestor/source/target three-way relationship, what feature_field selects, or when source_branch_id is needed, leaving an agent to guess at the most consequential inputs.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a verb and resource (isolate one modification, apply it, project the target fingerprint), which is more than a restatement of the name. But 'modification' is never tied to 'feature' versus decoration, so it is hard to distinguish from sibling cherry_pick_modification and cherry_pick_decoration_modification without reading the tool name twice. A large share of the text is plan/upsell material rather than 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?
There is no statement of when to use this over cherry_pick_modification, cherry_pick_decoration_modification, or the list_*_cherry_pick_candidates tools that presumably feed it. The only gating information is 'Requires Kiln Pro', which is a licensing prerequisite rather than a usage rule, and no preconditions about conflicts or candidate resolution are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cherry_pick_modificationC
Apply one isolated semantic modification from a source branch onto a target branch. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cherry_pick_modification
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| feature_id | Yes | ||
| source_branch_id | No | ||
| source_version_id | Yes | ||
| target_version_id | Yes | ||
| ancestor_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the Pro requirement and the inline 3D stage side effect, including automatic mesh decimation, but it does not explain mutation effects, conflict behavior, reversibility, branch state changes, 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 operation is front-loaded in the first sentence, but the description includes upgrade marketing and repeats the inline 3D stage behavior in a second full paragraph. Those sentences do not earn their place in a tool definition and dilute the useful 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?
For a complex mutation with five parameters, no annotations, and no output schema, the description is incomplete. It describes the stage experience but omits essential invocation details such as parameter roles, merge/conflict implications, and what success actually changes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters, and the description does not compensate. It mentions source and target branches generically, but does not explain ancestor_version_id, source_version_id, target_version_id, feature_id, or source_branch_id well enough for an agent to populate them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: apply one isolated semantic modification from a source branch onto a target branch. It is clear enough to understand the operation, but it does not distinguish this generic modification cherry-pick from sibling tools such as cherry_pick_feature_modification or cherry_pick_decoration_modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool versus alternatives, nor when not to use it. The only conditional information is a Kiln Pro requirement and upgrade URL, which does not help an agent choose between this and related cherry-pick or merge tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_calibration_confidenceC
Deterministically classify per-field + overall calibration confidence.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=classify_calibration_confidence
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | ||
| parsed_fields | 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 behavioral burden. It usefully claims deterministic behavior and a Pro-tier requirement, but says nothing about what is classified, the output shape, error behavior, or the nested 'parsed_fields' contract, leaving the agent under-informed for a classification 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?
Only the first sentence is functional; the following three sentences are marketing/upsell text (feature list, 'Requires Kiln Pro', upgrade URL) that does not earn its place in a tool definition. The result is front-loaded but then padded with irrelevant 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 a nested-object parameter, zero schema coverage, no output schema, and no annotations, the description should explain the 'parsed_fields' input and expected classification result. It instead spends most of its length on pricing, leaving the definition materially incomplete for correct 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% with two parameters (one required 'tool_name', one nested 'parsed_fields' object). The description adds no information about either parameter, so the agent must infer their meaning and structure entirely from 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 opening sentence states a specific verb and resource ('deterministically classify ... calibration confidence'), which is more than a tautology. However, it does not distinguish this tool from calibration siblings such as assess_calibration_status, get_calibration_freshness, or apply_calibration_recommendations, and the purpose is diluted by three sentences of pricing copy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus the many calibration-related siblings. The only conditional statement ('Requires Kiln Pro') is a licensing prerequisite, not a usage or alternative-selection rule.
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 | Default: "operator". | |
| acknowledgement_note | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the load, and it does well: it declares this safety-critical, discloses a real failure mode (latch blocked while critical interlocks are active, e.g. thermal sensor failure), and describes the error return. It omits auth/permission requirements, audit trail expectations, and whether clearing resumes a halted print, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence plus safety-critical warning is front-loaded and effective. The Sphinx-style ':param:'/':returns:' block is slightly verbose and partly duplicates the schema titles, but every line still conveys usable 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?
There is no output schema, and the description summarizes the return ('updated latch state, or an error'), covers the blocker condition, and states the required inputs. Missing are permission/authorization context and post-clear side effects, which matters for a safety-critical mutation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only acknowledged_by is documented), and the description compensates fully: printer_name is scoped to 'printer whose latch to clear', acknowledgement_note is explained as the reason and flagged as non-empty, and acknowledged_by is described as the clearing identity with a default. It adds the 'cannot be empty' validation constraint that the schema does not express.
Input schemas describe structure but not intent. Descriptions should explain 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 ('acknowledge and clear') on a specific resource ('printer's emergency stop latch'), which no sibling tool does. The 'See also' line explicitly names emergency_status() and emergency_stop(), so the agent can distinguish the trio without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite: 'Call emergency_status() first to check whether clearing is possible', and names the alternative actions in 'See also'. The condition that selects this tool over emergency_status/emergency_stop is unambiguous.
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 carries the full burden and does so: it discloses that the tool acknowledges firmware state rather than fixing a fault, that the machine will re-halt on a genuine fault, that it is a no-op during an active print, and what the response contains (whether the acknowledgement was sent plus the read-back state). That is exactly the kind of context annotations would otherwise supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and the sibling distinction, then the trigger condition, then the caveats. The paragraph about how the problem predates this tool ('only a power cycle') is interesting background but the most expendable sentence in the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, when to use, distinction from the emergency-stop sibling, what it does not fix, the during-print restriction, and the return value — everything needed to call it correctly, including the 'see also' pointers to the surrounding workflow tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no title-level explanation, but the description adds the key semantics: it targets a printer and may be omitted to use the default. With only one optional string parameter this is sufficient, though it doesn't say whether the name must match a registered printer exactly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('clear a latched error on the PRINTER') and immediately names the sibling it is frequently confused with, clear_emergency_stop. An agent can distinguish it from that tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition ('when printer_status reports error and the printer's own screen looks fine'), an explicit exclusion (not the Kiln safety latch — use clear_emergency_stop), and a runtime precondition ('nothing is cleared while a print is running'). Also points to preflight_check and printer_status as the surrounding workflow.
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_backup_configureC
Turn automatic cloud backup of your designs on or off.
Kiln Pro would push your design branches to a cloud remote and pull them back on any signed-in machine, with automatic backup available. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_backup_configure
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| enabled | 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 this is a configuration toggle, describes the intended backup behavior, and states that Kiln Pro is required. However, it does not explain what disabling backup does to existing backup state, whether changes take effect immediately, or any permission/auth requirements beyond the Kiln Pro tier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence. The following sentences mix useful requirement context with promotional copy ('Kiln Pro would push...', upgrade URL), so some content does not directly help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter toggle with no annotations and no output schema, the definition covers purpose and tier requirement. It is still incomplete because parameter behavior, remote semantics, and the effect of enabling/disabling backup are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description does not mention either parameter. The remote parameter's schema text is just 'Default: "default"' with no meaning, and enabled has no description at all. The description's 'on or off' loosely maps to enabled but adds no syntax, defaults, or remote-selection 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 states a specific verb and resource: turn automatic cloud backup of designs on or off. It is clear what the tool controls, but it does not distinguish this toggle from nearby siblings such as cloud_sync_configure, cloud_sync_now, or cloud_push_branch/cloud_pull_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says what the tool toggles but gives no explicit guidance on when to use it versus cloud_sync_configure or immediate sync/push/pull tools. Prerequisites such as being signed in or having Kiln Pro are mentioned, but no alternatives or exclusion conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_clone_designC
Bootstrap local storage for a remote-only design.
Kiln Pro would push your design branches to a cloud remote and pull them back on any signed-in machine, with automatic backup available. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_clone_design
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| design_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 it does disclose one important trait: the operation is plan-gated behind Kiln Pro, and it materialises local storage for a design that lives only remotely. It says nothing about what happens if local data already exists, whether it overwrites, or what errors result from a non-Pro account, which is a meaningful gap for a mutating clone 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 lead sentence is well front-loaded, but two of the four lines are promotional copy about what Kiln Pro 'would' do plus an upgrade URL, neither of which helps an agent invoke the tool. Roughly half the text does not earn 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?
With no annotations, no output schema, and only half the parameters documented in the schema, the description should compensate but does not: return value, local path behaviour, and error modes are all unspecified. The plan requirement is the only piece of genuinely load-bearing context supplied.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% — remote has a bare default note and design_id has no description at all. The description mentions neither parameter and adds zero meaning about what design_id identifies or how 'remote' selects among remotes, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a concrete action and object (bootstrap local storage for a remote-only design), which is more specific than the name alone. However, the following sentence describes the product's cloud push/pull capability rather than what this specific call does, so an agent still cannot tell exactly what artifact is produced locally. It never distinguishes itself from near-neighbours such as cloud_clone_feature or cloud_pull_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only gating information is 'Requires Kiln Pro', which is a useful precondition but not usage guidance. There is no statement of when to choose this over cloud_clone_feature, cloud_clone_preset, or cloud_pull_branch, and no exclusions or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_clone_featureC
Bootstrap local storage for a remote-only feature.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_clone_feature
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| feature_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 does disclose two useful facts — local state is created and a Kiln Pro entitlement is required — but says nothing about whether cloning overwrites an existing local feature, idempotency, or error behavior on a bad feature_id. The bulk of the text is plan marketing rather than tool 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 functional sentence is correctly front-loaded, but three of the four lines are pricing/upsell copy and a marketing URL that add nothing to invocation. Those sentences do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and an undocumented required parameter, the description should cover the mutation semantics and result of cloning. An agent cannot tell what state exists after the call or how collisions are handled, so it is not sufficient for correct 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 only 50%: feature_id has no description at all, and remote only carries a default value. The description never mentions either parameter name or their expected form (e.g., whether remote is a remote-name or URL), so it does not compensate for the 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 opening sentence gives a specific verb and resource: bootstrapping (cloning) local storage for a feature that exists only remotely, which aligns with siblings cloud_clone_design and cloud_clone_preset by resource noun. It never explicitly names those siblings or states the distinction, but the resource scope is unambiguous enough for 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?
"Bootstrap local storage for a remote-only feature" implies the trigger condition (the feature exists remotely and you need a local copy), but this is inferred rather than stated. There is no explicit when-not guidance and no named alternative among the many cloud_pull_* / cloud_clone_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_clone_presetC
Bootstrap local storage for a remote-only decoration preset.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_clone_preset
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| preset_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 it does add one real behavioral fact: the tool requires a Kiln Pro entitlement. Beyond that it says nothing about whether the clone overwrites existing local state, where the preset lands, or whether the operation is repeatable or reversible — instead the remaining sentences are product marketing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence earns its place. The two following sentences are tier/marketing copy and an upgrade URL that do not help an agent select or invoke the tool, and they dilute the front-loaded purpose 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?
No annotations, no output schema, and an undocumented required parameter — the definition should be doing much more work. An agent cannot tell what the call produces locally or how it differs from the adjacent cloud_* clone and pull tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and preset_id has no schema description at all, so the description is the place to compensate — but it never mentions either parameter. It gives no hint of what preset_id refers to or what the 'remote' default of "default" means.
Input schemas describe structure but not intent. Descriptions should explain non-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 verb and resource ("Bootstrap local storage for a remote-only decoration preset"), which is more than a restatement of the name. However "bootstrap local storage" is vague about what is actually created locally (a preset copy? a branch?), and there is no differentiation from the many sibling clone/pull tools such as cloud_clone_design, cloud_clone_feature, or cloud_pull_preset_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus cloud_pull_preset_branch, cloud_clone_design, or the other clone/pull siblings. The only contextual sentence is a paywall note ("Requires Kiln Pro"), which does not help an agent choose the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_documentsC
Push your documents to your Kiln account, or pull them back to this computer.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | Default: 0. | |
| action | Yes | ||
| remote | No | Default: "default". | |
| serial | No | Default: "". | |
| design_id | No | Default: "". | |
| intake_id | No | Default: "". | |
| bundle_path | No | Default: "". | |
| record_kind | No | Default: "". | |
| bundle_digest | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and largely fails it. It discloses the direction of data flow but says nothing about authentication to the Kiln account, conflict/overwrite behavior on push, whether a pull mutates or deletes local files, or any rate limits — all material for a mutation-capable sync 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?
A single front-loaded sentence with no filler, which is good structure, but for a 10-parameter bidirectional sync tool it is under-specified rather than genuinely concise — it omits needed content instead of compressing it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and 10 parameters, yet the description is one sentence covering only the direction of transfer. It omits action/kind semantics, conflict handling, and auth requirements, so it is not complete enough for an agent to invoke this reliably.
Complex tools with many parameters or behaviors need more documentation. 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 10 parameters and only ~80% schema coverage, the two required parameters (action, kind) have no descriptions and no enum values, so the agent must guess the accepted strings. The description's 'push/pull' hints at possible action values but never states them or explains kind, leaving the most critical inputs semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain 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 pair of verbs (push/pull) and a resource (documents) between two named endpoints ('your Kiln account' and 'this computer'), so the core operation is legible. It does not, however, distinguish itself from siblings that also move artifacts to/from the cloud (cloud_sync_now, cloud_backup_configure, cloud_push_branch), so an agent cannot route between them from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'push ... or pull' phrasing implies the two usage modes, but there is no explicit when-to-use, no when-not, and no named alternative among the many cloud_* siblings. Usage is inferable from the verb pair rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_list_remote_branchesB
List branches on the remote for design_id.
Kiln Pro would push your design branches to a cloud remote and pull them back on any signed-in machine, with automatic backup available. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_list_remote_branches
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| design_id | 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 disclose the tier/auth prerequisite ('Requires Kiln Pro'), and the verb 'list' implies a non-mutating read, but it says nothing about pagination, empty results, or what happens when design_id is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional sentence is correctly front-loaded, but roughly half the text is promotional copy about Kiln Pro and an upgrade URL, which does not help an agent decide or invoke. It is not verbose, just padded with material that doesn't earn 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 two-parameter read with no output schema, the description covers purpose and the Pro-tier prerequisite. It lacks any statement about the return shape (e.g., list of branch names) or the meaning of the remote parameter, which an agent calling this tool blind would need.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50% and the description only names design_id as the scoping key, adding nothing the schema doesn't already say. The 'remote' parameter, whose schema note is merely 'Default: "default"', is not explained at all in the description, leaving real ambiguity about what a remote identifier is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list branches on the remote for a given design_id. This is concrete enough to act on, but it never distinguishes itself from close siblings such as cloud_remote_list, cloud_list_remote_releases, or list_design_branches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The one genuinely useful guideline is the gating condition 'Requires Kiln Pro', which tells the agent when the call will fail. There is no guidance on when to choose this over cloud_remote_list or list_design_branches, so the choice among sibling listing tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_list_remote_releasesC
List signed releases published to the remote for design_id.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_list_remote_releases
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| design_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 disclosure burden. It hints at an access requirement ('Requires Kiln Pro'), which is genuine behavioral context, but says nothing about read-only nature, pagination, result size, or authentication. Most of the text is marketing rather than 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 single useful sentence is correctly front-loaded, but the following three lines are promotional boilerplate and a pricing URL that consume the majority of the text without helping tool selection. This is noise, not conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no annotations and no output schema, the description should convey return shape, pagination, or sorting behavior, none of which appear. Only the core purpose is covered, and the tier note is incidental.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: 'remote' has a documented default while 'design_id' is bare. The description merely names design_id, which the schema already exposes, and adds no format, meaning, or constraint (e.g. whether it is a UUID, whether the remote must exist). With half the parameters undocumented, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (list), resource (signed releases), and scope (published to the remote for a given design_id), which is enough for an agent to grasp the operation. It stops short of distinguishing itself from close siblings like list_design_releases or cloud_remote_list. The remaining three sentences add no purpose information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_design_releases, list_feature_releases, or cloud_remote_list, nor any prerequisites or exclusions. The 'Everything in Free, plus...' text is a subscription upsell, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_pull_branchC
Bring a design you saved to your Kiln account down to this machine.
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | No | ||
| design_id | Yes | ||
| branch_name | No | ||
| since_version_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 behavioral burden and largely fails it. It doesn't say whether pulling overwrites local work, how conflicts are resolved, whether authentication is required, or what the result contains; only the cloud-to-local direction is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the direction stated up front and no filler. Its brevity is a virtue structurally, though the missing content is penalized elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 five-parameter, unannotated, no-output-schema mutation-adjacent tool, this description is far too thin. Nothing covers parameter roles, overwrite semantics, or return values, leaving the agent unable to invoke it correctly beyond supplying design_id.
Complex tools with many parameters or behaviors need more documentation. Simple 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 20% — only 'remote' has any text, and that is just a default value. The description explains none of the five parameters (design_id, branch_id, branch_name, since_version_id), so an agent cannot tell whether branch_id and branch_name are alternatives or whether since_version_id enables incremental pulls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a direction (cloud to local machine) and a resource, but calls it a 'design' while the tool name and schema are about branches. With siblings like cloud_pull_feature_branch and cloud_pull_preset_branch in the same namespace, the description gives no basis for telling them 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?
There is no when-to-use guidance, no prerequisites (signed-in account? existing local branch?), and no mention of the alternative pull tools or when a branch pull is preferred over cloning or pushing. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_pull_feature_branchC
Pull one feature branch's new versions from a remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_pull_feature_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | No | ||
| feature_id | Yes | ||
| branch_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, yet it never says whether the pull overwrites local versions, fast-forwards, or can produce merge conflicts. The Pro entitlement mention is real behavioral context, but it arrives inside an advertising block and is ambiguous about whether it applies to this tool specifically. For a network mutation of local branch state, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful sentence is front-loaded and correct, but it is followed by three lines of subscription upsell and a pricing URL that have no bearing on invoking the tool. That bulk is not merely wasteful; it risks steering an agent toward a purchase flow. A one-sentence purpose plus an entitlement note would have sufficed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 four parameters at 25% coverage, no annotations, and no output schema, the description must explain merge/overwrite semantics, conflict handling, and how the identifier parameters relate. None of that is present, and the Pro requirement is asserted without stating what happens if the caller lacks it. The definition is not complete enough for correct 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 only 25%: only the optional 'remote' parameter has any description (a default value). The description adds nothing about feature_id vs branch_id vs branch_name — notably whether branch_id and branch_name are alternative identifiers for the same branch, which the agent must guess. Given the low coverage, the description needed to compensate and 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 opening sentence states a specific verb and resource: pulling one feature branch's new versions from a remote, with the scope narrowed to a single branch. The noun 'feature branch' separates it from cloud_pull_branch and cloud_pull_preset_branch well enough for selection. The remaining three lines describe a subscription tier rather than the tool, so they add no purpose information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus cloud_pull_branch, cloud_pull_preset_branch, or cloud_push_feature_branch, and no mention of prerequisites such as an existing remote or a clean local branch. The only contextual hint is the buried 'Requires Kiln Pro' line, which reads as marketing rather than actionable guidance. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_pull_preset_branchC
Pull one decoration-preset branch's new versions from a remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_pull_preset_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | No | ||
| preset_id | Yes | ||
| branch_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 and does not meet it: it never says what a pull does to local state, how merges or conflicts are handled, whether authentication or a configured remote is required, or what the result is. The 'Requires Kiln Pro' gating note is the only real behavioral datum, and it is framed as an upsell.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded, but the following three sentences are identical marketing boilerplate and an upgrade URL that do not help an agent decide to call or how to call 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?
For a 4-parameter, no-output-schema, no-annotation mutation-adjacent tool, the description omits target resolution (branch_id vs branch_name), preconditions, and conflict behavior. What is present is not enough for correct 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 only 25% — just 'remote' carries a default of "default" — and the description adds nothing about preset_id, branch_id, or branch_name. With four parameters and no indication of whether branch_id and branch_name are alternatives, the description leaves real ambiguity unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: pull one decoration-preset branch's new versions from a remote. The 'decoration-preset' qualifier implicitly separates it from cloud_pull_branch and cloud_pull_feature_branch, though those siblings are never named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite about being on a branch or having a configured remote, and no pointer to the obvious alternatives (cloud_pull_branch, cloud_pull_feature_branch) or to detect_decoration_preset_merge_conflicts. The remaining sentences are tier/pricing marketing, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_push_branchB
Push a local branch (+ its versions + sidecars) to a remote.
Kiln Pro would push your design branches to a cloud remote and pull them back on any signed-in machine, with automatic backup available. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_push_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | Yes | ||
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the Pro license gate and that versions and sidecars are included in the push, but says nothing about conflict handling, overwrite semantics, authentication, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and informative, but the second sentence is marketing copy ('Kiln Pro would push your design branches...') plus an upgrade URL that does not help an agent invoke the tool. Roughly half the text is promotional 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 3-parameter mutation with no annotations and no output schema, the description covers the license prerequisite but omits return behavior, conflict/overwrite semantics, and meaning for the two required IDs. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'remote' is documented, with its default). The description adds no meaning to design_id or branch_id, leaving the two required parameters unexplained in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain 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 (Push) and resource (local branch), and scopes it precisely with '+ its versions + sidecars' to a remote. It is distinguishable from cloud_push_feature_branch and cloud_push_preset_branch only by the generic 'branch' resource, but the resource is clearly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires Kiln Pro' prerequisite and the mention of pull-back/backup give some context, but there is no explicit guidance on when to use this generic branch push versus cloud_push_feature_branch or cloud_push_preset_branch. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_push_feature_branchC
Push a local feature branch (+ its versions) to a remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_push_feature_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | Yes | ||
| design_id | No | ||
| feature_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it mostly fails: nothing about authentication, conflict/overwrite behavior, or what remote state changes. It does leak one real behavioral fact — a Pro-tier entitlement gate — but it is presented as an advertisement rather than operational 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 actual purpose is correctly front-loaded in one sentence, but the remaining three lines are pure upsell copy ('Everything in Free, plus calibration...', 'Requires Kiln Pro', an upgrade URL) that contribute nothing to invoking the tool and inflate the definition by roughly 4x.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 cloud mutation tool with no annotations, no output schema, and 25% parameter coverage, the definition omits return/error behavior, conflict handling, and parameter meaning. Only the bare action is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (just the `remote` default), so the description needed to compensate and does not: `branch_id`, `feature_id`, and `design_id` are never explained, and no push syntax, format, or expected value is given. Only a loose conceptual mapping ('local branch' / 'remote') exists.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource+scope: pushing a *local feature branch and its versions* to a remote, which distinguishes it from the branch-only (`cloud_push_branch`) and release-only (`cloud_push_feature_release`) siblings in the family. However, it never names those siblings explicitly, so the differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus `cloud_push_branch`, `cloud_push_feature_release`, or the pull counterparts. The only contextual hint is 'Requires Kiln Pro,' which is buried in promotional copy rather than framed as a usage prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_push_feature_releaseC
Push a locally-signed feature release to the remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_push_feature_release
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| release_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 implies a network mutation with a pre-existing signed artifact, but says nothing about conflict handling, whether the push is idempotent, what gets rejected, or what the result looks like. The 'Requires Kiln Pro' line is an upsell and is too vague to be read as a reliable entitlement precondition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The correct sentence is front-loaded, but three of the four lines are tier/pricing advertisement with a tracking URL that has nothing to do with invoking this tool. That is a large fraction of wasted text on a two-parameter 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?
A mutating, network-facing remote push with no annotations and no output schema needs more than one sentence: at minimum the signing prerequisite, target-remote behavior, failure/conflict semantics, and where release_id comes from. None of that is present, so an agent cannot call this reliably beyond a blind attempt.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: 'remote' has a default note but 'release_id' is undocumented, and the description never explains what a release identifier is, where to obtain it (e.g., from sign_feature_release or list_feature_releases), or how the remote target is selected. It only alludes to both concepts in passing.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: pushing a locally-signed feature release to a remote. That is enough to distinguish it from reads like list_feature_releases or verify_feature_release, though it does not differentiate it from the similar cloud_push_feature_branch or cloud_push_preset_release 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?
There is no statement of when to use this versus cloud_push_feature_branch, cloud_push_preset_release, or the sign_/verify_ variants, and no note that signing must happen before pushing. The remaining lines are subscription marketing copy, not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_push_preset_branchC
Push a local decoration-preset branch to a remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_push_preset_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | Yes | ||
| design_id | No | ||
| preset_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 tier requirement (Kiln Pro), but says nothing about whether the push is forced, how conflicts or diverged remotes are handled, what gets mutated on the remote, or what is returned. The remaining sentences are marketing for the Pro plan and add no behavioral 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?
Only the first sentence earns its place. The following three sentences are an upsell pitch plus a URL with tracking parameters, which is noise for a tool-selection decision and dilutes the front-loaded purpose 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 4-parameter mutation tool with no annotations, no output schema, and 25% schema coverage, the description should cover preconditions, conflict behavior, and parameter roles. It covers only the tier gate, leaving the agent under-informed about how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, with preset_id and branch_id required but undocumented, and design_id entirely unexplained. The description names neither parameter nor clarifies the distinction between preset_id, branch_id, design_id, and the "default" remote value, so it does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (push) and resource (a local decoration-preset branch) plus the destination (a remote), which cleanly separates it from cloud_push_branch and cloud_push_feature_branch. It is clear, though it never names those siblings 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?
"Requires Kiln Pro" implies a gating condition the agent must check before calling, which is genuinely useful usage context. However, there is no guidance on when to push versus pull, when to use the release counterparts, or what preconditions (branch existence, remote configured) must hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_push_preset_releaseC
Push a locally-signed decoration-preset release to the remote.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_push_preset_release
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| release_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, and it does disclose one genuine behavioral fact — the operation requires Kiln Pro. However it says nothing about what push does on conflict, whether it overwrites an existing remote release, or whether it is idempotent, so an agent cannot predict the effect of the mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and efficient, but two of the three sentences are marketing copy for the Pro tier and a pricing link. Only the opening clause and the 'Requires Kiln Pro' line earn their 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 an unannotated mutation tool with no output schema, the description should explain remote/conflict behavior and what a successful push produces. Neither is covered, and one of two parameters is undocumented in both schema and 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?
Schema coverage is only 50%: release_id has no schema description and the description does not explain it beyond the phrase 'locally-signed ... release'. The remote parameter's meaning and how to choose a non-default remote are entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Push a locally-signed decoration-preset release to the remote') and its scope is distinguishable from siblings like cloud_push_preset_branch and cloud_push_feature_release. It stops short of explicitly naming those near-neighbours, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instead of cloud_push_preset_branch, sign_decoration_preset_release, or verify_decoration_preset_release, and no preconditions beyond an oblique 'locally-signed'. The remaining text is upsell copy, not usage instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_remote_listB
List all registered Kiln Cloud remotes.
Kiln Pro would push your design branches to a cloud remote and pull them back on any signed-in machine, with automatic backup available. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_remote_list
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must carry the full burden. It does disclose the Kiln Pro entitlement gate, which is real operational context, but it says nothing about what a remote entry contains or what happens when no remotes are registered, and it never states the tool is a read-only listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence describes the tool. The remaining two sentences are marketing copy about pushing and pulling design branches plus an upgrade URL, which does not help an agent decide how to invoke a zero-parameter list call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter read, the description covers what is listed and the entitlement requirement, which is close to sufficient. It omits any indication of return shape or empty-state behavior, and there is no output schema to fill that 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 tool takes zero parameters, so the baseline is 4. Nothing in the description is needed to explain inputs, and nothing misleading is added.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: list all registered Kiln Cloud remotes. That distinguishes it from siblings such as cloud_list_remote_branches and cloud_list_remote_releases, though the description never names those siblings to make the split 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 'Requires Kiln Pro' line is a genuine gating condition for invoking the tool, but there is no explicit statement of when to choose this over the branch/release listing siblings, nor when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud_retire_remote_branchC
Mark a remote branch retired (preserves records for audit).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cloud_retire_remote_branch
| Name | Required | Description | Default |
|---|---|---|---|
| remote | No | Default: "default". | |
| branch_id | Yes | ||
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry some behavioral load and delivers the one key fact: retirement preserves records for audit, i.e. it is a non-destructive state change rather than a deletion. But it omits permissions/auth requirements, reversibility, and effects on linked designs, and the 'Requires Kiln Pro' upsell block ambiguously implies a licensing gate without confirming one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is a single front-loaded sentence, which is good, but it is followed by an entire tier-comparison paragraph and an upgrade URL that are irrelevant to invoking this tool and actively distract the 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?
For a 3-parameter mutation with no annotations and no output schema, the description should explain the identifier relationships and post-retirement state. Instead it spends its remaining budget on an unrelated sales pitch, leaving the agent unable to tell what retirement does to dependents or whether the action is reversible.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% – only 'remote' has any note (a bare default value) while design_id and branch_id are completely undocumented. The description adds nothing about what these identifiers refer to or how they interact, so the coverage gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ('Mark a remote branch retired') and differentiates it from the many local-branch siblings (retire_design_branch, retire_feature_branch) by specifying 'remote'. However, the clarity is immediately diluted by three lines of unrelated tier/marketing text about printer calibration and textures that have nothing to do with branch retirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 retire a remote branch versus deleting it, versus using cloud_list_remote_branches or cloud_push_branch to inspect/manage it. The only context is '(preserves records for audit)', which hints at a soft-delete but never contrasts it with a hard delete alternative.
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 | Default: 60.0. | |
| cloud_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 behavioral burden, yet it never explains that this is a mutating/stateful operation that starts ongoing network activity. It omits permission requirements, whether existing configuration is overwritten, whether the call blocks, and error behavior for an unreachable endpoint.
Agents need to know what a tool does to the 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 before the parameter list. The Args block partly duplicates schema fields but earns its place because two of three parameters lack 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?
With no annotations, no output schema, and a side-effecting network/auth operation, the definition should explain the effect of starting sync, what is returned or confirmed, and interactions with existing sync state. None of that 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 is only 33% (cloud_url and api_key have no schema descriptions), so the Args glosses genuinely add meaning: 'Base URL of the cloud sync endpoint', 'API key for authentication', and 'interval in seconds'. Still, it gives no format details for cloud_url, no scope for api_key, and no explanation of what the interval governs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: configure and start cloud sync. However, it does not distinguish this from siblings like cloud_sync_now, cloud_sync_status, or cloud_backup_configure, and 'start' leaves ambiguous whether it launches a persistent background sync or performs an initial sync.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus cloud_sync_now (trigger immediately) or cloud_sync_status (check state), and no prerequisites such as needing existing credentials. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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_branchesC
Render a side-by-side comparison of two branches as a Mermaid sequenceDiagram.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=compare_branches
| Name | Required | Description | Default |
|---|---|---|---|
| branch_a | Yes | ||
| branch_b | Yes | ||
| artifact_id | Yes | ||
| artifact_type | No | Default: "design". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two non-schema facts: the output is a Mermaid sequenceDiagram and the tool is gated behind Kiln Pro. However it says nothing about side effects, permissions beyond tier, whether the result is cached, or error behavior for invalid branches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but nearly two-thirds of the text is upsell copy ('branch, restyle, compare outcomes...', pricing link) that does not help the agent invoke the tool correctly. The single useful gate line is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, and 25% parameter coverage across 4 parameters leaves the definition thin. The description establishes purpose and a tier gate but omits parameter meaning, return semantics, and any failure behavior an agent would need to call it reliably.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (just artifact_type's default). The description's 'two branches' loosely corresponds to branch_a and branch_b, but it never explains whether those are names, IDs, or refs, and artifact_id is undocumented in both schema and description. Compensating value is 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 first sentence gives a specific verb and resource — render a side-by-side comparison of two branches as a Mermaid sequenceDiagram — and the output format is a genuinely distinguishing trait versus siblings like diff_design_versions or cross_branch_ab_report. It does not, however, differentiate itself from those alternatives, and the marketing paragraphs dilute the core statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Pro' states a licensing prerequisite, which is useful gating context, but there is no when-to-use vs when-to-use-something-else guidance. Nothing tells the agent when compare_branches is the right choice over cross_branch_ab_report, show_branch_history, or diff_design_versions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_design_versionsC
Compare print outcomes between two versions of a design.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=compare_design_versions
| Name | Required | Description | Default |
|---|---|---|---|
| mesh_path_a | No | Default: "". | |
| mesh_path_b | No | Default: "". | |
| version_id_a | Yes | ||
| version_id_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose a real behavioral fact not in the schema — that the feature is gated behind Kiln Pro — but it says nothing about what a comparison returns, whether it mutates state, or what happens for non-Pro callers beyond the upsell link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but the remaining three lines are promotional copy ('branch, restyle, compare outcomes') and an upgrade URL. The gating note earns its place; the marketing sentence and link dilute rather than inform.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, no-output-schema, paywalled tool, the description should at minimum explain what the comparison yields and how the required version ids are obtained. Both are absent, leaving the agent unable to invoke it confidently even where the license 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?
Schema coverage is only 50%, and the undeclared parameters are the important ones: version_id_a and version_id_b have no descriptions at all, while mesh_path_a/b only say 'Default: ""'. The description adds no meaning about what a version id is, how the two mesh paths relate to the version ids, or whether either is optional.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: comparing print outcomes between two named design versions. It is clear what the tool produces conceptually, but it never distinguishes itself from nearby siblings such as diff_design_versions or compare_mesh_versions, so an agent cannot tell which comparison tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is 'Requires Kiln Pro', which is a prerequisite, not guidance on when to choose this over alternatives. With diff_design_versions and compare_mesh_versions in the sibling list, the description gives no criteria for picking this one.
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, the mesh-check 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, the description carries the full behavioral burden. It helpfully lists the exact metrics computed and the return dict shape, including a meshes_identical flag, but it does not explicitly state that the operation is read-only, whether input files are modified, or what errors occur for invalid/missing 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 purpose and key metrics are front-loaded, and the parameter meanings are clearly appended. The reStructuredText field list is slightly verbose but not wasteful, and each sentence contributes useful 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 and no annotations, the description does a good job of explaining what is returned and what is computed. It could be more complete by noting file format/path expectations and confirming read-only behavior, but the core information needed to call it 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?
Schema description coverage is 0%, so the description must compensate. It does so by defining file_a as the reference/original mesh and file_b as the modified mesh, which is critical for interpreting directional metrics like volume change. It still does not specify accepted file formats or path resolution behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Compare two mesh files and report geometric differences.' It clearly distinguishes mesh comparison from design-version comparison, but it does not explicitly differentiate itself from the closest sibling, visual_diff_meshes, which also compares meshes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use case ('verifying that a repair, rescale, or regeneration actually improved the model'), which gives implied usage guidance. However, it does not state when not to use this tool or name alternatives such as visual_diff_meshes or compare_design_versions, so an agent still has to infer selection among similar siblings.
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 the local estimate (PLA, PETG, …).
Leave empty to use what the file was sliced for, PLA when it
names nothing. When kiln-pro (https://kiln3d.com) answers, the
local estimate also carries a ``cost_intelligence`` field; what
it holds depends on the tier (https://kiln3d.com/pricing).
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.
printer_id: Optional registered printer the local print is for;
passed on with the file when kiln-pro is asked.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| quantity | No | Default: 1. | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| printer_wattage | No | Default: 200.0. | |
| electricity_rate | No | Default: 0.12. | |
| shipping_country | No | Default: "US". | |
| fulfillment_material_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full load, and it discloses meaningful traits: there is an external dependency (Craftcloud must be configured or the fulfillment half is silently skipped), input format determines output shape, and an optional cost_intelligence field appears only when kiln-pro answers with a tier-dependent payload. It omits failure modes and whether the external quote incurs latency or cost, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement and mechanism are front-loaded in a tight two-sentence block, and the per-parameter notes are kept short. The material entry drifts into kiln-pro marketing with two external URLs, which is information an agent does not need in order to call 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?
For an 8-parameter tool with no annotations and no output schema, the description covers input interpretation, the conditional fulfillment path, and the optional commercial field. The one real gap is return shape: it says the tool returns a side-by-side comparison but never sketches what the local and fulfillment sides contain, which an agent needs to reason about 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 coverage is 75% but the schema descriptions are mostly bare defaults, so the Args block does real work: file_path's dual G-code/model meaning, material's fallback chain (sliced value, then PLA), fulfillment_material_id's explicit pointer to the fulfillment_materials tool, and the units for electricity_rate and printer_wattage. It does not state the shipping_country default even though the schema sets US, a minor 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 opening line names a specific operation (cost comparison of local print vs. outsourced fulfillment) and then explains the mechanism: a local estimate plus an optional fulfillment quote combined into a side-by-side result. That composite behavior distinguishes it from the separate siblings estimate_cost, estimate_print_cost_from_mesh, and fulfillment_quote without naming them. It stops short of a 5 only because it never explicitly says how it differs from those single-purpose estimators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete branching conditions: a G-code input yields only the local estimate, and omitting fulfillment_material_id skips the outsourced quote entirely. Those are real routing rules an agent can act on. It does not cover when an agent should prefer this over calling estimate_cost or fulfillment_quote directly, which keeps it below 5.
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 | Default: "isometric". | |
| paths | Yes | ||
| width | No | Default: 800. | |
| colors | No | ||
| height | No | Default: 600. | |
| labels | 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 the composition pipeline (each model rendered individually, then stitched with labels), the layout rule (2x2 grid at four models, single row otherwise), and the return artifact (a PNG path displayable inline). It omits whether renders are cached, how long they take, and where the 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?
Front-loaded with the core action and return value, then a compact bulleted use-case list and an Args block. Minor redundancy between the first sentence and 'General-purpose visual diff tool', and the Args restates defaults the schema already carries, but nothing is 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?
For a six-parameter rendering tool with no annotations and no output schema, the description covers return format, layout behavior, and every parameter's meaning. What an agent still can't tell — render latency, caching, filesystem location of the PNG — is secondary but not trivial.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% (paths, labels, and colors have no schema descriptions), but the description compensates fully: 2-4 path count with accepted formats (STL, 3MF, OBJ, SCAD), label defaults of A/B/C/D, hex color examples, and the full angle enum that the schema only hints at with a default.
Input schemas describe structure but not intent. Descriptions should explain 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 and output ('Render 2-4 models side by side in a single comparison image') and frames itself as a 'general-purpose visual diff tool', which helps separate it from specialized siblings like compare_design_versions or compare_mesh_versions. It stops short of naming any sibling explicitly, so the differentiation is implicit rather than airtight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Use cases block gives concrete situations (texture variants, before/after iterations, color comparisons, parameter sweeps) that make selection easy. There is no 'when not to use' guidance and no pointer to alternatives such as visual_diff_meshes or render_model_preview for single-model previews.
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.
Kiln checks the compiled part is joined up. A piece that floats
with nothing under it is joined to nothing and prints as a loose
part on supports, or not at all, so the make is REFUSED
(``code: "FLOATING_PIECES"``; ``error`` names the pieces, how
far they are from the nearest surface, and the fix): correct
the geometry and compile again. Separate parts that all sit on
the bed are a plate and pass; a piece held inside the part (a
ball in a cage, a pin in its knuckles) passes with a warning; a
piece that touches the rest without overlapping it is named in
``warnings``.
Colour: pass ``color`` (a name such as ``"teal"`` or a hex) when
the user asked for one, and the preview and the 3D stage show
the part in it. Left out, a single ``color("...")`` in the
source is used. It is how the part is SHOWN; it prints in
whatever filament is loaded, and the result's ``color`` block
says so.
Round shapes: leave ``$fn`` out and Kiln cuts each curve by its
size, writing that rule into the file it compiles. Set ``$fn``
only for a deliberate polygon (``$fn = 6`` for a hexagon). A
file that sets ``$fn``, ``$fa`` or ``$fs`` at the top compiles
exactly as written, and the result's ``curve_resolution`` note
says so.
When you pass ``fastener``, the result carries a
``fastener_advice`` block saying the code compiled as written
and nothing resized the hole for that fastener. Kiln raises
it once per session across every tool that can raise it. Read
its ``agent_instruction`` before repeating any of it.
Args:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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).
fastener: The fastener the user named, e.g. ``"M4"`` — pass
only if they actually said one. Kiln does NOT read your
OpenSCAD looking for screw holes; guessing intent out of
geometry would be wrong often. No argument, no advisory.
color: The colour the user asked for, shown on the preview and
the stage (a name or ``#rrggbb``). Not a print setting.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Default: "". | |
| timeout | No | Default: 300. | |
| brief_id | No | Default: "". | |
| fastener | No | Default: "". | |
| scad_code | No | Default: "". | |
| scad_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly=false, destructive=false) by disclosing the FLOATING_PIECES refusal, which geometries pass versus warn, that color is display-only and not a print setting, that setting $fn/$fa/$fs at the top overrides Kiln's rule, and that fastener_advice is rate-limited once per session with an agent_instruction to read first. This is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose in one line and organizes the rest into labeled sections (Round shapes, Colour, MAKE DOORS). It runs long and repeats the display-versus-print idea about color, but nearly every sentence carries non-obvious 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?
With no output schema, the description compensates by describing what comes back: the STL path, the result's color block, the curve_resolution note, the warnings list for touching pieces, and the FLOATING_PIECES error with piece names and distances. It also covers the inline 3D stage so the agent knows to show the preview and iterate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are boilerplate defaults only, so the description does the real work: it explains brief_id's tie to design_session, the scad_code/scad_path either-or, the timeout default and when to raise it, and the precise conditions for fastener and color. A 5 is withheld only because mutual exclusivity of code vs. path is implied rather than stated as an error condition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Compile OpenSCAD code into an STL file') and immediately notes it accepts code OR a .scad path and returns the generated STL path. The MAKE DOORS section clarifies its role versus design_session, so an agent can place it against siblings like validate_openscad_code or analyze_scad_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?
Gives explicit conditional guidance: raise timeout for surface() heightmaps, leave $fn out unless a deliberate polygon, pass fastener only if the user named one, pass color only when requested, pass brief_id to join a goal. It doesn't explicitly name sibling alternatives (e.g., when to prefer tweak_and_compile_scad or validate_openscad_code), which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_print_recoveryA
Mark a recovery session as completed.
On failure (success=False) with ``alternative_printers`` and
kiln-pro installed, the answer can carry a
``reroute_recommendation``: whether the failed job should
move to one of those printers, and which. Choosing between
printers is Kiln Business (https://kiln3d.com/pricing); below
it the answer says so once in ``reroute_recommendation_gated``.
A failure that needs hands-on inspection of the printer is
held where it is, in ``reroute_recommendation``, at every
tier. Recommendation only; the agent runs any move itself
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 other printers the job
could move to (each with ``printer_id`` plus optional
``is_idle``, ``supported_materials``,
``build_volume_mm``, ``success_rate``). Read only
when ``success=False``. Single-printer setups can
omit this.
completion_pct_at_failure: How far the failed print got
(0.0–1.0); the recommendation weighs it. Defaults
to 0.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| success | Yes | ||
| session_id | Yes | ||
| alternative_printers | No | ||
| completion_pct_at_failure | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully explains reroute_recommendation behavior, Kiln Business gating, and that the agent must execute any move via submit_job/start_print, but it does not state core mutation traits such as whether completion is reversible, what permissions are required, or what happens to the session beyond being marked completed.
Agents need to know what a tool does to the world before calling 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 primary purpose and then uses a clear Args section. It is somewhat long because of the detailed reroute recommendation and pricing-gate explanation, but those details are relevant to correct interpretation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 failure-path return field reroute_recommendation and its gating, which is helpful given there is no output schema. However, it does not describe the normal success return or the mutation's side effects, and no annotations are present to cover those 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?
Despite only 40% schema description coverage, the description explains all five parameters well. It defines session_id, success, notes, alternative_printers with expected object fields and read conditions, and completion_pct_at_failure with its 0.0–1.0 range and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Mark a recovery session as completed.' It is clear what the tool does, but it does not explicitly distinguish itself from sibling recovery tools such as confirm_print_recovery, cancel_print_recovery, or plan_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 usage is implied by the phrase 'Mark a recovery session as completed' and further context is given for the failure path with alternative_printers. However, there is no explicit guidance on when to choose this tool versus confirm_print_recovery or cancel_print_recovery, nor are exclusions stated.
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 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?
With no annotations at all, the description carries the full burden and does well: it says the tool mutates an existing assembly by merging meshes, writes a file to output_path, opens an interactive 3D stage in capable hosts, and auto-decimates oversized meshes for that stage. Missing details like overwrite behavior of an existing output file keep it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and destination, then Args, then the stage-behavior note where it belongs. Every sentence adds information an agent would otherwise lack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 inputs, the merge semantics, the output artifact, and a notable side effect (interactive stage panel, decimation). What's absent is failure handling and whether an existing output file is overwritten, which matters for a file-writing mutation.
Complex tools with many parameters or behaviors need more documentation. Simple 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 largely does: assembly_json is defined as the assembly state JSON and output_path as the destination for the composed STL. It doesn't mention that assembly_json also accepts an object per the anyOf schema, a minor omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: merges individual part meshes according to their positions and writes a combined STL. It clearly positions itself as the final-composition step versus siblings like add_assembly_part or create_assembly, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'the current assembly state', which suggests running after parts have been added. There is no explicit statement of when to call it, preconditions (e.g. a valid assembly), or naming of alternatives such as merge_stl or compose_models.
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 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 must carry the full burden. It discloses key behaviors: no boolean operations, concatenation of geometry, inline 3D stage with automatic decimation. However, it omits whether the output file is overwritten, how missing files are handled, and permission requirements—leaving notable 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 core purpose, followed by useful constraints and alternatives. The inline stage note is somewhat lengthy but earns its place by describing a significant side effect; overall it remains 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 complexity, no output schema, and lack of annotations, the description covers purpose, parameters, return value, and side effects. It is nearly complete, missing only edge-case details like overwrite behavior and error 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?
Schema coverage is 0%, but the description compensates by clarifying that `file_paths` accepts .stl/.obj/.glb files and `output_path` is for the combined STL. This adds meaningful context beyond the bare schema titles, though it could specify whether paths are relative or absolute.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (merge) and resource (mesh files), explains the result (single combined model), and distinguishes from siblings by naming `merge_mesh_files` and `merge_stl` with their differences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 ('useful for multi-part assemblies') and explicitly points to alternatives with different parameter styles or offset support. It does not state when to avoid this tool, but the alternative comparison is sufficient.
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 .3mf, ready to slice**, containing all parts with
per-part AMS/extruder slot assignments. This is the correct way to hand
a multi-color design to a slicer — it receives one file, not multiple.
It is a model, not a sliced plate, so no printer starts it as it stands:
slice it first. ``fits_bed`` says whether the plate fits the bed it was
composed for; when it does not, the message says by how much and what to
do, and does not offer it for printing.
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. Slice and print (or slice_model to look at the slice first):
slice_and_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.
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).
material: Optional material the parts will be printed in (e.g.
``"PETG"``). A spool on record in a clearly different
material is then not named as one to load.
printer_id: Optional supported printer model id. When it resolves,
its build volume overrides ``plate_width`` / ``plate_depth``.
The composer centres an off-plate group on THIS plate, so name
the printer whenever you know it — a group arranged for a
larger or smaller bed and composed against the 256 default is
re-centred onto a plate the machine does not have.
Returns:
Dict with ``success``, ``output_path``, ``parts``, ``total_triangles``,
``total_vertices``, ``extruder_map``, ``fits_bed`` (``False`` when the
plate is bigger than its bed, ``None`` when it could not be measured),
``bed_fit`` (the sizes behind that verdict), and ``message``. It also says
whether the part colours are on the printer, as
``colour_availability`` (absent when Kiln cannot see what is loaded).
Relay its ``say`` as written and add nothing about filament: never
suggest buying filament unless the person asks for one or says yes
to the offer in ``say``. On a yes, call ``find_closest_filaments``
with these colours and the print's material.INLINE 3D STAGE: on success this tool 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 | ||
| material | No | Default: "". | |
| printer_id | No | Default: "". | |
| output_path | No | Default: "". | |
| plate_depth | No | Default: 256.0. | |
| plate_width | No | Default: 256.0. |
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 richly: it discloses the fits_bed verdict behavior (message says by how much and what to do, doesn't offer for printing), the colour_availability field presence/absence, the 'relay its say as written' constraint, and the inline 3D stage opening on success. These are non-obvious behaviors 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?
Front-loaded with the one-line purpose and the key 'model, not sliced plate' caveat before the detail. It is long, but the length is justified by nested-dict parameters and a worked example; almost every sentence adds real guidance, with only minor redundancy in the slicer compatibility bullets.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description documents the return dict (success, output_path, parts, triangle/vertex totals, extruder_map, fits_bed, bed_fit, message, colour_availability) and the downstream find_closest_filaments follow-up. Complete for a 6-param, nested-complexity composition 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 descriptions are thin ('Default: 256.0'), but the description fully compensates: it defines each parts dict key (stl_path, extruder 1-indexed AMS slot, name, color, material), and explains plate_width/depth defaults, printer_id override precedence and centering rationale, material's effect, and output_path defaulting. Far exceeds 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?
States a specific verb+resource+scope: 'Compose a multi-color / multi-material .3mf from multiple STL files.' It explicitly distinguishes itself from slicing tools ('It is a model, not a sliced plate') and points to slice_and_print/slice_model as the next step, so an agent can tell it apart from siblings like merge_multicolor_gcode 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?
Names when to use it ('the correct way to hand a multi-color design to a slicer') and when-not ('no printer starts it as it stands: slice it first'), plus a concrete step-by-step two-color workflow. Compatible slicers are enumerated. Alternatives and prerequisites are explicit.
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 brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
: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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_x_mm | No | Default: 256.0. | |
| bed_y_mm | No | Default: 256.0. | |
| brief_id | No | Default: "". | |
| operations | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". | |
| center_on_bed | No | Default: true. |
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 does so richly: it discloses the center_on_bed safety default with rationale, the OpenSCAD install dependency, and the return dict contents. The documented default-change and printer-damage incident give strong behavioral context beyond any structured 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?
Front-loaded with the core purpose, then bolded section headers for safety, operation format, shapes, and params, so it scans well. It is long for a tool description, and the incident anecdote borders on excess, but nearly every block earns its place for a nested-tree 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 complex 7-param tool with a nested operation tree and no output schema, the description supplies the operation grammar, dependency, safety behavior, side effects on the 3D stage, and an explicit :returns: summary. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is ~86%, but the description goes far beyond it: it fully specifies the primitive/boolean operation-tree grammar, per-shape params, brief_id goal-joining semantics, printer_id bed-size inference, and the exact effect of center_on_bed. This transforms a generic 'array of objects' schema into something an agent can actually author.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Build a functional part by composing geometric primitives with booleans') and immediately positions itself against the alternative text-to-mesh generation path. An agent can tell this is the deterministic CAD-composition path without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to choose this over text-to-mesh guessing ('describe parts as a tree of primitives... Produces exact, deterministic, functional parts'), and the MAKE DOORS note clarifies the relationship to design_session and compile_scad. It lacks an explicit 'when not to use' beyond the center_on_bed caveat, 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.
compute_iso_fitC
ISO 286 limits and fits with FDM achievability gate.
Kiln Pro would calculate the compensated feature, then check its surrounding wall, edge distance, and engagement constraints. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=compute_iso_fit
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| brief | No | ||
| material | No | Default: "PLA". | |
| grade_hole | No | Default: 7. | |
| hole_class | No | Default: "H". | |
| nominal_mm | Yes | ||
| printer_id | No | ||
| grade_shaft | No | Default: 6. | |
| shaft_class | No | Default: "h". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose one genuine behavioral trait — the tool is gated behind Kiln Pro — but never says what happens on a free tier (error, partial result, or upsell payload), and gives no information on the return shape, units, or whether the fit calculation still runs. The conditional 'would calculate' phrasing leaves the actual runtime behavior 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 purpose is front-loaded, but the second sentence is speculative marketing and the third and fourth restate the same paywall point plus an upgrade URL. Two of four lines are sales copy rather than operational information, so the text is padded rather than 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 nine-parameter engineering calculation with no annotations and no output schema, the description should explain the result (limits, tolerances, pass/fail gate outcome, units) and the gated behavior. It supplies neither, so an agent cannot predict what a successful call returns or how a failed gate is surfaced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Nine parameters at 67% schema coverage, and the description mentions none of them — not nominal_mm, the hole/shaft class and grade pairs, material, printer_id, or the auto/brief mode. The one required parameter and the class/grade semantics that drive an ISO 286 fit are entirely undocumented outside the schema, so the description adds no meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain (ISO 286 limits and fits) and mentions an FDM achievability gate, so the resource is identifiable. But it never states a clear verb or what the tool actually returns, and the conditional phrasing 'Kiln Pro would calculate...' makes it ambiguous whether this tool computes anything at all or merely reports a paywall. It also does not distinguish itself from close siblings such as tolerance_stack_analysis, recommend_running_clearance, or recommend_hole.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives in a large sibling set containing tolerance_stack_analysis, design_hole_for_product, recommend_hole, and recommend_running_clearance. The only condition given is a licensing prerequisite ('Requires Kiln Pro'), which is a constraint, not usage guidance.
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 | Default: "oidc". | |
| client_id | Yes | ||
| issuer_url | Yes | ||
| redirect_uri | No | Default: "". | |
| role_mapping | No | Default: "". | |
| client_secret | No | Default: "". | |
| allowed_domains | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it falls short for a mutation that rewrites authentication configuration. Apart from the 'Enterprise feature' note, it does not disclose required permissions, whether an existing SSO config is overwritten, whether the configuration is validated before being applied, or whether the change is reversible — the Args list mostly restates parameters rather than 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 purpose and enterprise scope are front-loaded, and the parameter notes are useful rather than filler. It is somewhat verbose in restating defaults already implied by the schema, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are covered well, which matters for a 7-parameter tool, but for a no-annotation, no-output-schema mutation the definition should still say what privileges are required, whether existing SSO settings are replaced, and what the caller gets back (e.g., a status or verification requirement).
Complex tools with many parameters or behaviors need more documentation. 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 substantial meaning beyond the 71%-covered schema: it supplies the enum domain for protocol ('oidc' or 'saml', which the schema lacks), an example issuer URL, the note that client_secret is optional for public clients, the actual default callback URL (schema only says Default: ""), a comma-separated example for allowed_domains, and a concrete JSON example for role_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?
The first line names a specific verb and resource ('Configure SSO (OIDC or SAML)') and scopes it to Enterprise authentication, which is enough to separate it from siblings like sso_status, sso_login_url, and sso_exchange_code. It does not explicitly name those siblings, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Saying 'Enterprise feature' establishes a licensing prerequisite, which is real usage guidance. However, there is no statement of when to use this versus sso_status or sso_login_url, no mention that admin/owner privileges are needed, and no note about whether it replaces an existing SSO configuration.
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.
consent_window_statusA
Which standing consent windows are open, for what, until when.
A standing window is the person's "yes, for a while": inside it,
prints start on the named printer without asking each time (each
one still previewed first). Only the person opens one — by
picking "yes, and for the next…" in the approval dialog, or with
``kiln consent window`` at a terminal. Nothing an agent can call
opens or extends one. Closing one is always allowed: see
``revoke_consent_window``.
An entry with ``always: true`` is always allow: the person turned
it on for one printer — at a terminal, or on their Kiln account
page (``opened_via`` says which) — it has no end (``until`` is
null), and prints there start without asking until it is turned
off. ``turned_off`` lists any that Kiln turned off itself in the
last day because a different printer was set up under the name.
Args:
printer_name: Show only the window covering this printer.
Omit for every open window.
| 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 the full burden and does so well: it explains that prints start without asking but are still previewed, that agents cannot open/extend a window, that closing is always allowed, and it decodes return semantics (always:true, until=null, opened_via, turned_off). This is substantial behavioral disclosure beyond structured 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 key question is front-loaded and every paragraph earns its place given the non-obvious domain concept. It is on the long side with indented prose, but the density of useful information is high rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-style status tool with no output schema and no annotations, the description supplies the concept, the agent's constraints, and the meaning of returned fields, leaving nothing essential for correct invocation unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 single parameter has no description), so the description must compensate and does: it explains printer_name filters to the window covering that printer and that omitting it returns every open window.
Input schemas describe structure but not intent. Descriptions should explain non-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 states a precise verb+resource+scope: reporting which standing consent windows are open, for what, and until when. It distinguishes itself from siblings by explicitly naming revoke_consent_window as the tool for closing one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context: only a person can open a window, nothing an agent can call opens or extends one, and closing routes to revoke_consent_window. It stops short of explicitly telling the agent when to consult this status versus other print-authorization tools like may_i_print, but the routing it does provide is clear.
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 | Default: "B". | |
| print_time_seconds | No | Default: 0. | |
| geometric_signature | Yes | ||
| geometric_signature_v2 | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does real work: it states the contribution is anonymous, that only geometric signatures and settings are stored, and that file contents, user IDs, and file paths are never sent. It also explains the federation dedupe consequence of supplying job_id. What it omits is operational behavior — whether the call fails offline, whether it is queued, idempotency on repeat calls, or what a successful response confirms.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and privacy guarantee are front-loaded before the argument list, so a reader gets the essentials in two sentences. The Args block is longer than most, but each entry adds rationale rather than restating the parameter name, so little text is wasted; only the per-parameter formatting feels heavier than 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?
For a ten-parameter, no-output-schema write operation, the description covers inputs and privacy well but says nothing about the result of the call — no confirmation of what is stored, no error or offline behavior, and no explicit gating such as opt-in or consent requirements for community data sharing. An agent could construct the call correctly but would not know what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 30%, and the description substantially compensates by documenting all ten arguments, including the accepted outcome values, the A–F grade range and default, and the two defaults the schema does state. The rationale for geometric_signature_v2 (preventing merge into a different design sharing the older signature) and job_id (dedupe anchoring) are genuinely additive. It falls short of 5 because the contents expected in the `settings` dict and the units for print_time_seconds remain unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb and resource — contribute a print outcome to the community registry — and the second narrows the scope to anonymous community aggregation. It is distinguishable from nearby record-* tools, though it never explicitly contrasts itself with record_print_outcome or record_print_dna, leaving that separation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the privacy/aggregation framing rather than stated: an agent can infer this is the opt-in community sharing step. However, there is no explicit 'use this when / not when' guidance and no stated precondition (opt-in status, connectivity, whether it can be called after a print ends). The only alternative-tool mention, record_print_outcome, appears as a dedupe note, not as routing advice.
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_decoration_presetB
Create or version a decoration preset on a branch.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_decoration_preset
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| notes | No | Default: "". | |
| depth_mm | No | Default: 1.2. | |
| design_id | No | ||
| preset_id | No | ||
| created_by | No | ||
| pattern_id | Yes | ||
| branch_name | No | Default: "main". | |
| pattern_family | Yes | ||
| image_asset_path | No | ||
| selected_face_ids | No | ||
| surface_selection | No | Default: "outer_faces". | |
| image_asset_sha256 | No | ||
| posterization_tier | No | ||
| parent_preset_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it does contribute two real behavioral facts: the operation is branch-scoped and it requires Kiln Pro (a plan/precondition gate). It still omits mutation semantics, what versioning does to prior versions, idempotency, and failure behavior, leaving meaningful 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 first sentence is well front-loaded and does the essential work. The second paragraph is marketing framing ("Kiln Pro would save this as...") that restates the purpose rather than adding operational information, and the upgrade URL, while short, is promotional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations and no output schema, the definition is thin: no parameter guidance, no statement of what is created/returned, and no branching/versioning semantics. The plan precondition is the only material addition, leaving the agent under-informed for correct 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 only 27% across 15 parameters, so the description needed to compensate and does not mention a single parameter (name, pattern_family, pattern_id, or the versioning-related preset_id/parent_preset_version_id). An agent gets no extra meaning beyond the schema's terse 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?
States a specific verb and resource with scope: "Create or version a decoration preset on a branch." An agent immediately knows this produces a persisted, versioned preset. It does not, however, name or contrast itself against close siblings like save_decoration, create_decoration_preset_branch, or apply_decoration_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Create or version" implies the two conditions under which this is used, and "ready to apply to any future design" hints at reusability, so usage is implied. But there is no explicit when-to-use-vs-alternative guidance and no exclusions relative to the many sibling preset tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_decoration_preset_branchC
Fork a new branch from a specific preset version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_decoration_preset_branch
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| preset_id | Yes | ||
| annotation | No | Default: "". | |
| created_by | No | ||
| parent_branch_id | No | ||
| base_preset_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose one meaningful trait — the paid-tier gate — which an agent needs before invoking. It says nothing about what the fork copies, whether it consumes decoration quota, or what happens on a nonexistent preset_version_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence describes the tool; the remaining three lines are marketing copy ('Everything in Free, plus calibration that learns your printer...') and a tracking-tagged upsell URL. The Pro requirement is worth one clause, not a third of the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 6-parameter mutation tool with no annotations and no output schema needs substantially more: which fields are required, what the base version defaults to, and what a successful fork returns. The description covers only the tier gate.
Complex tools with many parameters or behaviors need more documentation. Simple 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 17% across 6 parameters, so the description must compensate and does not. 'From a specific preset version' loosely hints at base_preset_version_id, but parent_branch_id, created_by, and annotation are neither documented in the schema nor clarified here.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a clear verb and resource — forking a new branch from a specific preset version — which is enough for an agent to distinguish it from sibling creation tools like create_decoration_preset. It stops short of naming related siblings (list_decoration_preset_branches, rebase_preset_branch), so differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the fork concept and adds a real prerequisite ('Requires Kiln Pro'), but never says when to fork versus create a fresh preset, nor which sibling to use for listing or merging branches. The upgrade URL is an upsell, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_designC
Create an empty design slot — gh repo create for 3D.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_design
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Default: "". | |
| design_id | Yes | ||
| description | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that the created design is empty and requires Kiln Pro, but says nothing about uniqueness of design_id, side effects, failure modes, permissions, or what is returned after creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful definition is front-loaded in the first sentence, which is good. However, the middle sentence reads like product marketing and the upgrade URL adds promotional noise rather than invocation 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 creation/mutation tool with no annotations and no output schema, the description is thin. It lacks enough detail about required inputs, behavioral effects, and expected outcome for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is moderate at 67%, and the required design_id parameter is undocumented in both the schema and the description. The description's mention of 'named, versioned' hints at naming but does not explain any of the three parameters or how they should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create an empty design slot', reinforced by the 'gh repo create' analogy. It is clear what the tool does, though it does not explicitly distinguish itself from nearby creation tools such as create_design_branch or create_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives, despite many sibling tools that also create design-related artifacts. The description only states a Kiln Pro requirement, not the conditions or prerequisites that select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_design_branchC
Create a new named branch forked from a specific version. Subsequent saves on this design flow to the new branch.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_design_branch
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| design_id | Yes | ||
| annotation | No | Default: "". | |
| created_by | No | ||
| base_version_id | No | ||
| parent_branch_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does useful work by disclosing that subsequent saves flow to the new branch and that Kiln Pro is required — both non-obvious behavioral facts. It omits what happens if base_version_id is omitted, whether the branch name must be unique, and any error/permission behavior beyond the tier gate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but the remaining lines are marketing copy ('preserve this version so you can branch, restyle, compare outcomes...') plus an upgrade URL with tracking parameters, which dilutes the actionable 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?
For a six-parameter mutation with no annotations and no output schema, the description leaves the parent/version relationships and success behavior undefined. It covers the tier gate and the save-routing effect but not enough for an agent to call it confidently without guessing at 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 coverage is only 17% (just a default for 'annotation'), so the description must compensate and largely doesn't. It gestures at 'a specific version' and 'named branch', hinting at base_version_id and name, but says nothing about design_id, parent_branch_id, or created_by, leaving half the inputs undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create a named branch forked from a specific version) and even the follow-on effect. It does not distinguish this from sibling branch creators such as create_feature_branch, create_decoration_preset_branch, or rebase_design_branch, so an agent must infer which flavor applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose sentence implies the scenario (branch to restyle/compare without losing the current design) and the Pro requirement is a real prerequisite. However, there is no explicit statement of when NOT to use it, nor a pointer to the alternative branch tools in the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_feature_branchC
Fork a named branch from a feature version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_feature_branch
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| annotation | No | Default: "". | |
| created_by | No | ||
| feature_id | Yes | ||
| parent_branch_id | No | ||
| base_feature_version_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 does not disclose that this is a mutating operation, what permissions or tier gating actually apply at call time, whether the new branch inherits state from the parent branch, or what happens on name collision. Worse, most of the text describes unrelated Pro features (calibration, mid-print edits, textures), which can mislead an agent about what the tool does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence is substantive; the following three lines are pricing/advertising copy that inflates the definition without adding operational meaning. The one useful sentence is front-loaded, but the majority of the text does not earn 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?
A six-parameter mutating tool with no annotations and no output schema needs far more than one sentence plus an upsell. Nothing explains branch identity/uniqueness, required permissions, or how the returned branch relates to the parent, leaving real gaps for correct 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 17% -- only 'annotation' carries a default -- so the description must compensate and does not. It never distinguishes feature_id from base_feature_version_id, nor explains parent_branch_id (branch from a branch) versus base_feature_version_id (branch from a version), which is the key semantic decision for this 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 gives a specific verb and resource: fork a named branch from a feature version. It does not differentiate from siblings such as create_design_branch, create_decoration_preset_branch, or rebase_feature_branch, so the agent must infer which branching tool applies. The remaining sentences add no clarity about the operation at all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus rebase_feature_branch, create_design_branch, or cloud_clone_feature, and no prerequisites or follow-up steps. The only guidance-like text is a commercial upsell ('Requires Kiln Pro. Upgrade: ...'), which does not help the agent decide when to call this tool.
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 | Default: "pla". | |
| quantity | No | Default: 1. | |
| model_url | No | ||
| model_path | No | ||
| prefer_local | No | Default: true. | |
| printer_name | No | ||
| max_budget_usd | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description still discloses that the tool creates an order, returns a quote with local and fulfillment options, and requires a follow-up quote confirmation call. However, it does not describe permission requirements, persistence or side effects of creating the order, or what happens if conflicting source parameters are supplied.
Agents need to know what a tool does to the world before calling 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 action and workflow, then uses an Args block to document parameters efficiently. It is appropriately sized for a ten-parameter tool, though the docstring-style formatting is 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?
No output schema exists, but the description tells the agent that the return value is a quote with local and fulfillment options and that print_service_quote should be called with the order ID to confirm. That covers the key invocation and follow-up behavior, leaving only secondary lifecycle details unstated.
Complex tools with many parameters or behaviors need more documentation. 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 only 30%, the description explains all ten parameters, including the one-of constraint for model_path/model_url/prompt, default values, the intent enum values, and the meaning of options like prefer_local and max_budget_usd. This adds substantial semantic clarity 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 gives a specific verb and resource: creating a Print-as-a-Service order and obtaining a quote. It also names the source-input options and the follow-up sibling tool print_service_quote, so the agent can distinguish this from quote-only or status 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?
It clearly states that exactly one of model_path, model_url, or prompt should be provided, and that print_service_quote is called afterward with the returned order ID. This gives strong workflow guidance, though it does not explicitly state when not to use this tool versus related fulfillment/order tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectB
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the Enterprise license requirement and the high-level purpose, but does not explain mutation side effects, duplicate-name handling, permissions beyond licensing, or what the call returns; for a creation tool 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 compact and front-loaded: purpose first, then a short domain explanation, then parameter meanings, then the license requirement. Every sentence contributes useful information without 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 four-parameter mutation tool with no annotations and no output schema, it covers the essentials an agent needs to select and invoke it: fields, requiredness implied by the schema, and license prerequisite. It remains incomplete regarding return behavior, duplicate handling, and related cost-reporting tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, but the description compensates by explaining all four parameters: name with an example, client as a client/cost-center identifier, description as optional, and budget as an optional cap in the configured currency. This adds meaningful semantics 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 gives a specific verb and resource ('Create a project') and explains the domain purpose ('for cost tracking' / allocating costs to client engagements). It is clear what the tool does, though it does not explicitly distinguish itself from nearby cost-related siblings such as project_cost_summary or log_project_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 useful context that manufacturing bureaus use projects for cost allocation and notes the Enterprise license prerequisite. However, it gives no explicit when-not-to-use guidance or alternatives such as whether existing projects should be reused or how this relates to project_cost_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_teamC
Create a team (sub-group) inside an org.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=create_team
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | Yes | ||
| org_id | Yes | ||
| created_by | No | ||
| description | No | Default: "". | |
| parent_team_id | 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 disclose a real behavioral fact: the Kiln Business requirement attaches to the org owner's plan, not the caller's. That is genuinely useful context an agent cannot get from the schema. However, it says nothing about slug uniqueness, name collisions, error behavior, or what the created team looks like on return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence earns its place, but the second paragraph is marketing boilerplate about Kiln Business and the third is an upgrade URL with tracking parameters. Roughly half the text is sales copy rather than operational guidance for the 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?
For a six-parameter mutation tool with no annotations, no output schema, and 17% schema coverage, an agent still lacks slug semantics, uniqueness constraints, and failure modes. The description spends its budget on plan gating and upsell instead of the operational 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 only 17% across six parameters, so the description must compensate and largely does not: it never explains slug format or uniqueness, whether name must be unique in the org, or what created_by defaults to. The phrase "sub-group inside an org" weakly hints that parent_team_id enables nesting, but nothing is stated explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Create a team (sub-group) inside an org" names a specific verb (create), a specific resource (team), and its containment scope (inside an org). The parenthetical clarifies the org/team hierarchy, which distinguishes it from list_teams or delete_team without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a prerequisite (the org owner must be on Kiln Business), which is usage-relevant, but it never says when to call this versus siblings like add_team_member, apply_role_template, or manage_team_member, nor what happens if the plan requirement is unmet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_branch_ab_reportC
Rank semantic features by their measured outcome impact across branches.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cross_branch_ab_report
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| min_outcomes_per_branch | No | Default: 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it says nothing about how features are ranked, what outcome data it requires, whether results are cached, or what happens when branches are sparse. The remaining two sentences are a Pro-tier advertisement that conveys no behavioral information about this 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 purpose is correctly front-loaded in one sentence, but the following two sentences are a pricing upsell with a tracking URL, entirely unrelated to invoking this report. Two-thirds of the text does not earn 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 two-parameter analytical report with no output schema and no annotations, the description should explain required inputs, expected data conditions, and the shape of the ranking. It provides none of that, and instead spends its space on subscription marketing.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: design_id has no description anywhere, and min_outcomes_per_branch is documented only as 'Default: 3.' The description adds nothing about what design_id identifies or how the threshold changes the ranking, so it fails to compensate 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 first sentence gives a specific verb (rank), resource (semantic features), and scope (across branches), which is far better than restating the name. However, it never distinguishes itself from the near-identical siblings cross_preset_ab_report and cross_feature_ab_report, leaving the agent to infer the difference from 'branch' alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this report versus compare_branches, cross_preset_ab_report, or cross_feature_ab_report, and no prerequisites (e.g. branches needing outcome data) are given. The agent receives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_feature_ab_reportC
Rank feature-branch variants by per-outcome performance.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cross_feature_ab_report
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | Yes | ||
| min_outcomes_per_branch | No | Default: 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses a Kiln Pro entitlement requirement, but does not say whether the tool is read-only, what data is returned, whether it mutates anything, or how failures are surfaced; the marketing copy adds noise rather than behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence is task-relevant. The remaining plan-comparison marketing text and upgrade URL are front-loaded after the purpose but do not help an agent invoke the tool, making the definition unnecessarily 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?
With no annotations, no output schema, and only partial parameter documentation, the description should explain the report's behavior and parameter meaning more fully. Instead it prioritizes subscription marketing, leaving important invocation context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: feature_id has no schema description, and min_outcomes_per_branch only notes the default. The description does not explain what feature_id identifies, what an outcome is, or how the minimum threshold affects ranking, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource: rank feature-branch variants by per-outcome performance. It is clear enough to act on, though it does not explicitly distinguish itself from close siblings such as cross_branch_ab_report or cross_preset_ab_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the other A/B report tools, no preconditions beyond paid-plan gating, and no exclusions. The agent must infer the appropriate context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_preset_ab_reportC
Cross-preset outcome A/B analysis.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=cross_preset_ab_report
| Name | Required | Description | Default |
|---|---|---|---|
| preset_inputs | Yes | ||
| min_outcomes_per_preset | No | Default: 3. |
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 only discloses the paywall gate ('Requires Kiln Pro' with an upgrade URL). The remaining sentences are an unrelated feature catalogue ('calibration that learns your printer, mid-print edits, unlimited textures') that says nothing about what the analysis does, how much data it scans, or whether it fails when a preset has too few 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?
Only the first fragment serves the tool's purpose; the next three sentences are pricing/upsell boilerplate and a feature list unrelated to cross-preset A/B analysis. The useful prerequisite is buried in the middle of the marketing copy instead of being 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 two-parameter analysis tool with no annotations and no output schema, the description should at minimum explain the input contract and what the report contains. Instead it spends its length promoting the Pro tier, leaving an agent unable to construct valid preset_inputs.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: min_outcomes_per_preset is documented in the schema, but preset_inputs is a bare untyped array with no description. The description adds nothing about either parameter - not the expected shape of a preset input, how many presets are expected, or the default of 3 outcomes per preset.
Input schemas describe structure but not intent. Descriptions should explain non-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 'Cross-preset outcome A/B analysis' names the resource (presets) and the activity (A/B outcome comparison), so an agent can infer this compares outcomes across presets. However it never explains what a 'preset input' is or how it differs from the sibling tools cross_branch_ab_report and cross_feature_ab_report, leaving the scope of the comparison 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?
The only guidance offered is the entitlement note 'Requires Kiln Pro', which is a prerequisite rather than a when-to-use rule. Nothing tells the agent when to pick this over cross_branch_ab_report or cross_feature_ab_report, nor what happens if the Pro plan is absent.
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 | Default: "z". | |
| file_path | Yes | ||
| offset_mm | No | Default: "". | |
| offset_ratio | No | Default: 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully explains that offset_mm overrides offset_ratio and that 0.5 is the midpoint default, but it does not disclose error behavior, mesh format constraints beyond STL, or whether the operation is purely non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core operation is front-loaded in the first sentence, and the docstring parameter block is structured and readable. It is somewhat verbose for a four-parameter tool, but every section adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description supplies return keys including contour_count, contour_points, and cross_section_area_mm2, plus default and override semantics. It still leaves the contour_points structure and failure conditions unspecified, so it is 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 materially improves on the schema: it defines plane as an axis perpendicular to the cut with values x/y/z, explains offset_ratio as a 0.0-1.0 fractional position, and states that offset_mm overrides offset_ratio when set. This is strong added meaning beyond the schema's sparse parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: computing a 2D cross-section of a mesh at a cutting plane. It also clarifies the output (contour polygons and cross-sectional area), making the operation easy to distinguish from general mesh inspection tools, though it does not explicitly name sibling 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?
It gives a clear use case: inspecting internal geometry such as wall thickness or hole placement. However, it does not say when not to use it or name alternatives like inspect_mesh_view or analyze_mesh_geometry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cutter_wear_statusC
How worn is this machine's filament-cutter blade, against the maker's own number.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes | ||
| printer_model | No | Default: "". | |
| recent_faults | 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 implies a read-only wear report and hints that the comparison is against a manufacturer threshold ('the maker's own number'), but says nothing about whether it reads live printer state or logged replacement events, what permissions are needed, or what the returned value represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and comparison basis come first. The conversational question framing is slightly informal but costs nothing in 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?
For a 3-parameter tool with no annotations and no output schema, the description is too thin: it never explains the return value (percentage, threshold flag, boolean?) even though no output schema exists to cover it, and it leaves two undocumented parameters unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33%, and the single 'description' present is just a default value for printer_model, not semantics. The description adds no meaning for printer_id, printer_model, or recent_faults, so an agent cannot tell why recent_faults is an input to a wear query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (this machine's filament-cutter blade) and the specific operation (report how worn it is, measured against the maker's spec number). This distinguishes it from sibling nozzle_wear_status by naming the cutter blade explicitly. It is a clear read-purpose statement, though the question phrasing is informal rather than a crisp verb+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?
There is no guidance on when to call this versus alternatives such as nozzle_wear_status, maintenance_due, or record_cutter_replacement. It never states prerequisites (does the printer need to be online? is it derived from replacement history?) or any exclusion conditions.
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.
deboss_during_printC
Carve a debossed image into the top of an in-flight print (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=deboss_during_print
| Name | Required | Description | Default |
|---|---|---|---|
| bevel | No | Default: true. | |
| bed_temp | No | Default: 65. | |
| depth_mm | No | Default: 1.2. | |
| threshold | No | Default: 0.35. | |
| gcode_path | Yes | ||
| image_path | Yes | ||
| output_dir | No | ||
| top_layers | No | ||
| hotend_temp | No | Default: 220. | |
| image_scale | No | Default: 0.7. | |
| resume_z_mm | No | ||
| aspect_policy | No | Default: "auto_crop". | |
| current_layer | Yes | ||
| filament_type | No | Default: "PLA". | |
| package_as_3mf | No | Default: true. | |
| printer_z_known | No | Default: false. | |
| source_3mf_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, yet it only says this modifies an in-flight print and needs Pro. It never discloses that rewriting gcode mid-print is destructive, whether the original file is preserved, whether a pause is required, or what safety/authorization constraints apply — critical omissions for a mutation tool with 17 parameters. The 'calibration that learns your printer' and 'mid-print edits' phrasing is marketing copy rather than 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 functional sentence is front-loaded and clear, but it is followed by tier-marketing copy and an upgrade URL that consumes roughly half the text without helping invocation. The core description is well structured but padded with promotional 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?
For a 17-parameter mid-print mutation with no annotations and no output schema, the description is far too thin: it omits the expected workflow (image + gcode + current layer in, modified output out), the meaning of output_dir/package_as_3mf, and any risk or rollback information. An agent could not confidently call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. 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 17 parameters and only 65% schema coverage — and that coverage consisting of bare 'Default: X' strings rather than meaning — the description should compensate but adds nothing about any parameter. Key inputs like current_layer, resume_z_mm, printer_z_known, aspect_policy, and depth_mm are left entirely unexplained in both the schema and the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb ('carve a debossed image') and resource ('top of an in-flight print'), which tells an agent exactly what happens and when in the print lifecycle. It does not distinguish itself from close siblings like decorate_during_print or add_feature_during_print, which an agent would need to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Pro' and the upgrade URL give a gating prerequisite, and 'in-flight print' implies the usage window. However, there is no explicit guidance on when to choose this over decorate_during_print or add_feature_during_print, nor any stated exclusions or preconditions (e.g. print must be paused, layer must match).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decorate_during_printB
Add a decoration to an in-flight paused print (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=decorate_during_print
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| bevel | No | Default: true. | |
| style | No | Default: "stencil". | |
| bed_temp | No | Default: 65. | |
| depth_mm | No | Default: 1.2. | |
| threshold | No | Default: 0.35. | |
| decoration | Yes | ||
| gcode_path | Yes | ||
| output_dir | No | Default: "". | |
| hotend_temp | No | Default: 220. | |
| image_scale | No | Default: 0.7. | |
| printer_name | No | Default: "default". | |
| aspect_policy | No | Default: "auto_crop". | |
| current_layer | Yes | ||
| filament_type | No | Default: "PLA". | |
| image_center_xy | No | ||
| printer_z_known | No | Default: false. | |
| source_3mf_path | No | Default: "". | |
| target_ams_slot | No | Default: -1. | |
| parent_design_id | No | Default: "". | |
| require_ams_match | No | Default: true. | |
| accept_unsafe_depth | No | Default: false. | |
| start_layer_override | No | Default: 0. | |
| target_filament_type | No | Default: "". | |
| target_filament_color | No | Default: "". | |
| accept_bridge_cascade_risk | No | Default: false. | |
| manual_material_change_confirmed | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavior: Pro gating, that it opens an interactive 3D stage, that oversized meshes are auto-decimated, and that the PNG is a floor. However it says nothing about the mutation itself or the risky-looking params (accept_unsafe_depth, accept_bridge_cascade_risk, manual_material_change_confirmed), which is a notable omission for a write 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 purpose is correctly front-loaded, but the body is padded with tier marketing ('Everything in Free, plus calibration...') and an upgrade URL, and the INLINE 3D STAGE paragraph largely restates the first sentence's claim about opening the stage. Several sentences do not earn their 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 26-parameter mutation tool with no annotations and no output schema, the description covers only purpose, Pro gating, and viewer behavior. It omits the safety-relevant parameters, the paused-print workflow, and any mutation/risk context, leaving significant gaps an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple 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 85%, so the schema already documents the 26 parameters (mostly as 'Default: X'), establishing the baseline of 3. The description adds no parameter-level meaning beyond the word 'decoration'; it explains only stage rendering 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 opening sentence gives a specific verb and resource with a sharp scoping constraint: 'Add a decoration to an in-flight paused print.' That clearly separates it from static decoration siblings like decorate_surface or apply_decoration. It stops short of naming an alternative tool, but the in-flight scope 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?
Usage is implied by the constraint 'in-flight paused print (Pro)', which tells the agent the required print state, but no alternative tool is named and no explicit when-not guidance is given. An agent must infer from sibling names when to prefer this over decorate_surface, batch_decorate, or deboss_during_print.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decorate_during_print_fleetB
Apply the same decoration to N paused printers at once (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=decorate_during_print_fleet
| Name | Required | Description | Default |
|---|---|---|---|
| bevel | No | Default: true. | |
| bed_temp | No | Default: 65. | |
| depth_mm | No | Default: 1.2. | |
| printers | Yes | ||
| threshold | No | Default: 0.35. | |
| decoration | Yes | ||
| hotend_temp | No | Default: 220. | |
| image_scale | No | Default: 0.7. | |
| aspect_policy | No | Default: "auto_crop". | |
| filament_type | No | Default: "PLA". | |
| parent_design_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does supply a real behavioral constraint (printers must be paused) and the tier gate (Kiln Business) plus fleet size limits (3 to 50). It says nothing about failure semantics, partial success across the fleet, reversibility of applied decoration, or whether this blocks the 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?
Only the first sentence describes behavior; the remaining sentences are redundant commercial copy ('Business+', 'Business adds team review...', 'Requires Kiln Business') plus a pricing URL. The tier requirement could be stated once, and the marketing pitch crowds out operational 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?
An 11-parameter fleet mutation with no annotations and no output schema needs more than a tier gate and a scope sentence. Critical operational facts — what is returned, whether the fleet is decorated atomically, what happens if some printers are not paused — 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 description coverage is 82%, so the schema already documents defaults for bevel, threshold, aspect_policy, temps, etc. The description only echoes the two required parameters (decoration, printers) at a high level and adds no meaning about how a single decoration is mapped across N 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?
States a specific verb, resource, and scale: 'Apply the same decoration to N paused printers at once.' This clearly separates it from single-printer siblings like decorate_during_print and from batch_decorate, and the 'paused printers' phrase pins down the operating 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?
The prerequisite that target printers must be paused is stated, and the fleet scope implies when to prefer this over single-printer decoration. However, no sibling is named as an alternative and no exclusion (e.g., unpaused or mixed-state fleets) is spelled out, so routing is inferred rather than instructed.
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 content around the upright round wall of a cup,
jar, vase or bowl (STL, deboss only). TEXT wraps letter by
letter; an SVG logo or a bi-level raster mark (line art, a
wordmark, a traced logo) wraps as a radial carve — equal arc
length along the wall, uniform depth, placed on the plain band of
the wall clear of any thread band, rim bead or rib.
Continuous-tone photo relief is not wrapped (use a flat face such
as a lid). Content reads correctly from outside; size and carve
depth may be adjusted to keep it 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 (text) or the
mark's width as a share of the readable 120° arc (marks), and
*absolute_size_mm* pins the letter height / mark width exactly;
*offset_x/y_mm* and *placement* do not apply (content sits
centred on the front at mid-band). The wrap engines ship with
kiln-pro and are included on the hosted service (api.kiln3d.com)
on every tier; without them 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 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 | Default: "auto". | |
| mode | No | Default: "deboss". | |
| scale | No | Default: 0.7. | |
| svg_id | No | Default: "". | |
| content | Yes | ||
| depth_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| placement | No | Default: "center". | |
| svg_layer | No | Default: "". | |
| model_path | Yes | ||
| image_style | No | Default: "auto". | |
| offset_x_mm | No | Default: 0.0. | |
| offset_y_mm | No | Default: 0.0. | |
| template_id | No | Default: "". | |
| content_type | No | Default: "auto". | |
| absolute_size_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so: it discloses the OpenSCAD local dependency, that the wrap engines require kiln-pro/hosted service, single-color coin-relief output with no multi-material, automatic face detection and content scaling, and unverified/limited behavior on back and left/right faces. It also discloses the side effect of opening an inline 3D stage and mesh decimation for oversized meshes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-sentence purpose then the routing decision, which is the right order. It is long, but the length is largely justified by 16 parameters and many modes; minor waste remains, such as "See docstring for all options" for image_style when the docstring is the description itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, yet the description covers the return (output STL path, preview info, metadata), the inline stage behavior and fallback, and the prerequisite/limitation set for every risky mode. Nothing an agent needs to call this correctly in a single shot appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88% (baseline 3), but the description adds substantial meaning the schema cannot: face-local offset semantics with per-face world-axis mapping, what scale means on a flat face versus a cup wall, what depth_mm=0 auto-derives from material, and when svg_id/svg_layer actually take effect. It also notes placement/offset_x/y do not apply on "wall".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Put any image, text, or pattern onto a 3D model surface") and immediately disambiguates from the tiling siblings apply_geometric_texture and apply_procedural_texture, framing itself as one-off content placement. An agent can pick it out of the very large sibling list without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternatives and the condition that selects them (repeating patterns → texture tools; one-off logos/text → this tool), and gives concrete invocation examples. It also gives face-selection guidance: prefer top/bottom/front when exact placement matters and note the wall-wrap path for cylindrical parts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decoration_historyA
Get every version of a saved decoration (Kiln Pro).
Each version with when it was made, what changed, the materials
it has printed well on and its print count.
:param name: Decoration name or slug.
:returns: Dict with the version history and the current version.
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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 reasonably well: it enumerates what each version record contains (creation time, what changed, materials it printed well on, print count) and states the return shape as a dict with history plus current version. Gaps remain around not-found behavior, version ordering, and any size/pagination limits on the history list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first line, then a compact enumeration of returned fields. The Sphinx-style ':param' / ':returns' markup is slightly mechanical but each line carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers purpose, parameter format, and the shape of the result well enough to call it correctly. The only real omission is failure behavior for an unknown decoration name/slug, which is minor for a read-only lookup.
Complex tools with many parameters or behaviors need more documentation. Simple 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, and it does: the single required parameter is documented as accepting a 'Decoration name or slug', which is meaning the schema does not convey. No further detail (case sensitivity, ambiguity handling) is 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?
States a specific verb and resource: 'Get every version of a saved decoration.' The scope ('every version', plus the current version in the returns note) distinguishes it from sibling readers like decoration_info or list_decorations. It stops short of naming a sibling explicitly, so an agent must infer the boundary from the version-history framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, when-not-to-use, or named alternative (e.g., decoration_info for current state vs. this tool for history). Usage is only implied by the tool name and the word 'history'. The '(Kiln Pro)' tag hints at a plan prerequisite but is not explained as a precondition.
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 | Default: "global". | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden; 'Remove' signals mutation but the description never states that deletion is permanent, what happens if the key is absent, or whether permissions are required. It does add real behavioral context about targeting, explaining that printer_name switches to the 'printer:<name>' scope namespace rather than acting as a plain filter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One summary sentence followed by per-argument definitions — front-loaded and free of filler. The reStructuredText 'Args:' block with deep indentation is slightly awkward to parse but every line carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations and no output schema, the description covers targeting semantics well but is silent on irreversibility, missing-key behavior, and what is returned. Adequate to invoke correctly, not complete enough to invoke confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only scope carries a default note; key and printer_name are bare), so the description must compensate, and it does: key is defined as the note's key, scope as a namespace defaulting to 'global', and printer_name as the switch to 'printer:<name>' scope. That last mapping is genuinely non-obvious from the schema and materially changes how an agent calls the 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 states a specific verb and resource: 'Remove a stored note or preference.' An agent can tell this is the deletion counterpart to save_agent_note, but the description never names that sibling or otherwise differentiates itself from clean_agent_memory, so the sibling distinction is only inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives (save_agent_note, clean_agent_memory, get_agent_context) and no preconditions such as whether the note must exist or whether deletion is reversible. The agent is left to infer usage entirely.
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_custom_paletteC
Delete a saved custom color palette.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=delete_custom_palette
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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, yet it never states whether deletion is permanent or reversible, what happens to palettes referenced by designs, or what the tool returns. The 'Requires Kiln Pro' line hints at an entitlement gate, but it reads as an upsell rather than a behavioral disclosure, and the remaining three lines of pricing copy add noise rather than 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 useful content is one short sentence; the following three lines are a feature blurb and a pricing URL that do nothing for tool selection or invocation. Front-loading is fine, but roughly 75% of the text does not earn 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?
This is a destructive mutation with no annotations, no output schema, and an undocumented parameter, so the description must supply safety and behavior context. Instead it omits irreversibility, error behavior, and entitlement details while spending most of its length on unrelated Pro-tier advertising.
Complex tools with many parameters or behaviors need more documentation. 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 a single required parameter 'name' with 0% description coverage, so the description needed to clarify that this is the palette's display name, whether matching is case-sensitive, or what happens on an unknown name. It says nothing about parameters at all, leaving the sole input entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource ('Delete a saved custom color palette'), which is unambiguous and clearly distinct from siblings like save_custom_palette and list_custom_palettes. It stops short of explicitly naming those siblings as alternatives, so it lands just below 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?
There is no guidance on when to use this versus alternatives, nor any preconditions such as whether the palette must exist or be unlocked. The only conditional signal ('Requires Kiln Pro') is buried in marketing copy rather than framed as a usage requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_decorationA
Delete a decoration preset — retire it (default, recoverable) or erase it permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Default: "". | |
| permanent | No | Default: false. | |
| preset_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 it delivers the most important behavioral fact for a destructive tool: the default operation is recoverable and the permanent option erases. It still omits what 'retire' actually does to the preset (hidden from listings? still referenced?), any permission requirements, and any mention of the 'confirm' parameter's role.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the verb+resource and then immediately states the default/recoverable-vs-permanent distinction. Every clause earns its place 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 destructive mutation tool with no annotations, no output schema, and an unexplained 'confirm' parameter, the description covers the critical reversibility question but leaves meaningful gaps: the effect of retiring on references and listings, how recovery is performed, and how confirm/permanent interact.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67% and the description adds real meaning for 'permanent' (false = retire/recoverable, true = erase permanently), which goes beyond the schema's bare 'Default: false.' It says nothing about the 'confirm' parameter or the required 'preset_id', so half the parameters remain unilluminated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a decoration preset') and even names the two modes of deletion, so the agent knows exactly what operation it is. However, it never differentiates itself from siblings such as archive_decoration_preset or unarchive_decoration_preset, whose 'retire' semantics appear to overlap with the soft-delete described here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 distinguish between the two internal modes (default retire vs. permanent erase), which implies when each is appropriate. But it gives no guidance on when to use this tool versus the closely related archive_decoration_preset, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_designA
Delete a design — retire it (default, recoverable) or erase it permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Default: "". | |
| design_id | Yes | ||
| permanent | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the critical behavioral trait that retire is recoverable by default and erase is permanent, which is valuable. It omits permissions/auth requirements, side effects on versions/branches/releases, and any irreversibility warnings beyond the word 'permanently'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the action and immediately contrasts the safe default against the destructive variant. 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 destructive, annotation-free tool with three parameters, the description should at minimum explain the confirm parameter and downstream effects on branches/versions. It covers the mode semantics well but is incomplete about confirmation and 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 coverage is 67%; the schema already documents permanent's default and design_id is self-evident. The description adds the recoverability meaning of permanent=false, but leaves the 'confirm' parameter completely unexplained even though it is likely required for permanent deletion — a meaningful gap for a destructive 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?
States a specific verb and resource ('Delete a design') and clarifies the two deletion modes (retire vs. permanent erase). However, it doesn't distinguish itself from nearby siblings like archive_design/unarchive_design, which an agent could easily confuse with the 'retire' mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use each mode (default retire vs. permanent) and signals that the default is the safer option. It gives no guidance on prerequisites, when to prefer archive_design over this tool, or when permanent deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_featureA
Delete a feature — retire it (default, recoverable) or erase it permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Default: "". | |
| permanent | No | Default: false. | |
| feature_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 disclose the crucial behavioral trait that the default is recoverable while permanent erases. It omits confirmation requirements, permission implications, and whether dependents are affected, leaving meaningful behavioral gaps 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?
A single front-loaded sentence with the critical distinction between recoverable and permanent deletion stated immediately. 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 destructive tool with no annotations and no output schema, the description should do more: explain confirm, mention whether permanent deletion is irreversible without confirmation, and differentiate from archive_feature. The core mode distinction is present but important operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema does most of the work. The description usefully clarifies that permanent=false means retire and permanent=true means permanent erase, but it says nothing about the confirm parameter's role or expected 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 states a specific verb ('Delete') and resource ('feature') and clarifies two modes, retire or permanent erase. It nonetheless fails to distinguish the tool from the nearby sibling archive_feature, which appears to offer a similar recoverable-hide 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?
It explains the default recoverable mode versus permanent erase, which is useful internal guidance. However, it never says when an agent should pick this tool over archive_feature, delete_design, or rollback_feature, and gives no prerequisites.
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_teamC
Delete a team, its memberships, and its scope grants.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=delete_team
| Name | Required | Description | Default |
|---|---|---|---|
| team_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 usefully discloses that deletion cascades to memberships and scope grants, which is real behavioral context beyond the name. However, it omits irreversibility, required permissions, and what happens to artifacts owned by the team, and pads the rest with marketing copy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in the first sentence, but three of the four sentences are plan/upgrade marketing that does not help an agent select or invoke the tool, so a large share of the text does not earn 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 destructive, cascading delete with no annotations and no output schema, the description should explain permissions, irreversibility, and consequences. It offers only a garbled plan requirement plus promotional content, leaving the operationally important behavior undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter team_id has no schema description. The description never explains the parameter's format, source, or how to obtain it, so it does not compensate 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 first sentence gives a specific verb and resource ('Delete a team') and adds the cascade scope ('its memberships, and its scope grants'), which meaningfully distinguishes it from sibling mutations like remove_team_member or delete_design. It stops short of naming a sibling it is not, so it is clear but not fully 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?
There is no when-to-use guidance: nothing tells the agent when to delete a whole team versus removing individual members via remove_team_member, or what prerequisites precede deletion. The plan/upgrade sentences are about pricing, not invocation conditions, so they provide no actionable selection guidance.
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.
derive_assembly_planC
Derive an assembly plan from part GEOMETRY — no hand declaration needed.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=derive_assembly_plan
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| design_id | No | Default: "". | |
| part_names | No | ||
| part_paths | No | ||
| pin_recipes | No | ||
| assembly_name | No | Default: "derived-assembly". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the tool derives a plan from geometry and requires Kiln Business, but it does not disclose whether the plan is persisted, what side effects occur, what permissions are needed, how failures are handled, or what the result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful intent is front-loaded in the first sentence, but the following sentences are promotional plan and upgrade messaging rather than tool behavior. Those lines do not help an agent invoke the tool correctly and take up most of the 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?
This is a complex derivation tool with seven parameters and no output schema, yet the description does not explain expected inputs, output plan structure, or operational behavior. It only states the high-level purpose, the no-hand-declaration angle, and the Kiln Business requirement, which is not enough for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 57%, and several inputs such as part_names, part_paths, and pin_recipes have no schema descriptions. The description mentions part geometry but does not explain kit_id versus design_id, how part paths or names are supplied, what pin recipes mean, or how material and assembly_name affect the derived plan.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: derive an assembly plan from part geometry. It also distinguishes the approach from manual declaration, but it does not name the closest sibling tools such as create_assembly or validate_assembly, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when an assembly plan should be generated automatically from geometry, and it says Kiln Business is required. However, it gives no explicit when-to-use guidance versus alternatives, no prerequisites beyond the plan tier, and no exclusions or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_faceC
Return metadata for a single semantic face on a product.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=describe_face
| Name | Required | Description | Default |
|---|---|---|---|
| face_name | Yes | ||
| product_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 implies a read operation but never says what 'metadata' contains, whether a Pro license is actually required to call it, or how it behaves if the face name is unknown; the embedded 'Requires Kiln Pro' block is ambiguous in a tool-naming context and could mislead an agent about access. No return shape or error behavior is 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 useful content is a single sentence; the following three lines are marketing/pricing noise irrelevant to invoking the tool, consuming roughly half the text. Front-loading is fine, but a large fraction of the description does not earn 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?
Two required params with zero schema coverage, no annotations, and no output schema, yet the description never explains the parameters, the source of valid face names, or what metadata is returned. For a lookup tool whose only inputs are untyped strings, this is materially 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% — both required parameters (face_name, product_type) are bare strings with no titles beyond the raw names. The description adds nothing: no example values, no indication of whether face_name must come from list_decoratable_faces, no note that product_type should match list_product_types. Nearly all semantic load is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource — 'Return metadata for a single semantic face on a product' — which unambiguously tells an agent this is a read of one face's metadata. It does not differentiate from close siblings like get_product_faces, list_decoratable_faces, or get_face_emboss_depth, so an agent cannot route confidently between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus get_product_faces (plural discovery) or get_face_emboss_depth. The remaining text is a pricing/upsell block about calibration, mid-print edits, and textures — none of which relate to describing a face — so it provides no usable selection guidance.
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 | Default: "". | |
| printer_model | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. 'Analyzes' and 'Ask' imply a read-only advisory call with no mutation, and it lists the recommendation categories returned, but it never explicitly states there are no side effects, no auth requirements, or a cost/latency 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 call-FIRST triage signal is front-loaded ahead of the bullet list of outputs. The docstring-style :param/:returns block is slightly redundant formatting, but every line carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter advisory tool with no output schema and no annotations, the description covers what the call consumes and what the returned dict contains (approach, template match, materials, constraints, complexity). Nothing critical is missing, though explicit read-only/side-effect language would close the last 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 67% and the schema only offers a bare 'Default: ""' for two parameters, so the description genuinely compensates: material is explained as the already-named material that 'tunes the constraint analysis', and printer_model as an optional constraint input. Only prompt is left as a near-restatement of its 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 names a specific action (ask which generation method to use), scopes it to a 'design idea', and labels itself a triage tool. Enumerating the three candidate approaches (template, OpenSCAD, AI) makes its role distinguishable from downstream generators, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'triage tool — call FIRST' is an explicit ordering instruction that tells the agent when to reach for it. It stops short of naming alternatives or stating when it should be skipped (e.g. a user who already knows the method), so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_for_loadC
Cantilever bending design verdict with FoS + derate chain.
Kiln Pro would compute the load verdict — factor of safety and derate chain included — and recommend the bracing and joints to carry it. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=design_for_load
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| brief | No | ||
| load_n | Yes | ||
| hardware | No | ||
| material | No | Default: "petg". | |
| design_id | No | Default: "". | |
| length_mm | Yes | ||
| printer_id | No | ||
| version_id | No | Default: "". | |
| cycle_count | No | Default: 1. | |
| load_position | No | Default: "tip". | |
| cross_section_mm | Yes | ||
| application_class | No | Default: "consumer_product". | |
| count_self_weight | No | Default: true. | |
| print_orientation | No | Default: "along_layer". | |
| cross_section_kind | No | Default: "rectangular". | |
| load_duration_days | No | Default: 0.0. | |
| service_temperature_c | 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 usefully discloses the paid-tier entitlement requirement, but says nothing about what actually happens when called without Kiln Pro (error, stub, upgrade prompt), what the verdict response contains, or whether any computation occurs at all. The "would compute" phrasing actively obscures runtime 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?
Compact and front-loads the verdict concept, but two of four lines are marketing/upsell material ("Kiln Pro would compute...", pricing URL) that consume space without helping an agent decide or call. Tighter than most, but the hypothetical framing wastes the strongest position.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An 18-parameter structural analysis tool with a nested cross_section_mm object, no output schema, and no annotations needs the description to explain inputs and results. Instead it explains neither, and doesn't clarify the tier-gate behavior — leaving the agent unable to predict either the call contract or the 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?
With 18 parameters at 61% schema coverage, several inputs (load_n, length_mm, cross_section_mm, application_class, cycle_count, print_orientation) are undocumented. The description adds zero parameter meaning — nothing on units, valid cross-section shapes, or how mode/application_class interact with the derate chain, which is exactly what an agent would need to call this correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Cantilever bending design verdict with FoS + derate chain" names a specific analysis output and distinguishes it from broader siblings like analyze_structural_risks or assess_load_bearing. However, the framing "Kiln Pro would compute the load verdict" makes it ambiguous whether this tool performs the analysis at all or merely returns an upsell, which undercuts 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?
The only selection guidance is "Requires Kiln Pro" — an entitlement condition, not a when-to-use rule. No mention of when to prefer this over estimate_structural_load, assess_load_bearing, analyze_frame_bracing, or record_load_outcome, among the many structural siblings in the catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_hole_for_productB
Design a hole or slot sized to fit a real-world product.
Kiln Pro would calculate the compensated feature, then check its surrounding wall, edge distance, and engagement constraints. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=design_hole_for_product
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "PLA". | |
| fit_class | No | Default: "". | |
| printer_id | No | Default: "". | |
| hole_depth_mm | No | Default: 0.0. | |
| product_query | Yes | ||
| blind_or_through | No | Default: "through". | |
| edge_distance_mm | No | Default: 0.0. | |
| wall_thickness_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the Kiln Pro gating requirement and that the tool calculates a compensated feature and checks wall, edge distance, and engagement constraints, but it does not clarify whether the call mutates the design, what it returns, or what happens when Kiln Pro is unavailable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the gating requirement is clearly separated. The upgrade link is slightly promotional but useful for an agent that needs to route the user, and the overall text is free of 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 an 8-parameter tool with no output schema and no annotations, the description gives useful process and gating context but leaves key gaps: whether design_hole_for_product creates geometry or only computes a recommendation, what the response looks like, and how errors are surfaced. It is adequate but incomplete for 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 88%, so the schema already documents most parameters. The description adds conceptual context for product_query, wall thickness, and edge distance checks, but does not explain how fit_class, material, blind_or_through, or hole_depth_mm affect the result beyond their schema 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 uses a specific verb and resource: 'Design a hole or slot sized to fit a real-world product.' This distinguishes it from generic mesh-editing siblings and from recommendation tools. It does not explicitly name a closely related sibling alternative such as recommend_hole, so it falls short of perfect 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?
Usage is implied by the purpose statement, and the 'Requires Kiln Pro' line adds an important prerequisite. However, the description does not say when to use this versus alternatives like recommend_hole or compute_iso_fit, nor does it describe exclusion cases.
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 and what each does for the part
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 | Default: 4.0. | |
| sharp_angle_threshold_deg | No | Default: 60.0. |
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 shape and scoring scale (0-100, A-F) and the advisory character ('design advisor, not just a geometry validator'), but never states whether it only reads the STL or applies any reinforcements, or what permissions/costs are involved — important ambiguity given siblings like apply_design_reinforcements 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 the core purpose and a useful enumerated output list, but the bold marketing lines ('makes Kiln a design advisor, not just a geometry validator', the gusset anecdote) consume space without helping selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does cover return content via the numbered plan sections plus ':returns: Complete improvement plan as dict'. For a no-annotation, read-style analysis tool the description is nearly sufficient; missing only cost/runtime expectations and any prerequisite on design state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the description compensates: file_path is documented as a path to an STL file (a format constraint the schema's bare 'File Path' title omits), min_cross_section_mm2 gains semantic meaning ('minimum safe cross-section area'), and sharp_angle_threshold_deg is explained as the angle for sharp-edge detection, which the schema only labels with a default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Generate a complete structural improvement plan for a design', and enumerates the four outputs (risks, reinforcements, load analysis, score). It implicitly differentiates itself from the single-purpose siblings ('combines risk analysis, reinforcement recommendations, and load analysis into one report') but never names analyze_structural_risks, recommend_design_reinforcements, or design_advisor, so an agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'full pipeline / one actionable report' framing — use this when you want everything at once rather than piecemeal analyses. There is no explicit when-to-use, when-not, or prerequisite (e.g. design must be loaded, mesh must exist), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_sessionB
Make, design or create any physical object — a part, a bracket, a box, a holder, a gift — as a 3D model ready to print: Kiln's front door for making, where every make for a person starts. Say what they want in plain English (a specific request goes straight to generate; a vague one gets a quick question or two), then generate the STL from OpenSCAD you write (scad_code), with a report of which design checks it passes; every other make tool is a path this one routes to, and takes this goal's goal_id. Verbs: start, update, save, generate.
| Name | Required | Description | Default |
|---|---|---|---|
| idea | No | Default: "". | |
| verb | Yes | ||
| answers | No | ||
| goal_id | No | Default: "". | |
| material | No | Default: "". | |
| scad_code | No | Default: "". | |
| spec_numbers | No | ||
| artifact_type | No | Default: "design". | |
| target_size_mm | No | ||
| decided_against | No | ||
| override_prompt | No | ||
| reference_images | 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 does disclose meaningful behavior: plain-English intake, conditional question generation, STL produced from OpenSCAD (scad_code), and a report of which design checks pass. However, the four verb modes (start/update/save/generate) and their side effects, permissions, or reversibility are 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?
Front-loaded with the core purpose, which is good, but it is a dense run-on sentence with em-dashes and nested parentheticals that make it harder to parse than necessary. Each clause is somewhat useful, but the structure could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with no annotations, no output schema, low schema coverage, and nested objects, the description is under-specified. It outlines the workflow but omits verb semantics and the roles of most parameters, leaving gaps an agent would need to guess.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 42% across 12 parameters, so the description must compensate and does not. It mentions only scad_code and goal_id, leaving idea, answers, material, spec_numbers, artifact_type, target_size_mm, decided_against, override_prompt, and reference_images undocumented in both schema and text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('make, design or create any physical object ... as a 3D model ready to print') and positions itself as the front door that other make tools route through. It differentiates from siblings by naming its routing role and the verbs (start, update, save, generate). Slightly sprawling, but the purpose is 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?
Gives concrete when-to-use context: 'every make for a person starts' here, and it routes to other make tools via goal_id. It further distinguishes a specific request (goes straight to generate) from a vague one (gets a quick question). No explicit when-not to use it, which keeps it below a 5.
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 brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
:param description: Natural-language design description.
:param output_dir: Directory for output files (uses tempdir if empty).
:param material: Material the slice is set for -- temperatures, melt
rate and cooling -- and weighed as.
: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.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| placement | No | ||
| output_dir | No | Default: "". | |
| description | Yes | ||
| printer_model | No | Default: "". | |
| infill_percent | No | Default: 20.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the five-step sequence, G-code conditional on slicer availability, return contents, and inline 3D stage behavior including automatic mesh decimation. Missing are explicit permission/auth needs or rate limits, but for a no-annotation tool the behavioral detail 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?
Front-loaded with a clear pipeline summary and numbered steps, then organized param and return sections. The INLINE 3D STAGE and MAKE DOORS paragraphs are long but add useful routing context. A few sentences could be tightened, but the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 multi-step tool with no output schema, the description explains return values (paths, weight, risks) and conditional G-code output. It also covers the inline stage and alternative make doors. Minor gaps remain around 'placement' and failure modes, but an agent has enough 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?
Schema coverage is 71%, so the schema documents many defaults, but the description adds meaningful semantics for six of seven parameters: brief_id links to a design goal, material affects temperatures/melt/cooling and weighing, printer_model drives slicer profile lookup, output_dir falls back to tempdir, and infill_percent is for weight estimation. It omits any explanation of the 'placement' parameter, leaving one 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?
States a specific verb+resource ('End-to-end pipeline: description → template → STL → analysis → GCode') and enumerates each step. It explicitly names design_session and compile_scad, clarifying its role versus those siblings, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that this is a one-call pipeline for full generation-to-G-code, and notes the conditional 'if slicer available'. It also explains the make-door situation with design_session and compile_scad. However, it does not explicitly state when to choose this over compile_scad or slice_and_estimate, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_version_healthC
Full health report for a design across all its versions.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=design_version_health
| Name | Required | Description | Default |
|---|---|---|---|
| design_name | No | Default: "". | |
| version_ids | 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 does disclose the 'Requires Kiln Pro' entitlement prerequisite, which is useful, but it does not state that the tool is read-only (implied by 'report' but unconfirmed) or describe what the report contains. Half the text is marketing copy, not 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 first sentence is front-loaded and useful, but the remaining two sentences are promotional upsell that do not help an agent select or invoke the tool. Every sentence should earn its place, and here half the description does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and only 50% parameter description coverage, the definition is under-specified. It never explains what metrics a 'health report' includes, how the version_ids are used, or what the caller receives, leaving significant gaps for an agent trying 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 only 50%; version_ids has no description and design_name is documented only as 'Default: ""'. The phrase 'across all its versions' loosely implies version_ids, but the description does not explain the relationship between design_name and version_ids or the expected format of version_ids.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb+resource: 'Full health report for a design across all its versions.' This distinguishes it from sibling tools like list_design_versions or compare_design_versions by emphasizing a health assessment. However, it does not explicitly name alternatives or contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like compare_design_versions, get_design_version, or check_design_regression. The remainder of the description is an upsell, not usage context, so an agent gets no exclusions or prerequisites beyond 'Requires Kiln Pro.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_decoration_preset_merge_conflictsC
Detect field-level conflicts between two preset branches.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=detect_decoration_preset_merge_conflicts
| Name | Required | Description | Default |
|---|---|---|---|
| ancestor_preset_version_id | Yes | ||
| branch_a_preset_version_id | Yes | ||
| branch_b_preset_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 behavioral burden and largely fails it. It does not state whether the operation is read-only, whether conflicts are returned as a report, whether the caller needs a license at call time, or what happens when no conflicts exist. The 'Requires Kiln Pro' line hints at an entitlement gate but is framed as advertising, not 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 first sentence is well-formed and front-loaded, but two of the three sentences are product-marketing boilerplate about calibration, mid-print edits, and unlimited decorations that adds no information about this tool. The closing upgrade URL with tracking parameters is pure noise in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and 0% parameter coverage, the description should explain the three-way comparison model and the shape of a detected conflict. It instead spends its remaining budget on an upsell, leaving an agent unable to predict inputs or 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% across three required parameters, so the description must compensate and does not. It refers to 'two preset branches' while the schema requires three IDs (ancestor plus branch A/B), which understates the three-way merge input and could mislead an agent about what to supply.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: 'Detect field-level conflicts between two preset branches.' The word 'preset' distinguishes it from siblings like detect_feature_merge_conflicts and detect_merge_conflicts. However, the description never names those siblings or scopes the tool beyond the resource noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative (detect_merge_conflicts, detect_feature_merge_conflicts, compare_branches) is mentioned. 'Requires Kiln Pro' is the only contextual condition, and it is buried inside an upgrade pitch rather than offered as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_feature_merge_conflictsD
Three-way semantic-merge conflict detection for features.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=detect_feature_merge_conflicts
| Name | Required | Description | Default |
|---|---|---|---|
| source_feature_version_id | Yes | ||
| target_feature_version_id | Yes | ||
| ancestor_feature_version_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 fails: it never states whether the tool is read-only or mutating, whether it requires auth or a paid tier, or what the result contains. The 'Requires Kiln Pro' line even implies a licensing gate that may not exist for this operation, muddying rather than clarifying 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?
Only the first sentence earns its place; the following two marketing sentences and the upgrade URL are dead weight that dilute the purpose statement. It is not oversized, but the majority of the text is irrelevant to invoking 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?
With no annotations, no output schema, and no parameter documentation, the description would need to explain the mutation profile, how to obtain the three version IDs, and roughly what conflicts are reported. None of that is present, and the ad copy displaces the space where it should be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Three required parameters have 0% schema description coverage and the description gives them no individual treatment. The phrase 'three-way' loosely implies an ancestor/source/target relationship matching the parameter names, but format, valid ID sources, and expected merge base are all undocumented, so the description falls well short of compensating.
Input schemas describe structure but not intent. Descriptions should explain non-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 'Three-way semantic-merge conflict detection for features' gives a specific verb and resource, which is genuinely informative. However, the remaining three sentences are unrelated product marketing about printer calibration, textures, and a paid upgrade that have nothing to do with conflict detection, and the description never distinguishes this tool from siblings like detect_merge_conflicts or detect_decoration_preset_merge_conflicts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 run conflict detection versus the sibling detect_merge_conflicts, nor any prerequisites such as needing the three version IDs to be on a common ancestry. Instead the text pushes a 'Requires Kiln Pro / Upgrade' message that actively misleads an agent about availability rather than helping it choose the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_merge_conflictsC
Three-way diff of two branches: what merges, and what must be decided.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=detect_merge_conflicts
| Name | Required | Description | Default |
|---|---|---|---|
| resolutions | No | ||
| source_lines | No | ||
| target_lines | No | ||
| source_branch_id | No | ||
| target_branch_id | No | ||
| source_version_id | No | ||
| target_version_id | No | ||
| ancestor_version_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. 'Diff' implies a read-only computation, but the description never confirms this, nor does it mention permissions, whether resolutions are applied or just reported, or what the result covers. The marketing lines about calibration and textures are actively unhelpful 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?
The first sentence is well-formed and front-loaded, but the following three lines are copy-pasted plan marketing ('Everything in Free, plus calibration that learns your printer... Requires Kiln Pro. Upgrade: <url>') that do not earn their place in a merge-conflict 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?
With 8 mostly undescribed parameters, no output schema, and no annotations, the description must compensate heavily. Instead it omits all parameter and result detail and pads with unrelated plan messaging, leaving an agent unable 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 description coverage is 0% across 8 parameters, including nested objects (resolutions, source_lines, target_lines). The description says only 'two branches' and adds no meaning for source_branch_id, target_branch_id, ancestor_version_id, source_version_id/target_version_id, or the resolutions/lines inputs. It fails to compensate for the total schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Three-way diff of two branches: what merges, and what must be decided' gives a specific verb and resource, so the core purpose is recoverable. However, it does not distinguish this from sibling tools like detect_feature_merge_conflicts, detect_decoration_preset_merge_conflicts, or source_merge_three_way, all of which operate on branches. The remaining lines describe printer calibration and textures, which are unrelated to merge detection and muddy 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?
There is no statement of when to use this tool versus compare_branches, source_merge_three_way, or the feature/decoration-specific conflict detectors. The only additional text is a plan/pricing pitch, which provides no actionable usage context.
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 | Default: 0.3. |
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 reasonably well: 'Analyzes' signals a non-mutating read, it scopes detection to top and bottom faces, and it discloses the default threshold (0.3mm). It omits analysis cost, failure modes on unreadable/non-manifold STLs, and explicit read-only confirmation.
Agents need to know what a tool does to the 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 workflow guidance, then params and return value. Each sentence earns its place; the only cost is the docstring-style ':param/:returns' formatting, which is slightly redundant with the schema but 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?
No output schema exists, and the description supplies a return summary ('Dict with pocket list, dimensions, and positions'), which is the key missing piece. For a two-parameter read-only analysis tool this is nearly complete; only failure handling and units on returned dimensions 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 only 50% (file_path has no schema description), so the description usefully adds that file_path must be an STL and that min_depth_mm is the minimum depth to report with a 0.3mm default. This is meaningful but minimal compensation for the undocumented file_path parameter — no units, path format, or error behavior for 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 first line names a specific verb and resource ('Detect pockets and cavities in a mesh') and the second narrows scope to recessed circular/rectangular pockets on top and bottom faces of a base model. This is clearly distinct from siblings like auto_recess_pocket (which creates them) or compose_models, though it never names those alternatives 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?
Explicitly states when to call it: 'Call this before compose_models or multi_material_print to know pocket dimensions for overlay geometry.' That is a concrete workflow trigger naming two sibling tools. No when-not conditions or prerequisites (e.g. mesh must be manifold) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_print_failureB
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?
No annotations are provided, so the description carries the full burden. It does disclose the return contract (a failure report dict, or a success dict with failure_detected: False), which is valuable, but it says nothing about side effects, permissions, rate limits, or whether it writes anything. For a read-style analysis tool this is acceptable 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?
Front-loaded with the purpose sentence, then organized into failure classes, Args, and Returns. The Args block is somewhat docstring-shaped and longer than necessary, but every line adds usable information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 supplies the return shape, and with 0% schema coverage it documents each parameter's intent. Nested objects are open-ended (additionalProperties: true) and only partially enumerated, but an agent has enough to construct a valid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it names the role of all four parameters and supplies concrete example keys for telemetry (hotend_temp, bed_temp, connected, filament_detected), telemetry_history ordering ('newest last'), and job_info fields. It stops short of exhaustively defining the key sets for the permissive nested objects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: analyze printer telemetry to detect and classify a print failure, and enumerates failure classes (thermal runaway, layer shift, runout, adhesion loss, nozzle clogs). Clear on its own, but it never distinguishes itself from the many close siblings such as predict_print_failure, analyze_print_failure, analyze_print_failure_smart, and diagnose_print_failure_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 context (current telemetry plus optional history for trend analysis) but gives no explicit when-to-use, when-not-to-use, or which sibling to pick when the agent sees predict_print_failure or analyze_print_failure_smart. The choice among near-duplicate diagnostic tools is left entirely to inference.
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, 3MF, OBJ, PLY, OFF, GLB, and GLTF formats. A 3MF
holding several objects is read as one body — the report describes
the whole plate.
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, 3MF, 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?
With no annotations, the description carries the full burden and does well: it discloses the trimesh package dependency, supported formats, the multi-object 3MF handling caveat, and what the report contains (severity, defect list, fix steps). It doesn't discuss permissions or performance limits, but for a read-only local analysis tool that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the key sibling distinction, then organized into analysis scope, return content, dependencies, and pre-slice timing. Slightly long, but nearly every sentence adds actionable information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the structured report (severity level, defect list, actionable MeshLab/Blender fixes). Combined with format support, dependency requirements, and placement in the workflow, an agent has everything needed 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?
Schema coverage is 0% and the schema only says 'File Path', so the description must compensate. It does by listing the accepted formats (STL, 3MF, OBJ, PLY, OFF, GLB, GLTF) and clarifying that a multi-object 3MF is read as one body — meaningful semantics beyond the bare 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?
Opens with a specific verb+resource ('Deep mesh defect analysis') and enumerates exactly what is analyzed (self-intersections, holes, normals, fragments). It explicitly distinguishes itself from analyze_mesh_geometry and repair_mesh, so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use triggers ('when you suspect mesh defects or when repair_mesh didn't fix the issue') and when-not (analyze_mesh_geometry focuses on printability/overhang). It also names companions (validate_generated_mesh, analyze_printability) and states it should run before slicing.
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 the burden, and it does disclose that the tool reads live printer state, combines five analysis sources (temperature deltas, bed adhesion, overhang geometry, material properties, printer intelligence), and returns a ranked diagnosis with actionable fixes. It never states permission/auth requirements, behavior when the printer is offline or unreachable, or whether any printer state is mutated, which are the remaining gaps for an unannotated 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 behavioral summary is front-loaded and the sibling differentiation follows immediately, both earning their place. The reStructuredText 'Args:' block carries some formatting noise and mildly restates purpose, but the information density is high and nothing is redundant 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?
With no output schema and no annotations, the description still tells the agent what comes back (a ranked diagnosis with actionable fixes) and how each input sharpens the result. It falls short only on failure-mode behavior — offline printer, invalid model_path, unknown material — which an agent may hit at call time.
Complex tools with many parameters or behaviors need more documentation. Simple 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 Args block is doing all the work and it covers all four parameters: printer_name (omit for default), model_path (enables geometry-based diagnosis of adhesion/overhangs), material (with 'ABS'/'PLA' examples), and printer_id (enables printer-specific intelligence lookup, with 'bambu_a1' example). Each entry adds the consequence of supplying the parameter, not just its 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?
States a specific verb and resource ('Diagnose a print failure using live printer state + model geometry') and explicitly delimits scope, explaining that it works in real time from current printer state rather than from historical job data. It names the sibling it is not (analyze_print_failure) and the condition that separates them, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second paragraph is pure routing guidance: use analyze_print_failure when you have a job_id and historical data, use this tool when you want real-time state plus optional geometry. Optional-parameter effects are also framed as usage conditions ('Omit for the default printer', 'Enables geometry-based diagnosis'), which tells the agent when to supply more input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_assembly_manualsC
Compute a "what changed" PDF between two manual revisions (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=diff_assembly_manuals
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | No | ||
| manual_id_new | No | ||
| manual_id_old | No | ||
| spec_new_path | No | ||
| spec_old_path | No | ||
| release_id_new | No | ||
| release_id_old | No | ||
| version_id_new | No | ||
| version_id_old | No | ||
| include_retired | No | Default: false. | |
| output_pdf_path | No | ||
| release_name_new | No | ||
| release_name_old | No | ||
| assembly_new_json | No | ||
| assembly_old_json | No | ||
| include_intermediate | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely useful behavioral fact: the Business-tier requirement and that it writes a PDF output. It does not say whether the call is read-only, whether output_pdf_path is written to disk, what happens when a revision is missing, or whether the diff is against released or draft 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 core sentence is front-loaded and efficient, but two of four sentences are upsell copy ('Business adds team review, approval gates, and 3 printers', plus a pricing URL). The tier requirement is worth one clause; the feature tease and link do not earn their 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 tool with 16 all-optional identifier parameters, no annotations, and no output schema, the description is far too thin. An agent cannot tell how to construct a valid diff request, what the output artifact is beyond 'a PDF', or under what conditions the call fails on 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?
Schema description coverage is 13% (only two booleans have 'Default: false'), and the description adds no parameter meaning at all. For a 16-parameter tool with zero required fields, the agent is left guessing which identifier family forms a valid call, which is exactly the gap the description should have closed.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: 'Compute a "what changed" PDF between two manual revisions.' That is unambiguous. However, it never distinguishes itself from nearby manual tools (get_manual_revision, list_manual_history, generate_assembly_manual, find_manual_siblings), so an agent still has to infer why it should diff rather than generate or fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the tier gate ('Requires Kiln Business'). There is nothing on when to diff versus regenerate or list history, and nothing on which of the 16 mutually-substitutable identifier parameters (manual_id_*, version_id_*, release_id_*, spec_*_path, assembly_*_json) to supply in which situation.
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. Each one also carries
``address`` -- pass it as ``register_printer``'s ``host``; it
keeps the port the printer answered on -- and ``to_connect``:
what the person still has to supply and where they find it
(``still_needed``), and anything to switch on in the printer
first (``first``). Ask for exactly those, in plain words, then
add the printer with ``register_printer``.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Default: 5.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the discovery techniques (mDNS/Bonjour plus HTTP subnet probing), the scope (local network only), the default scan duration, and what each result contains including API reachability. It omits permission/network prerequisites and whether scanning is intrusive or rate-limited, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in one sentence, followed by mechanisms, then returns and next steps in the order an agent needs them. The Args block duplicates the schema and the returns paragraph is dense, but every section is actionable rather than 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?
There is no output schema, and the description fully compensates by enumerating the returned fields (host, port, type, API reachability, address, to_connect) and explaining how to use them. An agent has everything needed to call the tool and act on 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 coverage is 100% and there is only one optional parameter, so the schema already documents timeout and its default. The description's Args block only restates "maximum scan duration in seconds (default 5)" without adding behavior such as what happens on timeout or whether partial results are returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Scan the local network for 3D printers") and immediately narrows it with the discovery mechanisms and the printer families it covers. It is unmistakably distinct from sibling tools like register_printer or printer_status, which it references 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?
The description closes with a clear workflow: take the returned address/to_connect fields, ask the user for exactly the listed items, then call register_printer. That effectively defines when to use this tool versus its follow-on. It does not state when NOT to scan (e.g. printer already registered, no LAN access), 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.
dismiss_regression_alertC
Mark a regression alert as dismissed so it stops surfacing.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=dismiss_regression_alert
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes | ||
| previous_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it does not say whether dismissal is reversible, whether it suppresses one alert or all alerts for the version, or what permissions/tier are needed. The remaining text is a licensing upsell and pricing URL that describes Kiln Pro features, not this 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 first sentence is well-formed and front-loaded, but the following three lines are marketing copy about textures, calibration, and a pricing URL that do not help invoke the tool. Roughly three-quarters of the description is off-topic noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and two completely undocumented parameters, the description should explain parameter roles and the effect of dismissal. It instead spends its remaining space on a subscription pitch, so an agent cannot determine correct invocation from 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 description coverage is 0% and the description never mentions version_id or previous_version_id. The single required parameter is undocumented in both places, leaving the agent to guess whether previous_version_id scopes the dismissal or identifies the comparison that produced the alert.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: marking a regression alert as dismissed, plus the observable effect ('so it stops surfacing'). It does not name the sibling it complements (get_regression_alerts / check_design_regression), so an agent must infer the workflow, but the action itself 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?
There is no explicit when-to-use guidance and no mention of alternatives such as get_regression_alerts for viewing alerts before dismissing them. The only contextual hint is the consequence clause 'so it stops surfacing', which implies post-review use but never says so.
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, .glb) for the model.
A GLB goes to the printer as an STL beside it, never as a GLB; the
upload's ``conversion`` names the original, which stays on disk.
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 | Default: "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 carries the full burden and does substantial work: it warns that community models are unverified, states it does NOT auto-start printing, warns of physical damage risk, and explains the GLB→STL conversion with the 'conversion' field naming the original. It omits auth/permission requirements and whether existing printer files are overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the safety warning and the key non-printing constraint, which is the right priority. The Args block and the closing sentence 'After uploading, review the model and call start_print' restate the earlier start_print instruction, a minor 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 4-param mutation tool with no annotations and no output schema, the description covers the workflow, safety, and conversion behavior well. Remaining gaps are permission/authentication needs and file-overwrite behavior on the printer, which an agent would want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25%, but the description fully compensates: file_id format differences per marketplace (numeric for Thingiverse, string for MyMiniFactory), source enum values and default, printer_name default behavior, and model_id fallback semantics. This is richer than the schema itself.
Input schemas describe structure but not intent. Descriptions should explain 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 compound verb and resource: downloads model file(s) from a marketplace and uploads them to a printer. It is clearly distinguishable from siblings like download_model, upload_file, and start_print, and even calls out that printing is not part of this 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 routes the agent: file_id for a single file, model_id without file_id for all printable files, and names start_print as the required follow-up. It also notes Cults3D does not support direct downloads. It does not, however, contrast this tool against download_model or upload_file, so the sibling routing is incomplete.
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, check it, and open it on the stage.
The result says where the model came from (``came_from``: the
provider and the prompt) and, when the provider was asked for a
shape and not a size, that its numbers are not millimetres
(``size_check``). A note beside the file keeps where it came
from, so the stage and design history can say so later.
Args:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| brief_id | No | Default: "". | |
| provider | No | Default: "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 burden and does disclose important side effects: it saves a file to output_path, writes a provenance note beside the file, opens an interactive stage, and automatically decimates oversized meshes for the stage. It also explains returned metadata such as came_from and size_check, though it omits failure modes, overwrite behavior, and any auth or rate-limit 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 core purpose is front-loaded and the Args section is useful, but the description is long and includes extra sections like INLINE 3D STAGE and MAKE DOORS that are partly tangential to invoking this specific tool. The MAKE DOORS note about design_session and compile_scad is particularly distractive for an agent selecting download_generated_model.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 does a good job explaining the return metadata and stage-opening behavior. It is almost complete for correct invocation, but would benefit from clearer error/precondition handling and explicit relationship to nearby generation/preview tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the 50%-covered schema: brief_id is tied to design_session and goal joining, job_id is explicitly a completed generation job, provider values are given as 'meshy' or 'openscad', and output_path is described as a directory defaulting to the system temp directory. This fully compensates for the sparse 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 first sentence states a specific verb and resource: download a completed generated model, check it, and open it on the stage. It is clearly distinct from generation/status tools because it requires a completed job_id, though it does not explicitly name sibling alternatives such as preview_generated_model or generation_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?
Usage is implied through 'Job ID of a completed generation job' and the brief_id explanation, so an agent can infer this is for retrieving an already-finished generation. However, it never explicitly states when to use this versus preview_generated_model, generation_status, await_generation, or download_model, and there are no exclusions or alternative-routing instructions.
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:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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.
A downloaded GLB is handed on as an STL beside it, because the
stage, the slicer and printers cannot open a GLB: its
``local_path`` is the STL, and ``conversion`` names the
original, which stays on disk (``conversion_failed`` says so
when a GLB cannot be read). The stage opens on the first
downloaded file it can draw, and
the result measures that file (``validation``, ``dimensions``;
``size_check`` when its size reads like a units mix-up) and says
where the files came from (``came_from``: the marketplace and,
when its listing could be read, the designer, license and page).
A note beside each file keeps where it came from, so the stage
and design history can say so later; ``show_on_stage(path)``
opens any of the other files. Then upload to a printer with
``upload_file`` and print with ``start_print``.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Default: "thingiverse". | |
| file_id | No | ||
| brief_id | No | Default: "". | |
| dest_dir | No | ||
| model_id | No | ||
| file_name | No | ||
| download_all | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so richly: warns that community models are unverified, explains GLB-to-STL conversion and the conversion_failed flag, provenance capture (came_from, per-file notes), stage decimation of oversized meshes, and the downstream validation/dimensions/size_check results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and Args are front-loaded and the conversion/provenance detail is load-bearing, but the trailing paragraphs on the inline stage and the 'MAKE DOORS' note about compile_scad add substantial length that is tangential to invoking this 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?
There is no output schema, and the description covers the return surface thoroughly (local_path, conversion, conversion_failed, validation, dimensions, size_check, came_from), plus the caveat that social/marketplace content is unverified. An agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, but the Args block documents all seven parameters with meaning beyond the schema: brief_id's goal-joining role, file_id's origin in model_files results, file_name's single-file restriction, and download_all overriding file_id. This compensates fully for the low 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 first sentence states a concrete verb and resource ('Download model file(s) from a marketplace to local storage'), which separates it from generation tools like download_generated_model. Sibling differentiation is only implicit (marketplace vs generated), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: preview dimensions, validate with validate_generated_mesh before printing, then upload_file and start_print. It also explains where brief_id and file_id come from, but it never explicitly says when to choose this over download_generated_model or download_and_upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drying_advisorC
Is this spool ready to print -- and if not, exactly how to dry it?
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=drying_advisor
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "verdict". | |
| slot | No | ||
| ams_id | No | ||
| material | No | Default: "". | |
| show_math | No | Default: false. | |
| printer_name | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely fails it. It never says whether the tool reads live AMS/printer state or works offline, whether it mutates anything, what the verdict output looks like, or what happens when slot/ams_id are omitted (all params are optional). The tier-gating sentence is the sole piece of real behavioral context, and the rest of the copy describes features unrelated to drying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is one line; the remaining three lines are upsell boilerplate naming unrelated features (mid-print edits, textures, decorations) plus a pricing URL. That material does not help an agent invoke the tool and actively dilutes the single sentence that does. Front-loading the question is the one structural merit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 the description must cover return semantics, parameter behavior, and preconditions; it covers almost none of them. For a six-parameter tool with a default mode and no required arguments, an agent cannot tell what to pass or what it will get back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description contributes nothing about any of the six parameters — mode (defaulting to 'verdict'), slot, ams_id, material, show_math, or printer_name are all left to the schema titles alone. show_math in particular is opaque and unaddressed. This is below the baseline 3 that high coverage would justify, since a third of the parameters are undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-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 does convey the domain — assessing whether a spool is dry enough to print and how to dry it — which is more than a restatement of the name. But it is phrased as an end-user question rather than a specific operation (read state? compute a verdict? emit instructions?), and it never distinguishes itself from the sibling ams_filament_drying, which plausibly overlaps. Purpose is inferable but imprecise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions that select this tool over ams_filament_drying or the material/filament status tools, and no statement of prerequisites beyond the tier gate. The 'Requires Kiln Pro' line is the only operational constraint disclosed, and it is presented as marketing rather than as a precondition the agent can act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
embed_manual_in_3mfC
Augment a 3MF with the assembly manual + signed manifest (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=embed_manual_in_3mf
| Name | Required | Description | Default |
|---|---|---|---|
| pdf_path | No | ||
| manual_id | No | ||
| release_id | No | ||
| output_path | Yes | ||
| threemf_path | Yes | ||
| spec_json_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 discloses only the entitlement gate. It never says this is a write operation that produces a new file at output_path, whether an existing output is overwritten, what 'signed manifest' means (whose key, what verification), or what a failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, but three of four sentences restate the same Business tier gate and include a marketing upgrade URL with tracking parameters. That is roughly half the text spent on sales copy rather than tool 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 six-parameter file-mutating tool with no annotations and no output schema, the description omits overwrite semantics, signing requirements, expected failure modes, and any parameter guidance. The only substantive context is the paywall notice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters with 0% schema description coverage, and the description explains none of them. The relationships that matter — pdf_path vs manual_id vs release_id vs spec_json_path, and which are optional or mutually exclusive — are left entirely undocumented in both the schema and the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: augment a 3MF file with an assembly manual plus a signed manifest. That is materially clearer than a bare name restatement, but it never distinguishes itself from nearby siblings such as generate_assembly_manual or diff_assembly_manuals, so an agent cannot tell which one to pick from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Business' gives a hard precondition, which is genuine usage guidance, but there is no statement of when to use this versus generating a manual or diffing manuals, and no note on whether the source 3MF must be pre-existing or what happens when the manual is missing.
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 | Default: false. |
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 active latches block print commands, that clearing requires an acknowledgement note, what return fields are included, and that critical interlocks may prevent clearing.
Agents need to know what a tool does to the world before calling 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 behavior, then parameters and returns. Every sentence adds usable information, and the See also line provides routing without excess 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?
For a two-parameter status tool with no output schema and no annotations, the description is complete: it covers scope, blocking behavior, return fields, parameter defaults, and related clearing/stopping tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are explained beyond the schema: printer_name can target one printer or be omitted for all printers, and include_unlatched defaults to False and controls whether unlatched printers appear. This compensates for the 50% 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: 'Get the emergency stop latch status.' It scopes the operation to one printer or the entire fleet and distinguishes itself from emergency_stop() and clear_emergency_stop() via the See also 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?
It clearly establishes when the status matters: active e-stops block all print commands until clear_emergency_stop() is called. It names related tools, but does not explicitly state when to use this versus safety_status or fleet_status, nor does it list 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 the strongest stop each printer accepts: Moonraker's emergency-stop
endpoint; ``M112`` on OctoPrint, Duet and USB-serial printers; a cancel
plus ``M112`` on Elegoo; a job cancel on Prusa Link, which has no raw
G-code endpoint; and on Bambu the print-stop command, a heater cut and
``M112``. Creality printers use whichever of these their connection is.
Unlike ``cancel_print``, this is not meant to allow a graceful cooldown.
Only the Bambu stop is read back: its ``success`` means the printer
reported the job ended. On every other printer ``success`` means the
stop command was delivered, not that anything was observed. ``success``
is False for any printer whose stop failed or could not be confirmed;
when stopping all printers, ``not_confirmed_stopped`` lists each one with
the reason. Tell the user to stop those at the machine; calling this tool
again for them is safe.
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 | Default: "user_request". | |
| source | No | Default: "mcp". | |
| printer_name | 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 richly: it discloses per-printer stop implementations, that 'success' means delivered rather than observed except on Bambu, the not_confirmed_stopped failure list, the power-cycle/restart requirement after stopping, and the safety of repeated calls. This is far beyond anything a schema or annotation could convey.
Agents need to know what a tool does to the 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 the alternatives contrast, then behavior, then the warning. The per-printer implementation enumeration is long but earns its place by explaining why partial confirmation is possible. Slightly verbose, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description steps in to explain return semantics (success meaning delivered vs. observed, not_confirmed_stopped) rather than leaving the agent to guess. For a high-stakes, multi-backend destructive operation, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only reason/source have defaults documented), but the Args block documents all four: printer_name's None-stops-all semantics, reason codes with examples, source as audit label, and note as an optional operator note. The description fully compensates for the coverage gap and adds the critical None behavior absent from 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?
States a specific verb and resource ('Trigger an emergency stop on one or all printers') with explicit scope, and explicitly distinguishes itself from the sibling cancel_print ('this is not meant to allow a graceful cooldown'). An agent can route between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard inclusion criterion ('Use only in genuine safety emergencies (thermal runaway, collision, spaghetti failure...)') and names the alternative (cancel_print) with the condition that selects each. Also notes re-invocation is safe for unconfirmed printers, which bounds retry behavior.
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 | Default: "external_button". | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose meaningful traits: it triggers a software e-stop, is intended for external hardware, and requires a matching token when KILN_ESTOP_INPUT_TOKEN is configured, otherwise rejecting the request. It stops short of explaining effects on an active print or the reset/clear path after tripping.
Agents need to know what a tool does to the world before calling 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 action and then moves through caller distinction, auth requirement, and parameter meanings. The Sphinx-style parameter list is relevant and useful for a safety-critical tool, though slightly verbose given the schema also lists the fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter endpoint with no output schema and no annotations, the description provides enough context to invoke it correctly, including the auth prerequisite and the software-versus-hardware distinction. It would be stronger if it mentioned post-trip state or how the e-stop is cleared.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25%, but the description compensates by documenting all four parameters: printer_name as the target, input_name as a source label with default, token as the conditional authorization value, and note as an optional trigger reason. It does not add format details for printer_name or token, but the semantics are otherwise 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 opens with a specific verb and resource: 'Trip emergency stop from an external hardware bridge.' It also explicitly distinguishes this endpoint from the sibling emergency_stop(), so an agent can identify its purpose without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the intended caller/context clearly: physical input devices such as ESP32, PLC, or wired buttons calling over HTTP. It also names the alternative emergency_stop() and explains that the alternative is for agent/software-initiated stops, giving an explicit selection rule.
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 on
this computer, whether the local encryption key is configured,
and whether the cryptography library is installed. On a
machine where encryption at rest is not installed, it answers
that encryption is not active here, in the same shape, and
says what enables it. ``account_files`` says, on every
install, what is true of the print files kept in the person's
Kiln account: Kiln's servers encrypt those with a key held
there. Local files on this computer are encrypted only when
the local key is set and encryption is installed here.
| 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 and does reasonably well: it discloses the enterprise-tier requirement, promises a stable response shape even on machines where encryption is not installed, and explains that the response will say what would enable encryption. It does not state whether any authentication or elevated permission is needed beyond the tier, but for a read-only status probe the behavioral coverage is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core answer is front-loaded in the first two sentences, which is good, but the closing sentences repeat themselves — 'Local files on this computer are encrypted only when the local key is set and encryption is installed here' restates the earlier enumeration almost verbatim. The `account_files` aside is valuable but long-winded, so the definition is noticeably padded for a zero-parameter probe.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe return values, and it largely does: three named booleans plus the guarantee of a consistent shape and an explanation of enabling conditions. Combined with the enterprise-tier note, an agent has enough to call it and interpret the result; only the exact field names and the auth mechanics are left unspecified.
Complex tools with many parameters or behaviors need more documentation. 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 the baseline is 4; there is nothing for the description to disambiguate. The description correctly adds no parameter noise and instead spends its space on what the call returns.
Input schemas describe structure but not intent. Descriptions should explain 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 G-code encryption status and configuration') and enumerates exactly what it reports: whether encryption is active, whether the local key is configured, and whether the cryptography library is installed. It also explicitly contrasts its scope with the sibling `account_files`, so an agent can tell the two apart. The only slight ambiguity is the 'G-code encryption' framing versus what is really a local-at-rest status 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?
Usage is implied rather than stated: it is an 'Enterprise feature' that reports local encryption state, and the long `account_files` contrast tells the agent this tool is for local files, not account files. However, there is no explicit 'use this when...' clause and no mention of the closely related sibling `rotate_encryption_key`, so an agent deciding between checking status and rotating a key gets no routing help.
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 | Default: 0.2. |
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 does disclose the return content (layer count reduction, time savings, percentage improvement), which is valuable absent an output schema. It doesn't confirm the operation is purely a read-only computation, nor does it describe error behavior for malformed plan_data, 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?
The first sentence front-loads the core purpose in a single line, followed by a compact statement of outputs and an Args block. Every element contributes, with minimal waste, though the Args formatting is somewhat verbose for two 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 no annotations, no output schema, and a nested-object parameter, the description does the needed work: it explains the comparison basis, the outputs produced, and where plan_data originates. The remaining gap is edge-case behavior for invalid plan_data, which is minor for a computational estimator.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: plan_data is an opaque object with no schema description, but the description supplies its provenance ('Plan dict from generate_adaptive_slicing_plan'), which meaningfully compensates. For uniform_height_mm the description only restates the 0.2mm default already present in the schema, adding no new 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 states a specific verb and resource: it compares an adaptive slicing plan against a uniform reference and reports layer-count reduction, time savings, and percentage improvement. This is clear enough for an agent to know exactly what it computes. It stops short of a 5 because it doesn't explicitly differentiate itself from adjacent adaptive-planning siblings like get_adaptive_plan_summary or quick_adaptive_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 Args note that plan_data comes from generate_adaptive_slicing_plan is a useful prerequisite hint that implicitly tells the agent when this tool applies (after a plan exists). However, there is no explicit when-to-use versus alternatives guidance and no stated exclusions against other estimation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_batch_costC
Estimate total cost for a batch of decorated items (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=estimate_batch_cost
| Name | Required | Description | Default |
|---|---|---|---|
| num_units | Yes | ||
| decoration_cost | Yes | ||
| setup_time_minutes | No | Default: 5.0. | |
| labor_cost_per_hour | No | Default: 0.0. |
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 one genuinely useful behavioral fact — that the tool is gated behind a Kiln Pro plan — but says nothing about whether the call is a pure computation with no side effects, whether it writes a cost record, or what it returns. The 'calibration that learns your printer, mid-print edits, unlimited textures' lines describe the Pro plan generally, not this 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 purpose is correctly front-loaded in sentence one, but the remaining three lines are plan marketing and an agent-attributed upgrade URL that contribute nothing to correct invocation. Roughly three quarters of the text is noise against a single useful 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?
For a 4-parameter tool with an opaque nested object, no annotations, and no output schema, the description should explain the decoration_cost shape and the meaning of the total (per-unit vs batch, which cost components are included). Instead it spends its budget on upgrade messaging, leaving the primary invocation details unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% and the two required parameters are the undocumented ones: num_units has no description at all, and decoration_cost is a free-form nested object with additionalProperties: true whose expected keys are defined nowhere. The description adds zero parameter meaning, leaving the agent unable to construct a valid decoration_cost payload.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — 'Estimate total cost for a batch of decorated items' — which is enough to distinguish it from single-item estimators like estimate_decoration_cost. However, it never names its closest siblings (batch_estimate_plate_part_costs, estimate_cost, estimate_decoration_cost) or states the scope difference, so the agent must infer which batch estimator applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over estimate_decoration_cost, estimate_cost, or batch_estimate_plate_part_costs, which all sound similar. The only usable signal is 'Requires Kiln Pro', which is a gating prerequisite rather than a usage rule, and the rest is feature marketing.
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. Leave unset for the
nozzle Kiln has for ``printer_id`` (or the only printer it
knows of), else 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 | Default: 0.0. | |
| width_mm | No | Default: 0.0. | |
| height_mm | No | Default: 0.0. | |
| materials | No | Default: "PLA". | |
| nozzle_mm | No | ||
| printer_id | No | Default: "". | |
| template_id | No | Default: "". | |
| wall_layers | No | Default: 3. | |
| infill_percent | No | Default: -1.0. | |
| material_roles | No | Default: "". | |
| layer_height_mm | No | Default: 0.0. | |
| printer_wattage | No | Default: 200.0. | |
| electricity_rate | No | Default: 0.12. | |
| material_fractions | No | Default: "". | |
| template_overrides | No | Default: "". | |
| tool_changer_addon | No | Default: "". |
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 a decent job: it discloses that no slicing occurs, that tool-change overhead is applied automatically, that fractions must sum to 1.0, and it lists the default assumptions (electricity rate, wattage, infill, wall layers). It stops short of stating accuracy limits or how estimates degrade for untemplated geometry.
Agents need to know what a tool does to the 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 and the two input modes before the parameter list, which is the right order for an agent scanning it. It is long, but nearly every line is a distinct parameter contract with an example, so little is wasted; the prose sections repeat a bit of what the parameter list then restates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 16-parameter, all-optional tool with no output schema, the description covers returns explicitly (time, per-filament weight/length/cost, electricity cost, total cost, tool swap count) and resolves the ambiguity the schema leaves about which parameters are needed when. Nothing material 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 descriptions are only bare defaults ("Default: 0.0."), so the description does the real work — it explains required-if-no-template semantics for width/depth/height, the template-override precedence rule, comma-separated formats with worked examples for materials/fractions/roles, the -1 sentinel for infill, and the nozzle fallback chain. This is meaningfully richer than 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?
States a specific verb and resource — estimate print time, cost, and filament usage — and pins down the key differentiator: it works from dimensions alone, with no file, slicing, or generation. That distinguishes it cleanly from siblings like slice_and_estimate, estimate_print_cost_from_mesh, and estimate_print_time, which require a mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Frames the trigger conditions well by quoting the user questions it answers ("how long will it take?", "how much will it cost?") and says to use it before committing to a design. It also documents the two mutually exclusive input modes. It doesn't name the sibling estimate tools it should be preferred over, so the routing 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.
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.
The slicer's own ``filament used`` totals are the filament
figures when the file carries them; otherwise Kiln counts the
extruding moves itself. ``estimate.filament_source`` says which,
and a ``warnings`` entry names both numbers when Kiln's count
sits more than 5% from the slicer's total.
Each filament is priced as the material the file was sliced
for; ``estimate.filaments`` lists them and
``estimate.material_source`` says where the material came from.
When kiln-pro (https://kiln3d.com) answers, the estimate also
carries a ``cost_intelligence`` field; what it holds depends on
the tier (https://kiln3d.com/pricing).
Args:
file_path: Path to the G-code file.
material: Filament material (PLA, PETG, ABS, TPU, ASA, NYLON,
PC, …). Leave empty to use what the file was sliced
for, PLA when it names nothing; a named material prices
every filament.
electricity_rate: Cost per kWh in USD (default 0.12).
printer_wattage: Printer power consumption in watts (default 200).
printer_id: Optional registered printer the print is for;
passed on with the file when kiln-pro is asked.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| printer_wattage | No | Default: 200.0. | |
| electricity_rate | No | Default: 0.12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does substantial work: it explains the filament-source fallback (slicer totals vs Kiln's own move counting), the >5% divergence warning, material pricing provenance, and the tier-dependent cost_intelligence field. It does not state the read-only/no-side-effect profile or any auth/latency expectations, leaving a small 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?
Front-loads purpose and the sibling routing before the Args block, which is good structure. It is somewhat verbose, restating schema defaults and spending sentences on kiln-pro URLs and tier pricing, but every section is on-topic and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 must describe returns — and it does, naming estimate.filament_source, estimate.filaments, estimate.material_source, and cost_intelligence. Combined with high param coverage, an agent has enough to call and interpret it, though the exact shape of warnings/cost_intelligence remains vague.
Complex tools with many parameters or behaviors need more documentation. Simple 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 80% (baseline 3), but the description goes beyond it: for material it explains the empty-string semantics (file's material, PLA if unnamed, named material prices every filament) and for printer_id it states it is forwarded to kiln-pro. Defaults for electricity_rate and printer_wattage are repeated from the schema rather than enriched.
Input schemas describe structure but not intent. Descriptions should explain 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+input format: 'Estimate the cost of a print job from a G-code file (already-sliced only).' It also names the sibling it is not (slice_and_estimate) and constrains the input type, letting an agent distinguish it from other cost/time estimators without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes non-G-code inputs: 'For STL/OBJ files, use slice_and_estimate instead — it slices and estimates in one step.' Clear when-to-use vs an alternative, though it never addresses the other cost siblings (estimate_material_cost, estimate_batch_cost, batch_estimate_plate_part_costs) or expected preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_decoration_costC
Estimate cost impact of decorating a model (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=estimate_decoration_cost
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "PLA". | |
| labor_minutes | No | Default: 0.0. | |
| base_model_path | Yes | ||
| labor_cost_per_hour | No | Default: 0.0. | |
| printer_power_watts | No | Default: 150.0. | |
| decorated_model_path | Yes | ||
| material_cost_per_kg | No | Default: 20.0. | |
| electricity_cost_per_kwh | No | Default: 0.12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden. It does disclose one genuinely useful fact — that the tool requires a Pro subscription — but says nothing about whether it reads files from disk, whether it is read-only, what the cost model includes, or what the result looks like (and there is no output schema to fall back on).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is correctly front-loaded, but the majority of the text is a Pro-tier marketing pitch and a tracking-parameterized upgrade URL. None of that helps an agent decide or invoke the tool; it is wasted tokens in the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eight parameters, two of them required file paths with unexplained semantics, no annotations, and no output schema. The description does not explain what the returned cost represents (total vs delta), what materials/labor assumptions apply, or how the required paths relate to each other.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% and the schema 'descriptions' are only default values ('Default: "PLA".', 'Default: 0.0.'), which carry almost no semantics. The prose adds nothing about the non-obvious required pair base_model_path/decorated_model_path — the crux of the delta calculation — so the description fails to compensate for the 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 opening line gives a specific verb and resource ('Estimate cost impact of decorating a model') and the '(Pro)' marker signals a gated capability. However, it never distinguishes this from the many cost-estimation siblings (estimate_cost, estimate_material_cost, estimate_print_cost_from_mesh, estimate_batch_cost), so an agent cannot tell why it would pick this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only actionable guidance is the prerequisite 'Requires Kiln Pro', which is useful but is a gate, not a usage rule. There is no statement of when to use this versus the other cost tools, no mention of what the two required model paths must represent, and no exclusions.
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. The
walls are as wide as the nozzle, and the reply's ``nozzle`` says
which size was used and where it came from.
**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).
:param nozzle_mm: Nozzle size in mm. Left out, Kiln uses the
nozzle of the only printer it knows of, else its default.
:returns: Dict with weight, filament length, cost, and ``nozzle``.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "pla". | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| infill_pct | No | Default: 20.0. | |
| cost_per_kg | No | Default: 0.0. | |
| wall_layers | No | Default: 3. |
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 explains the wall-width assumption ('walls are as wide as the nozzle'), the nozzle-selection fallback when `nozzle_mm` is omitted, that the reply's `nozzle` field records the size and provenance, and that `cost_per_kg` of 0 means use the default. It does not cover error behavior for unsupported materials or malformed meshes, leaving a small 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 front-loaded with purpose and computation, then alternatives, then parameters, then returns — a sensible order. It is somewhat long and restates defaults already in the schema, but nearly every sentence carries information an agent needs (material list, nozzle fallback, override 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?
There is no output schema, so the `:returns:` line usefully names the return keys (weight, filament length, cost, nozzle). Combined with the parameter explanations and the alternative-tool note, an agent has what it needs to call this correctly; only edge-case/error behavior 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?
Schema coverage is only 67%, but the description compensates fully: it enumerates the supported material strings, gives the 0-100 range for `infill_pct`, explains `wall_layers` as perimeter shells, defines `cost_per_kg` override semantics (0 = default), and explains `nozzle_mm` fallback resolution. That is meaningful information beyond the terse schema 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 opens with a specific verb and resource ('Estimate material usage and cost for printing a mesh') and immediately says what is computed (filament weight, length, cost) from which inputs. It also names the sibling tool `estimate_print_cost_from_mesh`, separating this lighter estimate from the richer one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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' note explicitly routes the agent to `estimate_print_cost_from_mesh` when support material, adhesion, and electricity matter, which is real differentiation from a sibling. It stops short of stating exclusions or preconditions (e.g., when not to use this at all, or mesh-format constraints beyond the file-path note).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_mesh_print_timeARead-only
Rough print time estimate from mesh geometry (STL/OBJ/GLB; a STEP file is converted first).
Divides the plastic the part needs by the rate a print head lays
it down, plus per-layer overhead. It is a planning figure for a
printer it is not told about: ``range_seconds`` is how far a real
slice has sat from it, and the printer is most of that spread.
Unlike estimate_print_time (which slices the part with the
printer's profile, and is the real answer when a slicer is
installed), 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, its range, layer count,
deposited plastic, assumptions, and note.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "pla". | |
| file_path | Yes | ||
| layer_height_mm | No | Default: 0.2. | |
| print_speed_mm_s | No | Default: 60.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive behavior, but the description adds meaningful context: the estimate is rough, derived from geometry by dividing deposited plastic by print-head rate plus per-layer overhead, and it is a planning figure for an unspecified printer. It also explains that range_seconds reflects how far a real slice has sat from the estimate.
Agents need to know what a tool does to the world before calling 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 layers in helpful caveats and distinctions. The Sphinx-style parameter block is somewhat repetitive with the schema but carries additional nuance, and the overall length is justified by the tool's non-obvious estimation 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?
There is no output schema, so the description responsibly describes the return dictionary (estimated time, range, layer count, deposited plastic, assumptions, note). It also covers supported input formats and STEP conversion, leaving only minor details like file-location expectations unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75%, and the description adds useful semantics for each parameter, e.g. material affects per-layer overhead and layer height is used for slicing. This goes beyond the schema's default-value notes, giving an agent reason to set parameters thoughtfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a rough print-time estimate from mesh geometry. It explicitly distinguishes itself from the sibling estimate_print_time, noting that this tool works directly on mesh files before slicing rather than slicing with a printer 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 names the alternative tool and the condition that selects it: estimate_print_time is 'the real answer when a slicer is installed' and slices with the printer's profile, while this tool works 'directly on mesh files before slicing.' That gives clear when-to-use guidance versus the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_mesh_weightARead-only
Estimate the printed weight of a model file (a STEP file is converted first).
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 | Default: "pla". | |
| file_path | Yes | ||
| infill_percent | No | Default: 20.0. | |
| wall_thickness_mm | No | Default: 1.2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: STEP conversion happens first, volume is computed via the divergence theorem, and the response shape (volume, weight estimates, bounding box) is 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 purpose is front-loaded in the opening sentence, followed by method and then per-parameter notes. The :param lines duplicate schema fields slightly but earn their place by adding material examples and the infill range.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 :returns line is necessary and present, and all four parameters are described. The remaining gap is disambiguation from siblings that estimate cost, time, or material from the same mesh, which matters in this dense tool family.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% and the schema descriptions only restate defaults, so the description compensates by enumerating material names (pla, abs, petg, tpu, nylon) and giving the infill range 0-100 with a default of 20. Wall thickness default 1.2 is repeated rather than expanded, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource — estimating printed weight of a model file — and adds the useful scope note that STEP inputs are converted first. It does not distinguish itself from closely related siblings such as estimate_print_cost_from_mesh, estimate_material_cost, or estimate_mesh_print_time, so an agent cannot route between them from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite several sibling tools that also estimate cost, material, or print time from a mesh. The agent must infer from the name alone whether this is the right estimator for its task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_plate_part_costsC
Estimate per-part print time, filament, and cost for a sliced plate (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=estimate_plate_part_costs
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "PLA". | |
| file_path | Yes | ||
| plate_number | No | Default: 1. | |
| cost_per_kg_usd | No | ||
| printer_wattage | No | Default: 200.0. | |
| electricity_rate | No | Default: 0.12. | |
| material_by_object | 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 discloses mainly the plan gate. It never says this is a non-destructive read/compute, whether it requires a pre-sliced file vs. slicing on the fly, whether it writes anything, or what the estimate returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in sentence one, but two of four sentences are pricing/upsell copy ('Business adds team review, approval gates, and 3 printers (grow to 50)' and the upgrade URL) that consume space without helping invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 the description must explain the return shape (per-part breakdown?) and the sliced-file prerequisite itself. For a 7-parameter estimation tool with a nested override object, the definition is far too thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters at 57% schema coverage, including an untyped nested object (material_by_object) and undocumented file_path and cost_per_kg_usd, yet the description adds no parameter meaning at all. It does not explain whether 'per-part' is driven by plate_number or material_by_object overrides, which is the key 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 first sentence gives a specific verb and resource ('Estimate per-part print time, filament, and cost') and scopes it to 'a sliced plate', which separates it from plate-level or single-mesh estimators like estimate_cost or estimate_mesh_print_time. It does not explicitly name those siblings, so an agent picking between the many estimate_* tools still has to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only a prerequisite is stated ('Requires Kiln Business'); there is no statement of when to prefer this over batch_estimate_plate_part_costs, estimate_cost, estimate_print_time, or estimate_material_cost. The remaining sentences are upgrade marketing rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 | Default: 1. | |
| 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?
With no annotations, the description carries the full burden and does reasonably well: it discloses that the result is an approximate low/high range derived from typical per-cm3 pricing, that the call is instant/non-authoritative, and that exact pricing requires a different tool. It stops short of stating currency, how quantity affects the band, or precision limits of the estimate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The intent sentence is front-loaded and the returns/constraint notes follow in a logical order. The Args block is docstring-style and slightly verbose, but given the 17% schema coverage every parameter line supplies information not otherwise available.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does describe the return shape (a low/high range from per-cm3 pricing) plus the input requirement rule, which is what an agent needs to call it correctly. The main residue is the missing currency and the effect of quantity on the range.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 17%, so the description must compensate, and it does: it enumerates the valid technology values (FDM, SLA, SLS, MJF, DMLS), which are absent as an enum in the schema, defines units for each dimension and volume, gives the quantity default, and states the cross-parameter rule that either volume_cm3 or all three dimensions are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource — an instant price estimate versus a full quote — and the body names the technology-based inputs and the low/high range it returns. It clearly separates itself from fulfillment_quote, but does not distinguish itself from other estimators in the sibling set such as estimate_cost or estimate_print_cost_from_mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States an explicit trigger ('before requesting a full quote') and an explicit alternative with its condition ('For exact pricing, use fulfillment_quote with a real model file'). No exclusions are given against the many other cost-estimation siblings, so the routing guidance is clear but incomplete.
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_meshARead-only
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. Leave unset for the only
printer Kiln knows of, else 0.4; ``nozzle`` in the reply
says which.
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 | Default: "pla". | |
| file_path | Yes | ||
| nozzle_mm | No | ||
| wall_layers | No | Default: 3. | |
| adhesion_type | No | Default: "none". | |
| infill_percent | No | Default: 20.0. | |
| layer_height_mm | No | Default: 0.2. | |
| printer_wattage | No | Default: 200.0. | |
| support_density | No | Default: 15.0. | |
| electricity_rate | No | Default: 0.12. | |
| include_supports | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real context: which cost components are computed (material, support, adhesion, electricity), that a breakdown plus recommendations are returned, and the non-obvious nozzle defaulting behavior with the reply echoing the chosen nozzle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line purpose is well front-loaded, but the Args block largely restates defaults already present in the schema descriptions, and the nozzle_mm entry is wordy and awkwardly phrased. Structure is clear yet somewhat padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, read-only estimation tool with no output schema, the description covers inputs, valid materials, units, and the shape of the return (cost breakdown, recommendations, nozzle echo). Missing only minor details such as currency assumptions and whether the file must be local or already cached.
Complex tools with many parameters or behaviors need more documentation. Simple 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 already 82%, and the description still adds meaning the schema lacks: the full supported material list, the 0-100 range for infill, the concrete adhesion values ('none', 'brim', 'raft') where the schema only gives a default, and units for electricity ($/kWh) and wattage. It does not explain file_path constraints or interactions between params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (estimate total print cost from a 3D model file) and scopes the input as mesh geometry, explicitly noting 'no G-code or slicing required'. That implicitly separates it from slicing-based siblings like slice_and_estimate, but it never names an alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the 'from mesh, no G-code' framing. The description never says when to prefer this over the closely related estimate_cost, estimate_material_cost, estimate_plate_part_costs, or estimate_mesh_weight siblings, leaving the agent to infer selection.
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?
With no annotations, the description carries the behavioral burden and does well: it explains the phase-aware approach, historical-outcomes data source, accuracy advantage over firmware, and fallback to live printer/G-code status for omitted values. It does not describe the return shape or confidence behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and key behavior are front-loaded, and the parameter section is useful given the empty schema descriptions. There is some repetition between the opening instruction about omitting values and the per-parameter notes, but overall it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, data sources, parameter behavior, and related tools, which is substantial for a tool with no annotations and 0% schema coverage. However, with no output schema, it should say more about what the estimate returns, such as whether it includes phase breakdowns, confidence, or just seconds remaining.
Complex tools with many parameters or behaviors need more documentation. Simple 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 supply all parameter meaning, and it does: every parameter is documented, including units for elapsed_seconds, meaning of total_layers/current_layer, and the fallback behavior when each is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: estimating print progress via phase-aware time prediction using historical print outcomes. It distinguishes itself from raw firmware estimates, but does not clearly differentiate from sibling estimators such as estimate_print_time or 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?
It implies the tool is used when a more accurate true completion estimate is needed and explains optional-parameter fallback behavior. However, it does not explicitly state when to use this tool versus other estimator siblings 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.
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 | Default: "". | |
| material | No | Default: "". | |
| file_path | Yes | ||
| placement | No | ||
| printer_id | No | Default: "". | |
| slicer_path | No | Default: "". |
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 disclose real behavior: the tool slices (a non-trivial operation) unless handed a .gcode, weight depends on a filament density that bundled printer profiles do not supply, and a missing key means 'unknown' rather than zero. It omits failure modes (missing slicer binary, unsupported formats) and any auth/permission notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the fast path for .gcode before the parameter block, and every paragraph carries information. The :param block is somewhat verbose but compensates for an unusually thin schema, so waste is limited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description covers the mechanism, the dependency chain for weight, and the return shape ('dict with time, filament, and layer estimates'). The only real gap is the undocumented placement parameter and the absence of error/auth expectations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67% and the schema itself is bare (most properties only say 'Default: ""'), so the description's per-parameter notes add genuine meaning: file_path accepts STL/3MF/OBJ or .gcode, printer_id selects a bundled profile only when no explicit profile is given, and material is a density source only. The sixth parameter, placement, is undocumented in both schema and 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?
States a specific verb and resource (estimate print time and filament usage for a model) and immediately explains the mechanism: it slices the model and parses G-code. It is clearly distinguishable from the similarly named siblings estimate_material_cost and slice_and_estimate, which it names 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?
Gives a concrete routing rule for already-sliced files (pass the .gcode path directly, no re-slicing) and points to two alternatives with the conditions that select them: estimate_material_cost for mesh-based weight/cost with your own price, slice_and_estimate for fuller analysis with printability scoring. No explicit when-not-to-use statement, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_structural_loadA
Estimate safe structural load for a cantilevered section.
The figure is Kiln Pro's (https://kiln3d.com/pricing), worked
out for this one part -- strength, sag and the arm's own weight,
for any length of arm and size of section; below Pro the answer
says the load was not checked. A part whose arm cannot hold its
own weight gets no figure: ``load_checked`` is false and
``message`` says why. When the figure cannot be had (offline,
signed out, no answer) the answer says why and that the part is
unchecked.
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, so the figure is lower).
False when the load acts within the layer planes
(e.g. a bracket printed lying flat — the strong
direction). If unsure, leave True: it is the
conservative default.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| cross_section_mm2 | Yes | ||
| load_across_layers | No | Default: true. | |
| cantilever_length_mm | 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 well: it discloses the paywall tier, that unpaid answers return an unchecked result, that a self-weight-failing arm yields load_checked=false with a message, and that offline/signed-out states produce an explanatory failure rather than a silent wrong number. Missing only whether the returned figure's units and reversibility/caching semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability and the unchecked-result behavior are front-loaded before the Args block, and every Args entry earns its place. The licensing sentence carries a pricing URL and some marketing tone that is slightly off-task, but it is brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description steps in to name the return keys (load_checked, message) and the conditions that produce them, which is exactly what an agent needs. Only the units/nature of the returned load figure itself are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25%, so the description must compensate, and it does fully: material IDs get examples ('petg', 'nylon', 'polycarbonate'), cross_section_mm2 is defined as effective load-bearing area in mm^2, cantilever_length_mm in mm, and load_across_layers is explained in depth including the FDM weak-direction rationale and the safe default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Estimate safe structural load for a cantilevered section', with the scope (strength, sag, arm self-weight) made explicit. It does not name the near-siblings (analyze_structural_risks, assess_load_bearing, design_for_load), so an agent must infer differentiation, but the purpose itself 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?
Usage is implied through the license gating ('below Pro the answer says the load was not checked') and the conservative default guidance for load_across_layers, but there is no explicit statement of when to pick this tool over the many other load/structural siblings. The agent gets context but no routing rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_support_materialB
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 a .stl, .obj, .glb, or .3mf 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?
With no annotations, the description carries the full burden. It helpfully describes the underlying algorithm (overhang triangle projection) and what the result contains, which goes beyond a bare label. However, it says nothing about permissions, cost, performance on large meshes, or error behavior, leaving meaningful 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 definition is short and front-loaded with the core purpose, followed by a mechanism sentence and param/return notes. The docstring-style tags are slightly redundant but efficiently convey useful 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 single-parameter analysis tool with no annotations or output schema, the description covers the input format, the computation method, and the return structure (support volume, weight, overhang stats). It is largely complete, missing only routing guidance relative to sibling support tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: it documents the accepted file formats (.stl, .obj, .glb, .3mf) for the single required file_path parameter. This adds material meaning beyond the bare 'File Path' title 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?
States a specific verb (estimate) and resource (support material) and explains the mechanism (overhang triangles projected to the build plate). It does not explicitly distinguish itself from the sibling estimate_supports or plan_supports, leaving some ambiguity, but the described method is specific enough to identify the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the closely named siblings estimate_supports and plan_supports. Usage is only implied by the purpose text, so an agent has no explicit routing guidance.
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 | Default: 45.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool analyzes mesh overhangs and estimates support volume in the current orientation, but it does not state whether the operation is read-only, what the output units are, whether it is computationally expensive, or whether it has 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 front-loaded with the core purpose and then uses a clear Args block. It is appropriately sized for a two-parameter tool, though the docstring formatting is slightly verbose for a short 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?
With no annotations and no output schema, the description should do more to explain the return value, such as units of support volume or whether the result is a single number or a structure. It covers the inputs and core behavior but leaves an important gap for an estimation tool whose output meaning is not otherwise documented.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%, but the description compensates well by explaining that file_path is an STL or OBJ mesh file and that max_overhang_angle is the threshold in degrees before supports are needed, with a default of 45. This adds meaningful semantics beyond the schema, which only notes the default for the angle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: estimating support volume for a 3D model by analyzing overhangs in the current orientation. It is clear what the tool does, but it does not distinguish itself from similarly named siblings such as estimate_support_material or plan_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 implies the tool is used when a user wants to know how much support material a model will need in its current orientation. However, it gives no explicit when-to-use guidance, no exclusions, and no comparison to closely related sibling tools like estimate_support_material or plan_supports.
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 | Default: "US". | |
| quantity | No | Default: 1. | |
| technology | Yes | ||
| shipping_days | 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 reasonably well: it states the exact stage list returned (order confirmation, production, quality check, packaging, shipping), that a total delivery date is produced, that larger quantities add production time, and that country acts only as a fallback when shipping_days is absent. It omits whether the call is side-effect free, units, and precision, keeping it below 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?
Purpose is front-loaded in the first line, then parameters and returns follow in a predictable docstring structure. The 'Args:'/'Returns:' scaffolding adds a little boilerplate and indentation noise, but no sentence is 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 four-parameter pure computation tool with no output schema and no annotations, the description covers inputs, the effect of each input, and the shape of the return value with its stages. Only minor gaps remain: units (days), date format, and behavior when no shipping estimate exists for a country.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50% and the schema has no enums, yet the description supplies the allowed technology values (FDM, SLA, SLS, MJF, DMLS) and explains the behavioral effect of quantity and the fallback role of country versus shipping_days. It adds real meaning beyond the bare types, though it never states that shipping_days is in days or what happens on an unsupported country.
Input schemas describe structure but not intent. Descriptions should explain non-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 ('Estimate') and a clearly bounded resource ('order-to-delivery timeline with per-stage breakdown'), which is distinguishable from sibling cost/time estimators such as estimate_print_time or estimate_cost. It does not explicitly name a sibling or contrast against one, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the note that shipping_days comes from 'a quote' hints at a follow-on flow, and the country 'shipping estimate fallback' hints at a degraded path. There is no explicit statement of when to use this versus estimate_print_time, 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.
evaluate_fleet_rerouteC
Decide whether a failed FDM job should move to another printer (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=evaluate_fleet_reroute
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| failure_id | Yes | ||
| model_size_mm | No | ||
| completion_pct | No | Default: 0.0. | |
| alternative_printers | 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 decision/evaluation (not the move itself) but never states whether it is read-only, side-effect free, paginated, or what it returns. Only the tier restriction is 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 first sentence is well front-loaded and useful. However, two of the four sentences are promotional upsell ('Business adds team review...', upgrade URL) that do not help an agent select or invoke 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?
With five parameters at 40% description coverage, no annotations, and no output schema, the definition should do more. It leaves the required inputs and the behavioral profile unexplained, which is inadequate for a decision tool that feeds a fleet-routing 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 40% and neither the description nor the schema explains the required failure_id or alternative_printers, nor the optional material, model_size_mm, or completion_pct. The description adds no parameter meaning, leaving core invocation inputs undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: decide whether a failed FDM job should be rerouted to another printer. That is clear, but it does not differentiate from adjacent siblings like route_print_job, suggest_printer_for_job, or optimize_fleet_assignment, so an agent cannot fully disambiguate from context alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the tier gate ('Business+', 'Requires Kiln Business'). There is no guidance on when to call this versus the many other fleet-job tools, no prerequisites such as a recorded failure, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_pr_approvalB
Dry-run the approval gate on pr_id — returns allowed + a detailed reason ("needs_1_more_approval", "blocked_by_change_requests", "gate_satisfied", or "no_gate_configured").
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=evaluate_pr_approval
| Name | Required | Description | Default |
|---|---|---|---|
| pr_id | Yes | ||
| org_id | No | ||
| artifact_type | No | Default: "design". | |
| target_branch_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden well: it discloses that the call is a dry run (no state change), that it returns an `allowed` flag plus a reason, and enumerates the four reason codes. It omits behavior for invalid/missing gates and whether the result is cached, so it is not fully 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 first sentence is tight and front-loaded with the scope and return shape. The following two sentences are marketing/upsell copy ('3 printers (grow to 50)', upgrade URL); the tier requirement is useful, the rest is 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 4-parameter, no-output-schema tool, the description covers semantics and return values reasonably. However, two of four parameters (including a required one) go unexplained, and there is no note on what happens when no gate is configured on the PR's target branch.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (only artifact_type has a default note). The description mentions only `pr_id` and ignores the required `target_branch_name`, plus `org_id` and `artifact_type` — exactly the gap the low coverage requires the description to fill.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Dry-run the approval gate on pr_id', and enumerates the possible outcomes. It is clearly a read-only evaluation, distinguishable from set_approval_gate / list_approval_gates, though it never names those siblings 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?
'Dry-run' implies non-mutating usage and the Business-tier requirement is stated up front. But there is no explicit guidance on when to call this versus list_approval_gates, review_design_pull_request, or set_approval_gate, and no prerequisite about the PR already existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_calibration_for_designC
Plain-English explanation of which calibration offsets were applied.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=explain_calibration_for_design
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| design_id | No | Default: "". | |
| printer_id | No | Default: "". | |
| feature_class | No | Default: "". | |
| recipe_version | No | Default: "". | |
| nominal_size_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the tool is gated behind a Kiln Pro subscription and that its output is an explanation (an informational read), but says nothing about what the explanation contains, whether the offsets are per-material/per-feature, or behavior when no calibration 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 purpose is front-loaded, but roughly half the text is marketing copy and a tracking URL that does not help an agent decide or invoke. The plausible content is one 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?
A six-parameter tool with no annotations and no output schema needs the description to explain inputs and expected return shape. It explains neither, so an agent cannot tell what to pass or what it will get back beyond 'an 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 reads as 100%, but the parameter descriptions are only 'Default: ""' placeholders, so the schema conveys essentially no semantics. The description never mentions material, design_id, printer_id, feature_class, recipe_version, or nominal_size_mm, leaving six inputs unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: a plain-English explanation of applied calibration offsets. It is distinguishable from siblings like assess_calibration_status or query_per_machine_offset, though the following sentences drift into upsell rather than reinforcing 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?
No when-to-use guidance, no conditions for selecting this over assess_calibration_status, get_calibration_freshness, or classify_calibration_confidence. The only stated condition is a commercial one (requires Kiln Pro), not a task condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_adaptive_slicer_configA
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 | Default: "prusaslicer". | |
| plan_data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It usefully discloses the format differences (variable layer height data for PrusaSlicer/OrcaSlicer, adaptive layers plugin format for Cura), but never says whether output is a written file path, returned text, or whether the operation mutates anything — a real gap for an 'export' 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?
Front-loaded purpose sentence followed by the format detail and an Args block. Every line earns its place; 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?
No output schema and no annotations, so the description must be self-sufficient. It covers input provenance and target formats well, but leaves the return value / side effects (file vs config payload) unspecified, which is the one thing an agent still 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 coverage is only 50% and the 'slicer' param has no enum, so the description does the compensating work by enumerating all four valid values and tying plan_data to its producer. This meaningfully exceeds the schema's bare 'Default: prusaslicer' note.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Export') and resource ('adaptive slicing plan') with the transformation target ('slicer-compatible configuration'). The per-slicer format breakdown distinguishes the operation from the sibling planning tools (generate_adaptive_slicing_plan, quick_adaptive_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?
Names the prerequisite source explicitly ('Plan dict from generate_adaptive_slicing_plan'), giving clear workflow context. It does not state when to prefer this over sibling estimate/summary tools or give any exclusions, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_logC
Dump the local reflog to JSONL or CSV.
Enterprise adds SSO, RBAC, and audit export. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=export_audit_log
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 100000. | |
| end_time | No | ||
| branch_id | No | ||
| start_time | No | ||
| output_path | No | ||
| artifact_type | No | ||
| output_format | No | Default: "jsonl". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely fails. It never says whether output_path writes a file or where, what happens on large reflogs (limit defaults to 100000), what permissions are needed, or whether this is read-only. The 'Requires Kiln Enterprise' line is ambiguous about whether the tool itself is gated or only the SSO/RBAC add-on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first of four lines describes the tool; the remaining three are marketing boilerplate ('Enterprise adds SSO, RBAC...', 'Upgrade: https://...'). Roughly three quarters of the text does not earn its place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Seven parameters, zero annotations, no output schema, and an unexplained artifact_type/limit interplay leave an agent without enough information to call this correctly or safely. The one useful fact (two output formats) is the only real addition to the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 29%, so five parameters (start_time, end_time, branch_id, artifact_type, output_path) are undocumented in both schema and description. The description only indirectly hints at output_format by naming 'JSONL or CSV', leaving the time-range filter semantics, branch scoping, and path behavior entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a concrete verb and resource ('Dump the local reflog to JSONL or CSV'), but it collides with the tool name, which promises an 'audit log' rather than a reflog. No sibling is differentiated, even though export_audit_trail and show_reflog sit in the same family, so the agent must guess which one to 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?
There is no statement of when to use this versus show_reflog, get_reflog_entry, or export_audit_trail. The follow-on sentences ('Enterprise adds...', 'Requires Kiln Enterprise') read as an upsell and actually create ambiguity about whether the tool is callable at all in the current tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_trailA
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 | Default: "". | |
| format | No | Default: "json". | |
| end_time | No | Default: 0. | |
| tool_name | No | Default: "". | |
| session_id | No | Default: "". | |
| start_time | No | Default: 0. |
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 response is the full audit log in json/csv and that enterprise entitlement is required, but says nothing about read-only nature, result size/pagination, or whether exports are recorded as audit events themselves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and format options, followed by a compact Args block. Slightly verbose because every parameter is restated, but each line carries real information rather than 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?
With no output schema and no annotations, the description should say more about the shape of the result and any limits. It covers filters, formats, and entitlement adequately but leaves return structure and scale behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 100%, but the schema descriptions are only 'Default: ...' placeholders. The description compensates meaningfully: it explains that start_time/end_time are Unix timestamps with 0 meaning 'no filter', names the valid formats, and gives example action values (executed, blocked).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export the safety audit trail') plus the available output formats, so the action is unmistakable. It does not differentiate itself from near-siblings such as export_audit_log or verify_audit_integrity, which is the only thing keeping it from 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?
'Enterprise feature' signals a prerequisite, and the filter list implies when the tool is useful (querying the audit log). However, there is no explicit when-to-use versus export_audit_log or safety_audit, and no stated constraints about log volume or retention.
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 | Default: "". |
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 does add real context: the output is ZIP-based XML, more compact, and metadata-capable, plus the return value is a dict with the output path. It does not disclose overwrite behavior for an existing output_path, directory creation, or any failure modes — notable gaps for a file-writing tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first line, followed by relevant format context. The 'more compact and supports metadata better than STL' sentence is mildly promotional but still aids tool selection; the docstring :param/:returns block is a little redundant with the schema but 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?
For a two-parameter export tool with no output schema, the description covers purpose, both parameters, the empty-output default, and the return shape. It falls short only on side-effect details (overwrite, path creation) that would matter given the 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 50% (file_path has no schema description, output_path only says 'Default: ""'), so the description must compensate and largely does: it documents file_path as the input mesh path and explains that output_path is auto-generated when empty. That is meaningful semantics beyond the schema, though it omits format/extension expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export a mesh to 3MF format') and enumerates accepted input formats (STL/OBJ/GLB), which implicitly separates it from siblings like wrap_gcode_as_3mf or extract_model_from_3mf. It never names those siblings explicitly, so an agent must infer the boundary rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(preferred by modern slicers)' and the slicer list (PrusaSlicer, OrcaSlicer, Bambu Studio) imply when to choose 3MF over STL, which is useful context. However there is no explicit when-to-use/when-not guidance or named alternative tool, so the selection signal is only implied.
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.
export_stepC
Export a design as a STEP file — real analytic B-rep, always.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| output_dir | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. 'Real analytic B-rep, always' usefully signals output fidelity (no tessellation), but nothing is said about where the file is written, whether an existing file is overwritten, permissions, or failure modes for unsupported geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the key claim (analytic B-rep) up front and zero padding. Its brevity is close to the limit of usefulness but 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?
An export tool with no annotations, no output schema, and half-documented parameters needs to say where the file lands and what is returned. The description supplies only the file-format fidelity claim, leaving the operational essentials unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: design_id has no description at all, and output_dir only carries 'Default: ""'. The description adds nothing — it doesn't explain what design_id refers to or what an empty output_dir means (working directory? server-side path? default export folder?).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: export a design as a STEP file. The 'real analytic B-rep, always' clause distinguishes it from mesh export siblings such as export_model_3mf, though it never names an alternative 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 indication of when to use this versus check_step_support, step_file_info, import_step_file, or export_model_3mf, and no prerequisites (e.g. whether STEP support must be verified first). The agent must infer the routing from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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. A
project saved from Bambu Studio, OrcaSlicer or PrusaSlicer also gives the
printer, nozzle size, layer height and material it was set up for; hand
the same file to ``set_printer_model`` to set a saved printer up from it.
.. 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?
With no annotations, the description carries the full burden and does well: it discloses that values come from parsing file headers rather than slicing, which implies estimates are only as good as the embedded slicer data. Gaps remain — it never says what happens with headerless formats like .stl or how malformed/unsupported files are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded in the first sentence, followed by the returned fields. The reStructuredText note about list_plate_objects is slightly tangential but earns its place as a routing hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 appropriately enumerates what is returned (print time, layer count, filament usage, dimensions, slicer info, material hints). Missing behavioral edge cases for formats without headers and error handling keep it just short of 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?
Only one parameter and 0% schema coverage, but the description compensates by listing the accepted file formats (.gcode, .3mf, .stl, .ufp), which is the main semantic detail an agent needs. The Args line itself only restates the schema title, so it is not fully exhaustive about path expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (extract) and resource (metadata from 3D printing files), enumerates the supported extensions and the exact fields returned. This clearly separates it from siblings like analyze_print_file or step_file_info that also inspect 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?
Explains the key usage context — metadata comes from headers, so no re-slicing is needed — and points to follow-on tools (set_printer_model, list_plate_objects) with the conditions that select them. It stops short of explicitly contrasting with sibling file-inspection tools such as analyze_print_file.
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 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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden well: it explains that 3MF files are ZIP/XML archives, that multiple mesh objects are merged into a single STL, that output_path is auto-generated when empty, and that an interactive 3D stage opens on success with automatic decimation for oversized meshes. It does not mention overwrite behavior or failure modes, but the operational behavior is otherwise well 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 front-loaded with purpose and file-type behavior, then adds alternatives and parameter notes. It is longer than strictly necessary, partly due to Sphinx-style parameter lines, but every section contributes useful selection or invocation 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?
For a two-parameter extraction tool with no annotations and no output schema, the description supplies the return shape (output path, triangle/vertex counts, dimensions), the inline stage behavior, and the multi-object merge rule. Remaining gaps, such as overwrite semantics, are minor rather than fundamental.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%, so the description must add meaning for parameters and it does: file_path is described as the path to a .3mf or .gcode.3mf file, and output_path as auto-generated when empty. This supplements the schema's bare parameter names with file-format and default behavior 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 states a specific verb and resource: extract the embedded 3D model from .3mf/.gcode.3mf to STL. It clearly distinguishes the operation from extract_plate_object, which handles G-code extraction for a single object, so an agent can identify the correct tool without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 names when to use an alternative: for extracting a single object's G-code from a multi-object Bambu .gcode.3mf file, use extract_plate_object instead. It also points to list_plate_objects for discovering objects, giving concrete routing guidance.
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 | Default: "". | |
| object_name | Yes | ||
| plate_number | No | Default: 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does a good job: it explains that start-up and end sequences are preserved while other objects' per-layer toolpaths are removed. It also documents case-insensitive partial matching, plate selection, output location, and return contents, though it omits failure modes such as no matches or ambiguous partial names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose and then structured into behavior, plate selection, matching rules, prerequisites, parameter docs, and return shape. It is somewhat long, but most sentences provide useful operational detail and the structure keeps it 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?
Given the lack of annotations and output schema, the description is quite complete: it explains what the tool does, what it preserves or removes, how matching works, how plates are selected, and what the return dict contains. It would be stronger with explicit error or ambiguity handling, but the core behavioral context 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?
Schema description coverage is only 50%, but the description fully compensates by documenting every parameter: file_path as the .gcode.3mf path, object_name as a full or partial case-insensitive name, output_dir with its default, and plate_number as 1-based with default 1. This adds clear 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 a specific verb and resource: extract a single object's G-code from a multi-object Bambu .gcode.3mf. It clearly distinguishes the operation from model extraction or whole-file handling by specifying that only the requested object's G-code is extracted into a standalone printable 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?
It gives clear usage context for multi-object .gcode.3mf files and explicitly directs the agent to use list_plate_objects first to discover valid object names. It does not, however, state when not to use this tool or name alternative tools for related extraction tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
failure_historyA
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).
The response declares its own SCOPE: these are the failures
THIS machine recorded, and ``scope.local.total_records``
gives the store's full matching count when ``limit``
truncated the page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 20. | |
| failure_type | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load; it does add genuinely non-obvious behavior — that results are scoped to failures THIS machine recorded and that scope.local.total_records reveals the untruncated match count. It still omits ordering, auth/permission needs, and whether records include diagnostic detail, all of which matter for a history 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 one-line purpose is front-loaded, followed by arguments and the scope caveat in a logical order; every element earns its place. Minor waste from the pasted Python docstring "Args:" formatting, but no filler 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?
For a 3-parameter, no-output-schema, no-annotation read tool, this covers the essential behavior including the scope/truncation semantics an agent would otherwise get wrong. The remaining gap is record shape (what fields a failure entry contains), which is a modest omission rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only limit's default is documented), so description must compensate — and it does, giving a role for all three parameters and explaining that limit truncates the page while scope.local.total_records carries the full count. That is real added meaning beyond the schema, not a restatement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("View failure history") plus the two filter axes (printer, failure type), so the agent knows exactly what is returned. It does not name or distinguish itself from adjacent siblings such as job_history, get_material_consumption_history, or analyze_print_failure, so sibling selection still requires inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: filtering by printer_name or failure_type suggests the two query modes, but there is no explicit when-to-use statement, no when-not, and no pointer to an alternative tool for fleet-wide or post-mortem analysis. An agent can guess the intent but is not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_closest_filamentsB
Which filaments could I buy for this color? Call ONLY when the person asks. Up to three per color, from different makers.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Default: "". | |
| finish | No | Default: "". | |
| colours | Yes | ||
| material | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the result shape cap (up to three per colour) and cross-manufacturer diversity, but says nothing about sourcing/privacy implications, whether it queries live vendor data versus internal catalogues, whether inventory is considered, or whether the call 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?
Three short sentences, with the core purpose front-loaded ahead of the invocation gate and the result-shape constraint. No filler, though the question phrasing is slightly oblique for a machine-consumed instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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's 'up to three per color, from different makers' is the only signal about return values and it partially compensates. Against four parameters with thin schema descriptions and no annotations, gaps remain around the optional filters and what each returned filament record contains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 75%, but the three documented parameters only carry 'Default: ""' placeholders, and `colours` (the required array) has no description at all. The description's 'for this color' implies the colour input but never explains the brand, finish, or material filters or whether they narrow or expand results.
Input schemas describe structure but not intent. Descriptions should explain non-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 question plus the constraint 'Up to three per color, from different makers' makes clear this retrieves purchasable filament matches for a given colour, with diversity across manufacturers. It does not name any sibling (e.g. find_material_substitute, get_best_material_substitute, fleet_colour_match) to differentiate itself, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call ONLY when the person asks' is a real gating condition that prevents unsolicited invocation, which is more than most definitions offer. However, it gives no guidance on when a different tool (material substitute lookup, generic material recommendation) would be the better choice, so the alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_design_templatesARead-only
Find a ready-made parametric part for what the user is making.
CALL THIS FIRST whenever a user asks for a FUNCTIONAL PART to
their own dimensions — a bracket that holds a shelf, a bin
that fits a drawer, a clip for an 8 mm cable, a case for a
board, an adapter between two hose sizes. Kiln ships a
library of print-verified parametric parts; offering one is
faster and more reliable than writing OpenSCAD from scratch,
it is FREE, and it needs no AI provider or API key. Do not
wait to be asked whether a template exists — search, and if
something fits, offer it.
Ranked best match first, across both libraries:
* ``generatable: true`` — a PARAMETRIC PART. The result
carries its parameters, so you can fill in the user's
dimensions and call ``generate_from_template(template_id, {...})``
to render a printable STL.
* ``generatable: false`` — a DESIGN PATTERN (snap fit, living
hinge, press fit). Guidance for OpenSCAD you write
yourself; ``generate_from_template`` does not accept it.
No match is a normal answer, not a failure — fall back to
writing OpenSCAD and compiling with ``compile_scad``.
Args:
use_case: What the user is making, in their words —
e.g. "shelf bracket", "storage bin", "cable clip",
"enclosure", "gear train", "hose adapter".
| Name | Required | Description | Default |
|---|---|---|---|
| use_case | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description goes well beyond that by disclosing result ordering ('Ranked best match first'), the dual-library semantics of generatable true/false, what each branch enables downstream, and that the call is free and needs no API key. It also sets expectation that an empty result is normal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger and the action, then results semantics, then fallback — every block is useful. It is somewhat long and uses emphatic formatting (CALL THIS FIRST, FUNCTIONAL PART, FREE) that could be tightened, but nothing is 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 one-parameter read-only search with no output schema, the description covers trigger, ranking, result shape (parameterized part vs pattern), downstream next call, and the no-match fallback. There is no material gap an agent would need to close before invoking 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 coverage is 0%, so the description must carry the meaning of use_case, and it does: 'What the user is making, in their words' with six illustrative values ('shelf bracket', 'cable clip', 'hose adapter'). An agent knows to pass a natural-language use case rather than an ID or keyword.
Input schemas describe structure but not intent. Descriptions should explain 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+resource ('Find a ready-made parametric part') with the scope spelled out: it searches two libraries of print-verified parametric parts and design patterns. It also distinguishes itself from adjacent siblings by naming generate_from_template, compile_scad, and implicitly the catalog/listing 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?
Explicit trigger ('CALL THIS FIRST whenever a user asks for a FUNCTIONAL PART to their own dimensions') with concrete examples, plus an explicit negative case ('No match is a normal answer, not a failure') and a named fallback ('fall back to writing OpenSCAD and compiling with compile_scad'). This is the strongest possible 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.
find_manual_siblingsC
List sibling revisions of a parametric design (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=find_manual_siblings
| Name | Required | Description | Default |
|---|---|---|---|
| manual_id | Yes | ||
| include_self | No | Default: false. | |
| include_retired | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only discloses the plan requirement ('Requires Kiln Business'). It says nothing about what 'sibling revisions' contains, ordering, pagination, or the effect of include_self/include_retired.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but half the text is marketing upsell ('Business adds team review, approval gates, and 3 printers', upgrade URL with tracking parameter) that consumes space without helping an agent invoke 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?
With no annotations, no output schema, and three parameters, the description should explain return content and input semantics. Instead it covers only the tier requirement, leaving an agent without enough information to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and manual_id has no description in the schema. The description adds no meaning for any of the three parameters, leaving the key input identifier unexplained and doing nothing to compensate 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 first sentence gives a verb+resource ('List sibling revisions'), but it says 'of a parametric design' while the tool actually takes a manual_id, creating a resource mismatch. It also fails to distinguish itself from nearby siblings such as list_manual_history or get_manual_revision, so the purpose is only partially pinned down.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no comparison against the many manual/revision siblings (list_manual_history, get_manual_revision, diff_assembly_manuals). The only usage context is the tier gate, which is a prerequisite rather than an invocation guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_material_substituteARead-only
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 | Default: 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, non-open-world behavior. The description adds useful context that it checks a built-in knowledge base and returns ranked alternatives with trade-off descriptions, though it does not discuss ranking 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?
Front-loaded and mostly efficient, but it repeats the ranked-list return behavior twice and then uses an Args block. The structure is still 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?
No output schema exists, so the description appropriately states the return shape and trade-off descriptions. It is sufficient for invocation, with only minor gaps around ranking details and precise score semantics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 low at 33%, but the description compensates by documenting all three parameters: material with examples, reason with allowed values, and min_score as a 0.0–1.0 threshold. Minor room remains to clarify whether min_score filters or ranks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: finding substitute filament materials, with the situation (preferred material unavailable) and return type (ranked list). It also explicitly distinguishes itself from get_best_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?
Clearly says when to use it and names the alternative tool for a different need: get_best_material_substitute for a single best match. The reason filter further clarifies usage conditions.
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 | Default: 0.0. | |
| material_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully states that results are printers with the matching material, sorted by remaining stock descending, and that colour and min_grams are optional filters. It does not mention permissions, fleet scope, pagination, or explicitly confirm that the operation 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 short, front-loaded, and structured with a clear behavioral summary followed by parameter notes. Every part contributes useful information, especially given the low schema description coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter query tool with no annotations and no output schema, the description covers the main behavior and filters. It is still missing details about the return structure, scope of the printer search, and any auth or permission requirements.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33%, so the description needs to compensate. It does describe all three parameters at a basic level, including an example for material_type and the default for min_grams, but colour format and accepted material_type values remain vague.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: find printers that have a given material loaded. It clearly states the filtering and sorting behavior, but does not explicitly distinguish itself from related siblings such as discover_printers or 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?
The intended use is implied by 'Find printers that have a specific material loaded' and the optional filters. However, there is no explicit guidance on when to use this tool versus alternatives, nor any stated exclusions.
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 | Default: 10. | |
| file_hash | Yes | ||
| threshold | No | Default: 0.8. | |
| volume_mm3 | No | Default: 0.0. | |
| complexity_score | No | Default: 0.0. | |
| surface_area_mm2 | No | Default: 0.0. | |
| geometric_signature | Yes | ||
| geometric_signature_v2 | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses the matching method, threshold behavior, and a significant false-positive caveat when geometric_signature_v2 is omitted, but it does not describe return shape, permissions, or other operational 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?
The definition is front-loaded with purpose and matching method, followed by a structured Args list. It is appropriately sized for eight parameters, though some default values are repeated from the schema rather than adding new 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 matching approach, parameter meanings, and a key caveat, which is useful for an eight-parameter tool with no annotations. However, because there is no output schema, it should do more to explain what the tool returns or what a result contains.
Complex tools with many parameters or behaviors need more documentation. 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 all eight parameters, including required fields not documented in the schema, and adds important meaning such as SHA-256 hashing, fuzzy-matching roles for surface area/volume/complexity, and the critical behavior of geometric_signature_v2.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find similar models in the print DNA knowledge base, and explains the matching approach. It is clear what the tool does, though it does not explicitly distinguish itself from sibling tools such as fingerprint_model or search_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?
Usage is implied by references to geometric signatures from fingerprinting and fingerprint_model's geometric_signature_v2, including a warning to pass v2. However, it does not explicitly state when to use this tool versus 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.
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_featureC
Return the content-addressed fingerprint of a feature version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fingerprint_feature
| Name | Required | Description | Default |
|---|---|---|---|
| feature_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, yet it never states that this is a read-only, deterministic lookup, what the fingerprint format is, or what happens if the version ID is unknown. Worse, the appended upgrade pitch ('Requires Kiln Pro', pricing URL) is promotional payload that conveys no behavior and may be misread as gating the tool itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is front-loaded, but roughly two-thirds of the text is marketing copy about calibration, mid-print edits, textures, a Pro tier, and a pricing URL—none of which helps an agent invoke this tool. Substantial waste in a short definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and an undocumented parameter, the description should explain what a content-addressed fingerprint is, what it enables (integrity checks, release signing), and how it relates to verify_feature_release/sign_feature_release. Instead it leaves those gaps and fills the space with an upsell.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter, so the description must compensate, and it barely does—it only implies the ID refers to a feature version. It says nothing about where feature_version_id comes from (e.g., list_feature_versions) or whether it accepts a version label versus an opaque ID.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb + resource: 'Return the content-addressed fingerprint of a feature version.' That is decisive and distinguishable from most siblings, though it never contrasts with the closely related fingerprint_model or the release-verification tools. The remainder of the text is unrelated to the purpose and dilutes 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?
There is no guidance on when to call this versus fingerprint_model, verify_feature_release, or sign_feature_release. The only secondary content is a paywall notice ('Requires Kiln Pro'), which reads as an access restriction rather than a usage condition and could wrongly discourage an agent from calling the tool at all.
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 | Default: 100.0. | |
| flow_rate_pct | No | Default: 100.0. | |
| hotend_temp_c | Yes | ||
| z_clearance_mm | No | Default: 2.0. | |
| prime_length_mm | No | Default: 30.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so well: it spells out the motion sequence, flags that Z is never homed, notes the printer becomes physically positioned and ready, and lists what gets restored. It stops short of stating failure modes (e.g., no checkpoint found) or whether motion begins immediately, which matters for a physical actuation 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?
Front-loaded with the action and hardware scope, followed by mechanism, then when-to-use, then per-arg meaning. No sentence is filler; the Args block adds information rather than restating the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter physical-actuation tool with no annotations and no output schema, the description covers purpose, sequencing, hardware constraints, and parameter meaning adequately. It omits what the call returns or how it signals that resume preparation failed, which is the one thing an agent cannot infer 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?
Schema coverage is only 36%, so the Args section does real work: it explains job_id is used for checkpoint lookup, z_height_mm comes from the checkpoint, layer_number is informational only, fan_speed_pct is 0-100, and flow_rate_pct defaults to 100. Minor gap: prime_length_mm and z_clearance_mm defaults appear in the schema but their physical effect is only loosely described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute firmware-level print resume') and immediately scopes it to 'OctoPrint+Marlin printers', which distinguishes it from the many generic resume siblings. The M413 protocol reference makes the mechanism concrete rather than vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('After a power loss or failure') and names an alternative path ('Use start_print with a re-sliced file'), plus an explicit exclusion for Moonraker/Klipper. It does not differentiate from sibling tools like start_print_recovery, resume_interrupted_print, or recover_power_loss_print, which is the remaining gap.
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. A fault the printer has stopped for
rides this result as ``printer_fault`` (as it rides every tool
result while Kiln's watchdog sees it standing); the monitor's own
fields describe the first layer, not the machine's fault state.
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 the full burden and does disclose real behavior: it returns current monitoring state plus snapshots once monitoring completes, and it carefully explains that a printer_fault field rides every result while the monitor's own fields describe only the first layer. That fault-semantics warning is valuable and non-obvious, though polling behavior and error cases are left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return content are front-loaded, which is good, but the printer_fault paragraph is convoluted ('rides this result', 'rides every tool result while Kiln's watchdog sees it standing') and costs more words than the idea requires.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 and no annotations, the description covers purpose, parameter provenance, and return content. It is largely self-sufficient, with only polling cadence and failure behavior left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 by telling the agent the monitor_id is 'returned by start_monitored_print' — a provenance hint the bare string schema 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?
States a specific verb (Check) and resource (status of a first-layer monitor), which is clear enough to distinguish from generic status tools. It does not explicitly name siblings like watch_print_status or kiln_monitor_snapshot, so the differentiation is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Args note that monitor_id comes from start_monitored_print implies the intended workflow, so usage is inferable. However, there is no explicit when-to-use versus the many other print-monitoring tools, nor any 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.
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 Business 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 carries the full burden. It discloses the return contents (per-printer stats plus fleet-wide aggregates) and a license requirement, which is useful. However, for a historical analytics tool with zero parameters it never states the time window covered, whether data is real-time or cached, or any latency/rate-limit 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?
Front-loaded purpose and the sibling exclusion are placed before the detail. There is mild redundancy between 'per-printer success rates, utilization, job throughput' and the later 'total prints, success rate, average print duration, and total print hours', which restates overlapping metric categories.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 compensates for the absent output schema by listing returned metrics, which is appropriate. But the central ambiguity of a 'historical analytics' tool with no parameters — over what period the statistics are computed — is left unanswered, and no annotations fill that 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 tool takes zero parameters, so the baseline is 4. The description correctly implies a parameterless snapshot query and adds no misleading parameter 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?
The description states a specific verb+resource ('Get fleet historical analytics') and enumerates the metrics returned: per-printer success rates, utilization, job throughput. It explicitly differentiates itself from fleet_status, so an agent can route between them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative ('For live printer status (current state/temps), use fleet_status') and states the eligibility condition ('Requires Business license'), which is actionable routing and gating information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_cancelB
Cancel prints across the whole fleet, gracefully (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_cancel
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| run_actions | No | Default: "". | |
| printer_names | No | ||
| preserve_temperatures | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does disclose a meaningful behavioral trait: the first call returns proposed actions and runs nothing, and run_actions with the returned digest executes exactly those. That is real transparency. It still omits what 'graceful' cancellation does, whether cancelled prints can be resumed, and how the listed boilerplate actions ('upload, start, pause, resume, set a speed preset') relate to a cancel operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A large share of the text is Business-tier upsell and a tracking URL ('Business adds team review... Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_cancel'), which is marketing noise rather than operational guidance. The actually useful two-phase protocol is buried after the advertising.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the interaction protocol but leaves destructive scope ambiguous: it never says whether whole-fleet cancellation is reversible, what preserves_temperatures does, or how printer_names narrows the fleet.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%. The description usefully explains run_actions as the actions_digest returned by the first call, adding meaning beyond the schema's bare 'Default: ""'. But printer_names and preserve_temperatures are documented nowhere, leaving their semantics (subset targeting, temperature retention) a mystery.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel) and an explicit scope (prints across the whole fleet), which distinguishes it from the sibling cancel_print that targets one printer. However 'gracefully' is never defined, and no sibling (fleet_pause, fleet_resume) is named for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tier prerequisite ('Requires Kiln Business') is a useful gate, and the two-phase call flow is described. But there is no when-to-use / when-not guidance relative to fleet_pause, fleet_resume, cancel_print, or cancel_queued_job, so the agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_colour_matchC
Which of my printers already has each of these colours loaded, and which one to print on (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_colour_match
| Name | Required | Description | Default |
|---|---|---|---|
| colours | Yes | ||
| material | No | Default: "". | |
| printer_names | 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 behavioral burden. It reveals only the tier requirement; it says nothing about side effects, whether it queries live fleet state, rate limits, or what the match result looks like, and half the text is pricing/marketing filler.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded, but three of four lines are Business-tier upsell and a pricing URL that do not help an agent invoke the tool. Substantial text is wasted on promotional 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?
With no output schema and no annotations, the description must carry behavioral and return-value context, yet it omits both. For a 3-parameter matching tool with undocumented arrays, this is materially incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33% (only 'material' has a description, and it is just 'Default: "".'), and the two array parameters have no item type. With coverage well below 50%, the description should compensate but instead says nothing about colours format, material matching semantics, or how printer_names scopes the search.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 capability: identifying which printers in the fleet already have each colour loaded and which printer to use. The question phrasing is clear about verb and resource, though it does not name a sibling to differentiate against (e.g. find_printers_with_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?
It discloses a prerequisite ('Requires Kiln Business'), which is useful context, but gives no when-to-use guidance, no when-not-to-use, and no alternatives among the many fleet/material matching siblings. The bulk of the text is upsell rather than usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_hardware_stopsC
Every printer waiting for a nut, magnet or bearing, in the order to walk the floor (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_hardware_stops
| Name | Required | Description | Default |
|---|---|---|---|
| printer_names | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry the plan-tier constraint ('Requires Kiln Business', 3 printers growing to 50) and notes that Business adds team review and approval gates, which an agent needs to anticipate refusals or gated results. It says nothing about the read-only nature of the call, the response shape, or pagination for large fleets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded, but the tier-restatement sentence and the 'src=agent&tool=' upgrade URL are promotional filler that does not help an agent select or invoke 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?
No annotations, no output schema, and one undocumented parameter leave real gaps: the description should at minimum say what a 'stop' contains and how printer_names interacts with the walk order. The tier gate is the only behavioral fact 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?
The single optional parameter printer_names has 0% schema description coverage and the description never mentions it at all. The agent cannot tell whether it narrows the walk list, orders it, or is ignored on lower tiers.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause ('Every printer waiting for a nut, magnet or bearing, in the order to walk the floor') specifies the resource, the filter condition, and the ordering, which is genuinely informative. It stops short of a verb and never distinguishes itself from nearby siblings like plan_hardware_insertion or recommend_hardware_pocket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the hardware-planning siblings, and no exclusions. The only guidance is a commercial gate ('Requires Kiln Business'), which tells the agent when it will fail, not when to choose it.
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_nozzle_agreementC
Which registered machines disagree with Kiln's nozzle record, and which matter first (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_nozzle_agreement
| Name | Required | Description | Default |
|---|---|---|---|
| printer_names | 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 behavioral burden. It discloses that Kiln Business is required, but does not explain whether the operation is read-only, how disagreement is determined, what 'matter first' means, or what the response contains.
Agents need to know what a tool does to the world before calling 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 but poorly structured: it opens with an awkward question, then spends two lines on tier marketing and an upgrade URL. The promotional content does not help an agent select or invoke 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?
For a tool with no annotations and no output schema, the description should explain the parameter, return shape, and read/comparison behavior. It instead focuses on Business-tier upsell text, leaving essential invocation context 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 sole parameter, printer_names, has 0% schema description coverage, and the description does not explain its semantics. It does not say whether it is an optional filter, whether names or IDs are expected, or what happens when it is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-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 conveys the resource and comparison being performed: registered machines that disagree with Kiln's nozzle record, with prioritization. However, it is phrased as a question rather than a clear tool action, and it does not distinguish this from nearby nozzle/fleet tools such as list_nozzle_states or nozzle_drift_attribution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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, when not to use it, or which sibling tools are alternatives. It only states a Business-tier requirement, which is an availability constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_pauseA
Pause printing across the whole fleet, gracefully (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_pause
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_temps | No | Default: true. | |
| run_actions | No | Default: "". | |
| printer_names | 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 disclose a critical non-obvious trait: the first call mutates nothing and only reports intended actions, and execution requires echoing back the `actions_digest`. That is real behavioral value beyond what any structured field conveys. It still omits what 'gracefully' means in practice (e.g., whether a running print finishes its current layer), whether auth/tier checks fail the call, and how partial fleet failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in the first clause. But the middle section is upsell material — tier limits, 'grow to 50', and an upgrade URL literally stamped with a tracking parameter — that consumes space without helping the agent call the tool, and the final sentence is a long run-on that buries the two-phase protocol.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must cover both behavior and return semantics; it covers the two-phase protocol but not what the first-call payload looks like (shape of actions_digest, what actions are listed) or which printers are targeted by default. For a fleet-wide mutating tool with zero annotations, this leaves meaningful gaps around targeting and 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 coverage is 67% and two of three parameters have placeholder-only descriptions ('Default: true.', 'Default: ""'). The description does clarify `run_actions` semantics by tying it to the actions_digest value returned by the first call, which the schema does not say. It adds nothing about `printer_names` (can it be omitted to mean all printers?) or why `keep_temps` matters when 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 opening sentence gives a specific verb and resource with explicit scope: 'Pause printing across the whole fleet.' The word 'fleet' implicitly separates it from the single-printer `pause_print` sibling, but no sibling is named and 'gracefully' is left undefined, so an agent must still infer the 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 explains the two-step invocation pattern (dry-run call, then re-call with `run_actions` set to the returned digest), which is genuine usage guidance. However, it never states when to prefer this over `pause_print` or how it relates to `fleet_resume`/`fleet_cancel`, and the only exclusions are commercial tier gates rather than operational conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_resumeA
Resume paused prints across the whole fleet (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_resume
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Default: false. | |
| run_actions | No | Default: "". | |
| printer_names | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well by disclosing that this touches physical printers, that the first invocation is a non-executing proposal, and that execution is delegated to Kiln's own tools with all their safety checks. It stays silent on force's effect and on how many printers are affected by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but two sentences of tier marketing and an upgrade URL take up nearly as much space as the operational contract. The valuable execution-flow sentence is buried last.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 fleet-wide mutation with zero annotations and no output schema, the description covers the confirmation loop but leaves gaps an agent needs: the blast radius when printer_names is omitted, what force overrides, and whether Business entitlement failure modes are surfaced. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% but the schema text is near-empty ('Default: ""', 'Default: false'), so the description's explanation of run_actions as the actions_digest round-trip is genuinely valuable. However force and printer_names receive no semantics at all in either place, and it's unclear whether omitting printer_names resumes every paused print fleet-wide.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb, resource and scope: resume paused prints across the whole fleet, which distinguishes it from the single-printer resume_print and from pipeline_resume. The tier/upsell sentences add noise but don't obscure 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?
It explains the two-phase invocation contract clearly: the first call returns planned actions and runs nothing, and the second call passes the returned actions_digest as run_actions. What is missing is any guidance on when to prefer this over fleet_pause, resume_print or pipeline_resume, or when printer_names should be used to narrow scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_set_speedA
Set speed across all registered printers in the fleet (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_set_speed
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| percent | Yes | ||
| run_actions | No | Default: "". |
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 real work: it discloses that the tool first returns a plan of intended printer actions without executing, and that passing the actions_digest back executes exactly those actions through Kiln's own tools with their checks. It omits whether the speed change persists, how in-flight prints are affected, and whether the change is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence and the confirmation mechanics are stated compactly. However, the middle Business-tier and upgrade-URL text is commercial upsell that occupies more space than the operative behavioral guidance and pushes the important two-phase instruction to the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does explain the plan/execute response contract, which is the key missing piece for a two-phase tool. It still leaves gaps for a fleet-wide mutation: no speed range, no effect on printers already mid-print, and no mention of tier-gating 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?
Schema coverage is 50%: run_actions is defined in the schema, and the description usefully explains what to put in it (the actions_digest from the prior plan response). The required 'percent' parameter has no description in either schema or prose – no range, no units, no statement of what 100 means – so half the parameters remain underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource plus scope: setting speed across all registered printers in the fleet. The fleet-wide scope implicitly distinguishes it from the single-printer sibling set_speed_percent, though that sibling is never named, so an agent must infer the 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?
Usage is implied by the fleet scope and by the two-phase 'call it again with run_actions' instruction, which tells the agent how to complete the operation. There is no explicit when-to-use versus when-not guidance, no mention of alternatives such as set_speed_percent or run_speed_schedule, and no prerequisites beyond the Business tier note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fleet_skip_objectsA
Skip failed objects across several fleet printers at once (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=fleet_skip_objects
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| printers | Yes | ||
| run_actions | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses that this is a dry-run/preview tool ('answers with the actions it wants and why, and runs nothing') that only acts on a second call with run_actions set to the returned actions_digest. It does not disclose what happens to existing print state or whether skipping is reversible, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the middle block is upsell copy ('Business adds team review, approval gates, and 3 printers (grow to 50)', an upgrade URL) that is tangential to invoking the tool. The genuinely operational two-step protocol is buried at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 fleet-wide mutation with no annotations and no output schema, the description covers the critical action-confirmation protocol and tier gating well. The notable gap is object identification: it never explains how the objects to skip are specified within the undocumented printers array.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% and the printers array has an empty item schema, but the description meaningfully explains the non-obvious run_actions parameter (it must be the actions_digest from the prior response). It adds little about what the printers array must contain, leaving half the inputs unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Skip failed objects') plus scope ('across several fleet printers at once'), which lets an agent separate it from the single-printer sibling skip_print_objects. It is clear and specific, though it never names that sibling to make the boundary 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 tier gate ('Requires Kiln Business') tells the agent when the tool is available, and the two-step protocol implies when to call it again. However, it never states when to prefer this over skip_print_objects or other fleet tools, so alternatives are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
Before anything is queued, every candidate plate is surveyed as it
stands (the named printer's, or the whole fleet's): a job no plate
has room for is refused here, with each machine's own sentence
(``NO_ROOM``), never queued to be refused at the printer later.
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 | ||
| preview_token | No | ||
| idempotency_key | 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 auto-printer assignment, the pre-flight plate survey, refusal semantics (NO_ROOM per machine, never queued), and the idempotency replay contract with the 'replayed' marker. It falls short of 5 because it does not describe permissions/preconditions or what identifier comes back on 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?
Front-loaded with the action, then behavior, then structured Args. The prose is long but every clause carries information (auto-assignment, refusal timing, idempotency retry). No filler 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?
For a submission tool with no annotations and no output schema, this covers most of what an agent needs to call it safely, including failure/retry semantics. It is incomplete on the undocumented preview_token parameter and on the shape of a successful result (job id, submission status), which cannot be inferred from anywhere else.
Complex tools with many parameters or behaviors need more documentation. Simple 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 Args block is the only documentation and it covers 5 of 6 parameters, including non-obvious additions like the priority value set (low, normal, high) and a detailed idempotency_key retry protocol that the schema does not convey. Gaps: preview_token is entirely undocumented, and calling material 'Required filament material' conflicts with the schema, where only file_path is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and scope: 'Submit a print job to the fleet orchestrator.' An agent can tell this is a fleet-level queueing action. However, it never distinguishes itself from near-siblings such as submit_job, route_print_job, run_quick_print, or start_print, so the differentiation work is left to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional behavior ('if no printer is specified, the orchestrator auto-assigns') and a guarantee about pre-queue refusal, which imply when this tool is appropriate. But there is no explicit when-to-use-vs-alternative guidance and no statement about when NOT to use this tool in favor of the many other print-dispatch siblings.
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.
food_safety_for_printerC
Pro+ — combined material + nozzle food-safety verdict.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=food_safety_for_printer
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| printer_id | Yes | ||
| product_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 burden. It discloses that Kiln Pro is required, which is useful, but it does not explain whether the tool is read-only, how authoritative the verdict is, what limitations apply, or what result the agent should expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful purpose statement is front-loaded, but the rest of the description is dominated by tier/upgrade marketing and a pricing URL. These sentences do not help an agent decide when or how to invoke 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 no annotations, no output schema, and 0% schema description coverage, the description is incomplete for a three-parameter safety verdict tool. It mentions the Kiln Pro requirement but omits parameter meanings, output expectations, and safety-critical usage 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% for three parameters, and the description does not explain material, printer_id, or product_type at all. The agent receives essentially no semantic guidance 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?
The first line gives a recognizable purpose: a combined material + nozzle food-safety verdict. However, it does not phrase the action clearly or explain scope, and the remaining text is mostly subscription marketing rather than tool 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 implies this is for food-safety checks but gives no explicit when-to-use guidance, no exclusions, and no reference to related safety tools such as get_safety_profile or check_material_environment.
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.
It also refuses a file sliced for one nozzle size when the printer's
own setting says another is fitted; this override covers that too.
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 | Default: "". | |
| ttl_minutes | No | Default: 5. |
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: it discloses that the override is per-printer, single-use ('NEXT otherwise-blocked print'), and time-expiring, plus the 'confirm' safety class, the human-in-the-loop requirement, and that an autonomous agent cannot self-approve. It also names the return shapes (grant confirmation vs. confirmation-required challenge).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and scope, then rationale, then risk, then params — a sensible order with no filler. Slightly long: the enumeration of physical limits and the 'hard physical limits, not warnings' emphasis could compress without losing selection signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param, zero-required mutation tool with no annotations and no output schema, the description supplies prerequisites, lifespan semantics, safety/approval behavior, and return expectations. Nothing an agent needs in order to call it correctly or to know it must escalate to a human is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema text is only bare defaults ('Default: ""', 'Default: 5'), so the description does the real work: printer_id is a printer model like "bambu_a1" with empty resolving to the active printer, and ttl_minutes has a default of 5 with a maximum of 60 — a constraint absent from the schema. Both parameters gain meaning beyond structured 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?
States a specific verb and resource — override the pre-print impossibility gate for ONE printer — and immediately delimits scope with three concrete refusal categories (build-volume overflow, hotend temperature ceiling, nozzle-size mismatch). An agent can tell this apart from start_print / slice_and_print / preflight_check without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the situation that selects this tool (a normal print call was blocked by a physical-limit gate, e.g. deliberately targeting a different printer) and clarifies that designing/slicing is never blocked, only the final print step. It stops short of naming the sibling tools it replaces or supplements (start_print, run_quick_print), so the routing 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.
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 | Default: 30. | |
| 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 does disclose the computed outputs (remaining days, urgency level ok/low/critical), which is genuinely useful. However it omits behavior on insufficient history, how stock is sourced, and permissions, so key operational traits are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The depletion outcome is front-loaded in one sentence, followed by mechanism and outputs. The Args block slightly repeats the schema but is short and every line adds or clarifies 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 small 2-param tool with no output schema, the description adequately explains what is returned. It still lacks edge-case behavior (no history, unknown material) and data-source context, which matters given zero annotation 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 coverage is only 50% and material_type has no schema description, but the description supplies an example value ("PLA"). Notably it reinterprets days_ahead as the history window for rate estimation rather than a future horizon, correcting a misleading parameter name — real meaning added 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?
States a specific verb (forecast) and resource (material consumption / when a material type will run out), and the second sentence clarifies the mechanism and outputs. It is distinguishable from material siblings like get_material_consumption_history and check_material_sufficiency, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'when a material type will run out.' There is no explicit when-to-use versus get_restock_suggestions, check_material_sufficiency, or get_material_consumption_history, and no prerequisites (e.g. whether consumption history must exist) are given.
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. When the
print service has nothing to cancel (an unpaid order is never
made) or cancels only on a written request, the error message
says which and how; pass it on to the person as it is.
| 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 carries the full behavioral burden. It usefully discloses the shipped-order restriction, unpaid-order behavior, written-request cases, and error pass-through guidance, but it omits permissions, reversibility, side effects, and success response 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 purpose is front-loaded and the Args formatting makes the single parameter easy to find. There is minor redundancy between 'if still cancellable' and the later shipped-order restriction, but no substantial 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 one-parameter mutation, the description covers the critical precondition and error-handling behavior. It is not fully complete because it lacks auth/permission expectations and success behavior, but it is adequate to avoid the main misuse 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?
Schema description coverage is 0%, and the description only labels order_id as the order ID to cancel, which is essentially a restatement of the parameter title. It does not clarify where the ID comes from, acceptable formats, or relationship to sibling order 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?
States a specific verb and resource: cancel a fulfillment order, with the important precondition that it must still be cancellable. An agent can distinguish this from status/order-listing siblings without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition: only orders that have not yet shipped can be cancelled. It does not explicitly name alternative tools or explain when to use fulfillment_order_status versus this tool, so it stops short of full 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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 50. | |
| search | No | ||
| technology | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does well: it reveals catalog scale (2000+), default page size (50), and the fields returned. It omits pagination/offset behavior and whether a total count is returned, which matters for a catalog this large.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by return contents, cross-tool linkage, scale rationale, then per-argument docs. Slightly verbose (the 'overwhelming context windows' clause could be trimmed) but every section is actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, yet the description covers what is returned, how big the catalog is, how to filter, and which downstream tool consumes the id. The main missing piece is pagination/total-count guidance needed to exhaust a 2000+ catalog safely.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only the limit default is in the schema), so the description must compensate and does: search is word-boundary and case-insensitive with a concrete example ('nylon' matches 'Nylon 12' but not 'Carbonylon'); technology is word-boundary/case-insensitive, lists common values, and notes it matches both the technology field and the material 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?
States a specific verb ('List') and resource ('materials from external manufacturing services') and immediately scopes it to an external fulfillment catalog, which separates it from sibling material tools like list_materials or list_available_materials that operate on local stock. It also declares the return shape (technology, color, finish, pricing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the agent to use the returned material ``id`` with ``fulfillment_quote``, and advises narrowing via filters because the catalog is 2000+ items. It lacks an explicit statement of when NOT to use it versus the other material-listing siblings, which keeps it below a 5.
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.
Nothing is made until the person pays on the print service's
checkout, so the reply opens with ``tell_the_person``: the link to
pay first, then the checkout total with any tax, the print
service's order terms and a link to them. Pass every line on to
the person word for word.
If the person asks whether they can pay with a particular method,
answer from ``provider_pay_methods`` in the reply: yes for one it
lists; for any other, say Kiln doesn't know and that the checkout
page shows every option for their country. Never claim a method
that isn't listed.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | ||
| jurisdiction | No | Default: "". | |
| quoted_price | No | Default: 0.0. | |
| preview_token | No | Default: "". | |
| business_tax_id | No | Default: "". | |
| payment_hold_id | No | Default: "". | |
| quoted_currency | No | Default: "USD". | |
| shipping_address | No | ||
| preview_file_path | No | Default: "". | |
| shipping_option_id | No | Default: "". | |
| shipping_profile_name | No | Default: "". | |
| shipping_confirmation_token | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses key side effects: the orchestration fee is charged before placement, failed placement after payment is automatically refunded, and a payment hold is captured when provided. It also explains that nothing is manufactured until the person pays on the print service checkout and that tax details are included when jurisdiction is supplied.
Agents need to know what a tool does to the world before calling 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 appropriately front-loaded and organized for a 12-parameter payment-affecting tool. Most content is necessary, though the argument block is verbose and some parameter-origin details could be trimmed if the schema were richer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 critical mutation, payment, tax, shipping, and user-facing response behavior well. However, with no output schema, the full order response shape is not enumerated beyond tell_the_person and provider_pay_methods, leaving some return-value details implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are mostly defaults, so the description adds essential meaning for all parameters: quote_id source, shipping option source, shipping address keys, preview token validation against preview_file_path, shipping confirmation token source, payment hold capture, quoted price/currency conditions, and tax jurisdiction/business tax ID 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 states a specific verb and resource: place a manufacturing order based on a previous quote. It clearly distinguishes this from sibling tools such as fulfillment_quote and fulfillment_order_status by tying the action to a quote and to post-order tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 describes the workflow: obtain quote_id from fulfillment_quote, optionally use preview and shipping confirmation tokens, then place the order. It also names fulfillment_order_status as the follow-up tool and explains how to answer payment-method questions from provider_pay_methods.
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.
The reply opens with ``tell_the_person``: where the order is and,
while it is unpaid, the link to pay for it. Pass every line on to
the person word for word.
Nothing is made until an order is paid on the print service's
checkout, and Kiln cannot pay it for them. When the person wants to
pay, asks how to pay, or asks about an order that is not paid yet,
call this right away for that order and give them the link to pay
first, before anything else, without waiting to be asked for it.
If the person asks whether they can pay with a particular method,
answer from ``provider_pay_methods`` in the reply: yes for one it
lists; for any other, say Kiln doesn't know and that the checkout
page shows every option for their country. Never claim a method
that isn't listed.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it describes return fields such as tell_the_person, provider_pay_methods, tracking info, and estimated delivery, and it discloses the business rule that nothing is made until payment. It does not explicitly state read-only behavior, permissions, or error handling, 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 front-loaded with purpose, args, and returns, but it is quite long for a one-parameter status tool. The payment-method paragraph is useful but somewhat repetitive, and some instructions 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?
Given the missing output schema and zero annotation coverage, the description supplies important return-value and payment-workflow context. It is nearly complete for an agent to use correctly, though it omits edge cases such as invalid order IDs or exact response 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%, so the description must compensate. It does by explaining that order_id is the Order ID from fulfillment_order, adding meaningful source context beyond the schema's bare string type, though it does not specify format or validation expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: check the status of a fulfillment order. It also mentions the order_id comes from fulfillment_order, which helps distinguish this read/status tool from order creation, but it does not explicitly contrast with fulfillment_cancel or other fulfillment 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 strong situational guidance for unpaid orders and payment questions, including calling immediately when a person asks how to pay or about an unpaid order. It does not explicitly state when not to use this tool or name sibling alternatives, so it stops short of full when/when-not/alternative routing.
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.
The reply opens with ``tell_the_person``: the price and what it
is made of, timing, what more copies would cost, and the print
service's order terms with a link to them, already worded for
the person. Pass every line on to them word for word, in order,
before they decide; do not summarise, shorten or drop any.
``quote.price_sheet`` holds the same numbers as data.
Use the returned ``quote_id`` with ``fulfillment_order`` to place the
order.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Default: 1. | |
| file_path | Yes | ||
| material_id | Yes | ||
| shipping_country | No | Default: "US". |
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 it well: it discloses the upload side effect, the Stripe auth hold placed on the fee at quote time, when the hold is captured vs released, that the orchestration fee is shown separately, and the exact reply structure (tell_the_person lines plus quote.price_sheet as data). That is exactly the side-effect and side-channel information an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, then mechanics, then the ordering handoff – good ordering with zero filler sentences. It is lengthy and the docstring-style Args block is more verbose than needed, but each section carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description has to describe returns, and it does: pricing from the print network, unit price/total/lead time/shipping options, the separate fee, the tell_the_person lines and price_sheet, and quote_id for the next step. For a 4-param, mutation-with-side-effect tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (file_path and material_id are undocumented in the schema), and the description compensates: absolute path plus accepted formats STL/3MF/OBJ, material_id sourced from fulfillment_materials, quantity default 1, ISO country code default US. This is meaning beyond what the schema provides, not a restatement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a concrete verb+resource: get a manufacturing quote for a 3D model from Craftcloud, and names the workflow it belongs to (material_id from fulfillment_materials, quote_id into fulfillment_order). It clearly isn't an ordering tool. It does not distinguish itself from close siblings like get_fulfillment_quote_cached or print_service_quote, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: call before ordering, pass quote_id to fulfillment_order, and the hold is released if the user doesn't proceed. What's missing is explicit when-not-to-use guidance, e.g. when a cached quote is sufficient or how it differs from print_service_quote.
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. Leave unset for the
nozzle Kiln has for ``printer`` (or the only printer it knows
of), else 0.4; the reply's ``nozzle`` says which.
mode: Adaptive strategy — "balanced" (default), "quality_first",
"speed_first", or "material_optimized".
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "balanced". | |
| printer | No | ||
| regions | Yes | ||
| material | Yes | ||
| model_name | No | Default: "". | |
| model_height_mm | Yes | ||
| nozzle_diameter_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 useful behavior for the nozzle_diameter default chain (printer-specific nozzle, else the only known printer, else 0.4, with the answer echoed in the reply) and mode defaults, but never states whether this mutates stored state, what permissions are needed, or what the plan output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line purpose is front-loaded before the Args block, and every sentence adds information. The docstring-style Args list is slightly long but each entry earns its place; nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-annotation, no-output-schema tool the parameter story is complete, but the return contract is essentially unaddressed apart from the aside that the reply's ``nozzle`` field reports the resolved nozzle. An agent cannot tell whether the plan is returned, persisted, or how layer heights/units are expressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 29%, so compensation was required, and the description delivers: it enumerates every parameter (regions, material, model_height_mm, model_name, printer, nozzle_diameter_mm, mode) and even specifies the required keys inside each region dict (region_type, z_start_mm, z_end_mm, area_pct) plus the allowed mode values with the default. This 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?
States a specific verb and resource: 'Generate a per-layer adaptive slicing plan' plus a concrete elaboration (layer-by-layer plan with variable heights, speeds, cooling from detected geometry regions). It is clearly distinguishable from siblings such as get_adaptive_plan_summary or export_adaptive_slicer_config, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a real prerequisite by pointing at ``analyze_model_geometry`` as the source of the regions input, which is genuinely useful sequencing information. However, it never says when to choose it over quick_adaptive_plan or get_adaptive_plan_summary, and gives no when-not conditions.
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:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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).
material: Filament material for the slice (``"PLA"``,
``"PETG"``, …). It sets the temperatures, melt rate and
cooling, and its density weighs the print. Omitted, the
spool the printer reports loaded answers, then PLA —
``slice.filament`` says which.
placement: Where the part goes when the plate still holds
the last print: ``[x, y]`` in mm, a named region
(``"front-left"``, ``"centre"``, …), or ``"keep"``.
Omitted, an occupied plate refuses before slicing and
lists the spots that would work. The clearance verdict
is free; placing and starting a second print on an
occupied plate is a kiln-pro feature
(https://kiln3d.com/pricing).INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| prompt | Yes | ||
| profile | No | ||
| timeout | No | Default: 600. | |
| brief_id | No | Default: "". | |
| material | No | ||
| provider | No | Default: "meshy". | |
| placement | No | ||
| 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 the whole burden and does so: it discloses that the operation mutates printer state via upload but stops short of printing, flags hardware/safety risk of AI-generated meshes, states the occupied-plate refusal behavior and that the clearance verdict is free while placing on an occupied plate is paid-tier, and notes automatic mesh decimation for the viewer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Key facts are front-loaded and each Args entry is substantive, but the piece is long and carries some padding — the inline-stage paragraph and the parenthetical about the PNG preview being 'the floor, not the whole experience' read as promotional rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 10-parameter mutation pipeline with no output schema is well covered on inputs, safety, and failure modes. The remaining gap is what success actually yields — model identifier, slice estimate, preview artifact paths — and that is only partially implied by references to a 'PNG preview' and 'slice.filament'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 30% for 10 parameters, and the description compensates thoroughly: it explains brief_id's relationship to design_session, provider's values, printer_id's profile auto-selection with an example, material's physical effects plus the fallback chain (reported spool → PLA, announced via slice.filament), and placement's three accepted forms and default failure mode. This is meaning the schema 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 first line names the exact stage chain (generate → validate → slice → upload) and immediately bounds it: 'does NOT start printing.' That boundary is what separates it from siblings like start_print or slice_and_print, and an agent can pick correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit next-step rule ('You MUST call start_print separately after reviewing the preview results') and explicit discouragement ('prefer downloading proven models from marketplaces ... instead of generating new ones'), plus a routing note that compile_scad is the make→preview→iterate loop on this install. It never contrasts against the closest siblings (generate_model, slice_and_print, run_quick_print), so routing among generators is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_ashtrayB
Generate an ashtray with optional branding; adding a QR code needs Kiln Business. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 ashtrays/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_ashtray
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| top | No | Default: "". | |
| size | No | Default: "". | |
| shape | No | Default: "round". | |
| bottom | No | Default: "plain". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| height_mm | No | Default: 35.0. | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| diameter_mm | No | Default: 100.0. | |
| include_step | No | Default: false. | |
| cigarette_rests | No | ||
| color_overrides | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the free-tier cap of 3/month vs unlimited Pro, that QR branding requires Kiln Business, that a 3D stage panel opens on success, and that oversized meshes are decimated for display while the PNG preview is the floor. It does not say whether a design record is persisted or what the return payload is, which is the remaining 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 inline 3D stage is explained twice — once inline in the opening sentence and again in a dedicated INLINE 3D STAGE section restating the same facts. Add an upgrade URL and the oddly capitalized 'MAKE DOORS' framing, and a large share of the text does not earn its place. Purpose is front-loaded, which salvages it 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?
For a 13-parameter generation tool with no annotations and no output schema, the description covers cost limits, environment routing and the stage behavior. It omits the return shape (design id? PNG? mesh?) and gives no guidance on the geometric parameters (diameter_mm, height_mm, cigarette_rests), so an agent still guesses on output and sizing.
Complex tools with many parameters or behaviors need more documentation. Simple 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 92%, so the schema documents the 13 parameters itself, and baseline 3 applies. The description's only parameter-adjacent content is 'optional branding', which loosely gestures at top/bottom/photo_mask but adds no meaning beyond what the schema titles imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Generate an ashtray with optional branding.' That is enough to distinguish it from the other generate_* product tools (coaster, keychain, pen cup) by resource alone. It does not explicitly contrast with the nearest artifact tools, but the resource specificity carries the 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 MAKE DOORS paragraph gives real routing guidance — design_session is unavailable here and compile_scad is the make → preview → iterate loop — and the QR/branding gating is stated. However, it never addresses the far more immediate alternative set (generate_coaster, add_qr_to_product, generate_qr_decoration), nor says when not to use this tool. Usage is implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_assembly_manualC
Generate a flat-pack-style assembly manual for a multi-part print (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_assembly_manual
| Name | Required | Description | Default |
|---|---|---|---|
| use_llm | No | Default: true. | |
| branding | No | ||
| brief_id | No | Default: "". | |
| design_id | No | Default: "". | |
| languages | No | ||
| output_dir | No | Default: "./assembly_manual". | |
| printer_id | No | Default: "". | |
| version_id | No | Default: "". | |
| design_name | No | ||
| label_scheme | No | ||
| assembly_json | Yes | ||
| co_brand_name | No | ||
| gate_interval | No | Default: 4. | |
| cover_language | No | ||
| step_overrides | No | ||
| strict_certainty | No | Default: true. | |
| work_instruction | No | ||
| design_name_translations | 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 licensing requirement, but nothing about what the tool writes (the output_dir and output_dir default hint at side effects like files on disk), whether it requires an existing assembly_json, what the returned artifact is, or how expensive/slow generation is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in a single sentence, which is good. However, two of the four lines are promotional tier/upgrade boilerplate rather than agent-relevant behavior, and the padding displaces space that could document 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?
For an 18-parameter tool with nested objects, one required field, and no output schema, the description is far too thin. An agent cannot determine what assembly_json must contain, what gets produced, or where the result lands, so it is not complete enough to call correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 18 parameters at 44% schema description coverage, and the description adds no meaning for any of them — no explanation of assembly_json structure, branding, languages, label_scheme, or step_overrides. The free-text upgrade line is the only prose, so the description fails to compensate 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 states a specific verb and artifact: 'Generate a flat-pack-style assembly manual for a multi-part print.' That is enough to distinguish it from pure-mesh or pure-slicing tools, but it never differentiates from close siblings like auto_generate_manual_for_print, derive_assembly_plan, or embed_manual_in_3mf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is a tier gate ('Requires Kiln Business'), which tells the agent whether it may call the tool but not when to prefer it over the listed manual/assembly siblings. No conditions, prerequisites, or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_bookmarkB
Generate a bookmark with optional decoration and page clip. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 bookmarks/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_bookmark
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size | No | Default: "". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 30.0. | |
| length_mm | No | Default: 120.0. | |
| body_color | No | Default: "white". | |
| decoration | No | Default: "". | |
| corner_style | No | Default: "rounded". | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 1.2. | |
| clip_depth_mm | No | Default: 15.0. | |
| color_overrides | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavior: an inline 3D stage is opened on success, hosted sessions get a browser stage link, oversized meshes are auto-decimated, and there is a 3/month free-tier quota. It does not say whether the generated bookmark is persisted as a design, whether the call is idempotent, how failures surface, or what is returned besides a PNG preview.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded correctly in the first sentence, but the inline 3D stage behavior is described twice (opening sentence and the 'INLINE 3D STAGE' block), and a pricing/upgrade URL occupies a standalone line. The 'MAKE DOORS' paragraph is the longest section yet is about other tools rather than this one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, all-optional generative tool with no output schema, the description should clarify what comes back (artifact path, design id, preview URL) and what the spare parameters do. It covers the visual stage and quota but leaves the unit/format ambiguity of `size`, `brief_id`, and `color_overrides` unaddressed in both schema and 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?
Schema coverage is reported at 100%, so the baseline of 3 applies. The description explains only the two most consequential knobs conceptually ('decoration', 'page clip' → clip_depth_mm); it adds nothing about `size`, `brief_id`, `material`, `corner_style`, `color_overrides`, or acceptable value formats for the six string 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 opening sentence gives a specific verb and resource ('Generate a bookmark') plus the differentiating capabilities ('optional decoration and page clip'), which separates it from the many other generate_* product siblings by object type. It also names the general-purpose making paths it is not (`design_session`, `compile_scad`), though that routing block slightly blurs whether this tool or compile_scad is the intended entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' paragraph tells the agent that `design_session` is unavailable on this install and that `compile_scad` is the general make → preview → iterate loop, which is real routing context. However, it never states the condition under which an agent should pick `generate_bookmark` over `compile_scad`, `generate_keychain`, or `generate_coaster`; usage is only implied by the product name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_coasterB
Generate a coaster with optional branding; adding a QR code needs Kiln Business. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 coasters/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_coaster
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| top | No | Default: "". | |
| shape | No | Default: "round". | |
| bottom | No | Default: "plain". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| diameter_mm | No | Default: 90.0. | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 7.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: free-tier quota (3/month vs unlimited Pro), a paid-feature gate on QR codes, automatic mesh decimation for oversized results, and the fact that a PNG preview is a floor rather than the full result. It stops short of saying whether the call is synchronous/expensive or what the returned payload contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the text is bloated by a pricing URL and upgrade pitch, and the inline 3D stage is explained twice (once in the opening paragraph, again in a dedicated INLINE 3D STAGE section). Ad copy and repetition dilute the operational 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?
For a 10-parameter, no-annotation, no-output-schema generation tool, the description must explain both the parameters and the result. It covers quota and the viewer but leaves all ten inputs opaque and says nothing about what the call returns beyond a preview/stage.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 100%, but every property description is only a default value ("Default: \"\"", "Default: \"round\"") with no meaning. The description never explains top, bottom, photo_mask, brief_id, include_step, or allowed values for shape/material, so an agent still cannot tell what these fields do — the schema provides defaults, not semantics, and the prose 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 opening sentence states a specific verb and resource ("Generate a coaster with optional branding") and flags a conditional capability (QR code requires Kiln Business), which separates it from siblings like generate_keychain or generate_nameplate. It never explicitly names those siblings, so differentiation is implied by the product noun rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful routing context — design_session is not installed here, so compile_scad is the make→preview→iterate loop — but that is fallback routing rather than guidance on when to pick generate_coaster over the other ~40 generate_* product tools. Tier restrictions (3 free/month) are stated, which is a real usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_decorated_productB
Generate a fully decorated product from a photo in one step (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_decorated_product
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| mode | No | Default: "auto". | |
| text | No | Default: "". | |
| size_mm | No | Default: 0. | |
| brief_id | No | Default: "". | |
| material | No | Default: "". | |
| photo_path | Yes | ||
| image_style | No | Default: "". | |
| include_step | No | Default: false. | |
| product_type | Yes | ||
| thickness_mm | No | Default: 0. |
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 disclose real behavior: it requires Kiln Pro, it opens an interactive 3D stage (or attaches a hosted browser link), oversized meshes are auto-decimated, and the PNG preview is described as a floor rather than the whole output. It omits generation latency, credit/quota consumption, and where the resulting mesh is written, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening is well front-loaded, but the inline 3D stage is explained twice in near-duplicate paragraphs, and the description carries pricing/upgrade marketing plus a confusing 'MAKE DOORS' block that does not obviously belong to this tool. Substantial content does not earn 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 Pro-gated generation tool with ten parameters and no output schema, the description does state that a mesh plus a PNG preview (and an interactive stage) result, which is the most important return context. It is still incomplete on parameter meaning, output location/format for downstream steps, and cost or timing, so an agent cannot call it correctly without opening the 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 explains none of the ten parameters. The claimed 80% schema coverage is nominal only — each property's 'description' is just 'Default: ""' or 'Default: 0', so fields like mode (no enum), brief_id, image_style, include_step, and thickness_mm convey no meaning anywhere. A 10-parameter tool needs the description to compensate here and 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 opening sentence names a specific verb and resource with scope: "Generate a fully decorated product from a photo in one step." It also marks the Pro tier. However, the mid-description 'MAKE DOORS' block about design_session and compile_scad muddies what this tool actually does and never distinguishes it from closer siblings like preview_decorated_mesh, smart_decorate, or generate_model_from_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 only implied: Pro-only, and it inherits the inline stage. The 'MAKE DOORS' aside explains an unrelated workflow (design_session not installed, compile_scad is the make loop) rather than saying when to pick this tool over alternatives that also produce or preview decorated parts. No explicit when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_fridge_magnetA
Generate a printable fridge magnet with front decoration. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 fridge magnets/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_fridge_magnet
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| back | No | Default: "plain". | |
| size | No | Default: "". | |
| front | No | Default: "". | |
| shape | No | Default: "rectangle". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 50.0. | |
| height_mm | No | Default: 50.0. | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 4.0. | |
| color_overrides | No | Default: "". | |
| magnet_depth_mm | No | Default: 2.0. | |
| magnet_diameter_mm | No | Default: 10.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses the free-tier quota (3/month), that oversized meshes are auto-decimated for the stage, that a PNG preview is always produced, and that hosted sessions attach a browser stage link. It omits what a quota-exceeded failure looks like and whether a generated magnet is persisted as a design artifact, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, which is good. But the final 'INLINE 3D STAGE' paragraph largely repeats the parenthetical in sentence one (orbit/zoom panel in MCP Apps hosts, hosted sessions add a browser stage link), so a whole block is redundant rather than additive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 generator with no annotations and no output schema, the description does cover the return experience (PNG preview plus interactive stage) and quota limits, which is the most important missing structured data. It leaves the parameter surface entirely undocumented semantically, which is a meaningful gap given the breadth of the 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 description coverage is 100%, so the baseline is 3, but the schema descriptions are only default values ('Default: "PLA"', 'Default: 50.0') rather than semantics. The description adds essentially nothing about the 15 parameters — front vs. back, photo_mask, color_overrides, brief_id, include_step are all left unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource: 'Generate a printable fridge magnet with front decoration,' which an agent can distinguish from the many other product generators (generate_coaster, generate_keychain) in the sibling list. It also clarifies its relationship to design_session and compile_scad, though it never explicitly contrasts itself against the sibling magnet tools such as check_magnet_design or generate_magnet_qc_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 'MAKE DOORS' paragraph gives real routing context (design_session is not installed here; compile_scad is the make → preview → iterate loop), and the free-tier quota of 3/month tells the agent when calls will start failing. However, it never states when an agent should pick this tool over the other product generators or when it should not be used at all, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_frisbeeA
Generate a flying-disc frisbee with optional top decoration. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 frisbees/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_frisbee
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size_mm | No | Default: 230.0. | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| body_color | No | Default: "white". | |
| decoration | No | Default: "". | |
| photo_mask | No | Default: "circle". | |
| include_step | No | Default: false. | |
| lip_width_mm | No | Default: 8.0. | |
| thickness_mm | No | Default: 3.0. | |
| lip_height_mm | No | Default: 12.0. | |
| color_overrides | No | Default: "". |
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 disclose real behavior: it opens an interactive 3D stage on success, oversized meshes are decimated automatically, the PNG preview is a floor not the full experience, and there is a 3/month free-tier cap with unlimited Pro. It does not say whether the result is persisted as a design, what auth/account state is required, or how long generation takes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in sentence one, which is good, but the body pads the definition with marketing (pricing URL with UTM params) and the stages paragraph is a near-verbatim restatement of the inline-3D-stage clause already given in the first sentence. Two paragraphs say the same thing about the orbit/zoom panel and hosted browser link.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description owes the agent some sense of what comes back, and it only partially delivers: an interactive stage plus a PNG preview, with no mention of a returned design ID, file paths, or how to iterate afterward. Quota and rendering behavior are covered, but the round-trip (call → preview → next action) is left ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 11 parameters carry defaults/descriptions), so the schema already does the heavy lifting and 3 is the correct baseline. The description adds essentially nothing about parameters beyond 'optional top decoration,' leaving size_mm, material, lip geometry, and color overrides entirely to 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 gives a specific verb and resource ('Generate a flying-disc frisbee') plus the scope modifier 'with optional top decoration,' which is enough to separate it from the many other generate_* product siblings. It never explicitly contrasts itself with generate_coaster/generate_keychain or design_session, though, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' block hints at the intended workflow ('compile_scad IS the make → preview → iterate loop') and the quota line implies a usage limit, but it never states plainly when to pick generate_frisbee over design_session, compile_scad, or the other generate_* generators. The routing guidance is implied rather than explicit, and the design_session paragraph reads more like install troubleshooting than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_from_templateA
Build a printable STL from a parametric part, to the user's dimensions.
This is how Kiln makes a FUNCTIONAL PART without writing any
OpenSCAD: pick a template, pass the dimensions the user gave you,
and get a print-ready STL. It runs LOCALLY through OpenSCAD — free,
no AI provider, no API key, and every template in the library is
print-verified at its default, minimum, and maximum parameters.
Reach for this the moment a user describes a functional part they
need in specific sizes ("a bracket for a 200 mm shelf", "a bin that
fits my 80 mm drawer", "a clip for an 8 mm cable"). Find the
template with ``find_design_templates(use_case)``, read its
parameters with ``get_design_template_info(id)`` or
``list_design_templates()``, then call this.
Only PARAMETRIC PARTS work here. The design PATTERNS returned by
``find_design_templates`` with ``generatable: false`` (snap fits,
living hinges, press fits) are guidance for OpenSCAD you write
yourself — this tool rejects them.
For AI-assisted parameter inference plus structural analysis, use
``smart_generate_from_template``.
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.
When you pass a parameter that sizes a hole for real hardware (a
screw or bolt hole, a bore, a dowel or pin hole, a magnet pocket),
the result carries a ``fastener_advice`` block saying the part was
built to your number and nothing sized it for a named fastener.
Kiln raises that once per session across every tool that can raise
it, so a later build may omit the block even though it qualifies.
Read its ``agent_instruction`` before repeating any of it to the user.
Args:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
template_id: Parametric part id, from ``find_design_templates``
or ``list_design_templates`` (e.g. ``"shelf_bracket"``).
parameters: Dict of parameter overrides carrying the user's own
dimensions (e.g. ``{"arm_length": 200, "thickness": 8}``).
Anything you leave out keeps the template's default.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| parameters | No | ||
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations (readOnly=false, destructive=false, openWorld=false): it discloses that OpenSCAD runs locally with no AI provider or key, that oversized meshes are decimated for the stage, that a Pro+ intent sidecar JSON is written next to the STL, that fastener_advice is raised once per session and may be omitted on later builds, and that an inline 3D stage opens on 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?
Front-loaded and organized (Args section, stage note, MAKE DOORS), but padded with promotional and tier material ('This is how Kiln makes a FUNCTIONAL PART', 'free, no AI provider', a kiln3d.com link, and a MAKE DOORS aside that repeats the compile_scad comparison already made). Several sentences could be cut without losing calling 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 3-param generation tool with no output schema, it covers inputs, prerequisites, failure mode (rejects design patterns), side effects (stage panel, sidecar file), and response blocks (intent, fastener_advice). Only gap is what the returned STL result/stage link looks like structurally, which is minor 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?
Schema coverage is only 33%, but the description compensates fully: brief_id is explained as the saved goal id from design_session (empty when no goal), template_id as sourced from find_design_templates/list_design_templates with an example value, and parameters as a dict of overrides with an example where omitted keys keep template 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?
First line states a specific verb+resource+output: 'Build a printable STL from a parametric part, to the user's dimensions.' It explicitly distinguishes itself from siblings by naming smart_generate_from_template (AI-assisted path), compile_scad (manual loop), and the design_patterns that are rejected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger ('the moment a user describes a functional part they need in specific sizes') with example utterances, then the prerequisite chain: find_design_templates -> get_design_template_info/list_design_templates -> this call. It also states when NOT to use it (non-parametric patterns with generatable: false) and which alternative to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_jewelry_trayB
Generate a jewelry tray with optional decoration; adding a QR code needs Kiln Business. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 jewelry trays/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_jewelry_tray
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size | No | Default: "". | |
| bottom | No | Default: "plain". | |
| variant | No | Default: "square". | |
| wall_mm | No | Default: 2.4. | |
| brief_id | No | Default: "". | |
| depth_mm | No | Default: 80.0. | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 120.0. | |
| height_mm | No | Default: 20.0. | |
| body_color | No | Default: "white". | |
| decoration | No | Default: "". | |
| dividers_x | No | Default: 0. | |
| dividers_y | No | Default: 0. | |
| photo_mask | No | Default: "". | |
| include_step | No | Default: false. | |
| color_overrides | No | Default: "". | |
| corner_radius_mm | No | Default: 8.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and mostly succeeds: it discloses that the tool opens an inline 3D stage, that hosted sessions attach a browser stage link, and that oversized meshes are decimated automatically. It omits whether a design is persisted, error behavior, and what the PNG preview represents as an 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?
The inline 3D stage behavior is explained twice at length, and a pricing URL plus a tangential 'MAKE DOORS' detour consume space well ahead of any parameter guidance. The genuinely useful information (quota, QR tier gate, stage behavior) is buried rather than 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 17-parameter generative tool with no annotations and no output schema, the description covers the interaction model (stage/preview) and quota but leaves the return values and the meaning of most parameters unexplained. It is adequate as a product blurb, not as a calling 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 100%, so baseline 3 applies, but the schema descriptions are only default values with no semantic content. The prose adds meaning for at most 'decoration' (QR requires Kiln Business); dimensions, dividers, material, body_color, and photo_mask are never explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Generate a jewelry tray with optional decoration') and adds a constraint (QR code requires Kiln Business). It does not, however, distinguish this from the many sibling generators such as generate_rolling_tray, generate_coaster, or generate_product_base, so an agent cannot easily tell which generator applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tier quotas (3/month free, unlimited Pro) and the QR/Kiln Business requirement give concrete usage constraints. But the 'MAKE DOORS' paragraph about design_session and compile_scad is tangential and confusing rather than routing guidance, and there is no clear statement of when to pick this tool over the sibling generators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_keychainA
Generate a 3D-printable keychain. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 keychains/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_keychain
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| back | No | Default: "plain". | |
| front | No | Default: "". | |
| shape | No | Default: "rectangle". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 50.0. | |
| height_mm | No | Default: 30.0. | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 3.0. | |
| color_overrides | No | Default: "". | |
| corner_radius_mm | No | Default: 5.0. | |
| ring_diameter_mm | No | Default: 5.0. |
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 a lot: it discloses a side effect (opens an interactive 3D stage panel / hosted browser link), an automatic mesh transformation (oversized meshes are decimated for the stage), and quota economics (3/month free, unlimited Pro). It omits persistence semantics (is the design saved/reopenable?), failure modes, and auth requirements, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is correctly front-loaded in the first sentence, but the inline 3D stage is explained twice (once in the opening parenthetical, again in a dedicated all-caps section), and the pricing/upgrade URL plus uppercase section headers add bulk without decision-relevant 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 output side is well covered (PNG preview plus interactive stage, decimation behavior), which matters given there is no output schema. The input side is not: 14 all-optional parameters with no annotations and only default-value schema text leave an agent guessing at what most fields mean and what a reasonable call looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies, but the schema entries only state defaults ('Default: "rectangle"', 'Default: 5.0') without explaining what front/back text, photo_mask, brief_id, color_overrides, or include_step actually control. The description says nothing about any of the 14 parameters, so it adds no meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb+resource: 'Generate a 3D-printable keychain.' It also positions itself against named siblings (design_session, compile_scad) and against the family of other product generators, so an agent knows what it produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' paragraph routes the agent between design_session and compile_scad, which is real routing guidance. However, it never says when to pick generate_keychain over the many similar siblings (generate_nameplate, generate_coaster, generate_pet_tag, generate_fridge_magnet), and the compile_scad note reads as a fallback instruction rather than a selection rule for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_license_plate_frameB
Generate a license plate frame for a US or EU plate. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 license plate frames/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_license_plate_frame
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| font | No | Default: "Liberation Sans:style=Bold". | |
| size | No | Default: "". | |
| brief_id | No | Default: "". | |
| material | No | Default: "ASA". | |
| top_text | No | Default: "". | |
| width_mm | No | Default: 317.5. | |
| height_mm | No | Default: 165.1. | |
| body_color | No | Default: "black". | |
| bottom_text | No | Default: "". | |
| include_step | No | Default: false. | |
| plate_lip_mm | No | Default: 0.0. | |
| text_size_mm | No | Default: 0.0. | |
| thickness_mm | No | Default: 5.0. | |
| plate_width_mm | No | Default: 304.8. | |
| color_overrides | No | Default: "". | |
| plate_height_mm | No | Default: 152.4. | |
| corner_radius_mm | No | Default: 6.0. | |
| mount_hole_spacing_mm | No | Default: 177.8. | |
| mount_hole_diameter_mm | No | Default: 7.0. | |
| mount_hole_inset_top_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the interactive 3D stage, hosted browser stage link behavior, automatic mesh decimation, and free-tier quota, but it does not explain whether the generated frame is persisted, how the result is returned, or what authentication/account state is required beyond a passing mention of being signed in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description repeats the inline 3D stage behavior twice and includes promotional upgrade links and tier language that do not help an agent invoke the tool. The duplicated stage explanation and marketing copy make it less concise than 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?
This is a complex 20-parameter generation tool with no output schema and no annotations. The description explains the stage and quota but omits what the call actually returns, whether a design or mesh is saved, and how the generated frame relates to later print/export steps, leaving important gaps for correct invocation and follow-up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already covers all 20 parameters at the baseline level, even though most descriptions are only defaults. The tool description adds no parameter-specific meaning such as how top_text, size, material, or US versus EU plate dimensions should be chosen, so it does not exceed 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 first sentence states a specific verb and resource: generate a license plate frame for a US or EU plate. It clearly distinguishes this from general make-loop tools like design_session and compile_scad, but it does not explicitly differentiate itself from other product generators such as generate_nameplate or generate_wall_plaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 some context by saying design_session is not installed here and compile_scad is the make-preview-iterate loop, but it does not state when an agent should choose this specialized generator over the many sibling product generators. Usage is implied by the tool name rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_magnet_qc_planC
Generate a Business-tier QC plan for a magnetized printed product.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_magnet_qc_plan
| Name | Required | Description | Default |
|---|---|---|---|
| coating | No | Default: "". | |
| use_case | Yes | ||
| max_temp_c | No | ||
| environment | No | Default: "indoor". | |
| grade_class | No | Default: "". | |
| body_adjacent | No | Default: false. | |
| magnet_family | No | Default: "". | |
| child_accessible | No | Default: false. | |
| retention_method | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It does disclose that the tool is gated to the Business tier, which is real context, but it never says what happens on a lower tier (error, upsell payload, partial result), whether the call is a pure computation or persists anything, or what the response contains. Roughly half the text is pricing promotion rather than 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 purpose is front-loaded in one clean sentence, but the remaining two-thirds of the text is tier advertising and an upgrade URL with tracking parameters, which does not help an agent select or invoke the tool. It is short in absolute terms, yet poorly allocated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, annotation-free tool with no output schema, the description should explain the inputs and what a 'QC plan' contains. Instead it explains none of the inputs and nothing about the return value, so an agent cannot judge whether the response is prose, structured checks, or a fleet configuration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Nine parameters, and the description adds meaning for none of them. Schema coverage of 78% is nominal only — several entries read 'Default: ""' or 'Default: false' with no explanation — and the single required parameter, use_case, has no description at all, so the highest-impact input is undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: generate a QC plan for a magnetized printed product, with a tier qualifier. That is enough for an agent to know roughly what it produces, but it never distinguishes this from magnet-domain siblings such as check_magnet_design or recommend_magnet_for_product, and the 'Business-tier' framing sits ambiguously against the tier table, which says lower tiers also get output (warnings, sizing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this rather than a sibling, nor any prerequisite beyond an implied Business subscription. The tier paragraph describes feature levels in marketing terms ('per-machine fit, validation tests and QC plans across your fleet') but never says what an agent should do when it only needs warnings or sizing — presumably a different tool.
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.MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| format | No | Default: "stl". | |
| prompt | Yes | ||
| material | No | Default: "". | |
| provider | No | Default: "meshy". |
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: it discloses that generation is asynchronous (returns a job ID), the follow-up sequence (generation_status → download_generated_model), that OpenSCAD runs synchronously, that Meshy prompts cap at 600 chars, and detailed failure modes (thin walls, non-manifold faces, floating islands, build-volume overflow).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded and every section is labeled, but the prompt-tips block with good/bad examples plus the OpenSCAD note makes it long for a 5-parameter tool; some of that guidance is reference material rather than invocation 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 annotations and no output schema, the description supplies the async job-ID contract, the polling/download follow-ups, provider-specific caveats, and risk warnings. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters are explained with meaning beyond the schema's 60% coverage: material is a 'design hint, not a slicing setting' to leave empty when undecided; provider distinguishes cloud vs local; style is Meshy-only and ignored by OpenSCAD; format defaults to stl; prompt gets syntax, length limits, and good/bad 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?
Opens with a specific verb+resource+mechanism: 'Generate a 3D model from a text prompt via external AI API (Meshy/etc).' It then explicitly positions itself against siblings — generate_model_from_image, generate_from_template, generate_and_print — so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit entry condition ('Start here if user has no template/image — just a text description'), names the alternatives and the conditions that select them, and adds a preference rule ('prefer downloading proven community models over generating new ones'). This is the strongest possible routing guidance.
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,
give it to ``design_session`` as ``reference_images`` (every later
make is checked against it), and write the OpenSCAD yourself for
``design_session(verb="generate", scad_code=...)`` — or
``compile_scad`` on an install without ``design_session``. 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.
``reference_picture`` says what becomes of the picture: compared
with the model when it arrives and with every make on the goal it
is given to, or, where this install cannot compare, that you must.
**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"``).MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| provider | No | Default: "meshy". | |
| image_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it explains the keyless fallback instead of erroring, the Meshy submission path, experimental-model validation, and reference-image comparison behavior. It does not clarify whether invocation returns a final model, a job id, or requires follow-up calls such as generation_status or await_generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and default/opt-in behavior are front-loaded and structured with clear headings. It is longer than necessary in places, especially around architecture and MAKE DOORS, but most content is relevant and 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 the complex dual-path behavior and low schema coverage, the description is fairly complete on prerequisites, parameter meaning, and image requirements. However, with no output schema and no annotations, it leaves an important gap around return values and the async generation workflow suggested by sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, but the description compensates by documenting all three parameters: image_url must be a publicly accessible PNG/JPG, provider currently supports only meshy for image-to-3D, and style accepts realistic or sculpture. This adds meaningful 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?
States a specific verb and resource: "Make a 3D model from a reference image." It also clearly separates the default keyless vision-assisted path from the opt-in Meshy cloud path and names related alternatives such as design_session 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?
Gives explicit when-to-use guidance: default keyless path when no provider key is configured, opt-in cloud path only when the user has set KILN_MESHY_API_KEY, and directs agents to design_session or compile_scad when appropriate. The alternatives and branch conditions are clear.
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 make it with
``design_session(verb="generate", goal_id=..., scad_code=...)`` —
or ``compile_scad`` on an install without ``design_session`` — 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", goal_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 making it through design_session (or
compile_scad where design_session is not installed). 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:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | ||
| timeout | No | Default: 600. | |
| brief_id | No | Default: "". | |
| material | No | ||
| provider | No | Default: "auto". | |
| output_dir | No | ||
| layer_height | No | Default: 0.2. | |
| max_attempts | No | Default: 2. | |
| requirements | Yes | ||
| printer_model | No | ||
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| max_overhang_angle | No | Default: 45.0. |
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: it discloses that a provider + user-supplied API key is required, that NO_PROVIDER is raised and the agent must NOT prompt for a key, that candidates are audited for printability with corrective retries, and that a successful call opens an interactive 3D stage with automatic mesh decimation. Provider selection semantics (auto prefers Gemini; openscad rejected) are also surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the critical routing decision are front-loaded, but the text is bloated: the 'free, keyless, local path is the default' point and the 'user supplies their own API key' point are each repeated two to three times across the opening, the no-provider fallback, and the MAKE DOORS note. The stage/decimation paragraph and the MAKE DOORS epilogue also sit in all-caps blocks that lengthen rather than sharpen the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no-output-schema, no-annotation generation tool, the description covers prerequisites, failure mode and handler behavior, retry semantics, artifact lifecycle (stage, preview PNG, decimation), and delegation guidance. An agent has everything needed to decide, call, and recover from 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 only 40%, but the Args block supplies meaning for all 15 parameters — brief_id's link to a saved goal, requirements as natural language, the provider enumeration (auto/gemini/meshy/tripo3d/stability) which the schema leaves as an unconstrained string, and build-volume/nozzle/layer-height/overhang intent. This more than compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First line names a specific verb and resource: generate a printable design via an external AI provider. It then explicitly distinguishes this path from the default local OpenSCAD route and from the design_session wrapper, so an agent can separate it from siblings like generate_model, compile_scad, and generate_model_from_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('organic or photo-derived and hard to express in OpenSCAD AND a provider is configured'), when-not ('This is NOT the default'), named alternatives (design_session verb=generate, compile_scad), and a directive for the saved-goal flow. Exclusions and routing are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_nameplateA
Generate a desk nameplate with two-line raised text. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 nameplates/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_nameplate
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| font | No | Default: "Liberation Sans:style=Bold". | |
| size | No | Default: "". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 200.0. | |
| height_mm | No | Default: 60.0. | |
| body_color | No | Default: "black". | |
| text_line_1 | No | Default: "". | |
| text_line_2 | No | Default: "". | |
| border_frame | No | Default: true. | |
| font_size_mm | No | Default: 0.0. | |
| include_step | No | Default: false. | |
| base_depth_mm | No | Default: 50.0. | |
| color_overrides | No | Default: "". |
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 meaningful work: it discloses that the inline 3D stage opens on success, that hosted sessions attach a browser link, that oversized meshes are auto-decimated, and that the PNG preview is a fallback rather than the full output. It also discloses the free-tier quota (3/month) and Pro limits. Gaps remain around auth requirements and what exactly is returned for follow-up calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the inline 3D stage is explained twice — once inline and again in a dedicated paragraph — and the pricing/upgrade marketing block is padding for a tool-selection prompt. The MAKE DOORS routing commentary is tangential to generating a nameplate and competes with the actual 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?
For a 14-parameter tool with no annotations and no output schema, the description covers runtime behavior and quota well but leaves the agent guessing about return values (design ID? mesh? file path?) and about any parameter beyond its default. Adequate to call, thin for composing a correct first invocation or chaining follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, which sets the baseline at 3, but the schema text is only defaults ('Default: 200.0', 'Default: "Liberation Sans:style=Bold"') and the description adds no meaning for any of the 14 parameters. It never explains units, valid ranges, or how `size`/`font_size_mm`/`brief_id` interact.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a concrete verb and resource with scope: 'Generate a desk nameplate with two-line raised text.' The MAKE DOORS paragraph explicitly distinguishes this from `design_session` and `compile_scad`, so an agent knows both what this makes and which sibling handles the generic making loop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this install's make-and-preview loop applies (`design_session` absent, `compile_scad` is the loop) and names the interactive stage behavior on success. It does not, however, tell the agent when to pick this over sibling product generators such as `generate_wall_plaque`, `generate_coaster`, or `generate_keychain`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_ornamentB
Generate a hanging ornament with optional decoration. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 ornaments/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_ornament
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| back | No | Default: "plain". | |
| front | No | Default: "". | |
| shape | No | Default: "circle". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| diameter_mm | No | Default: 70.0. | |
| star_points | No | Default: 5. | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 4.0. | |
| color_overrides | No | Default: "". | |
| hole_diameter_mm | No | Default: 3.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, this description carries the full load and does disclose real behavior: it opens an inline 3D stage, hosted connections attach a browser stage link, oversized meshes are decimated automatically, and there is a 3/month free-tier cap. Missing pieces are what gets returned (a PNG? a saved design handle?) and what happens on quota exhaustion or failure, 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 purpose is front-loaded, but the body is bloated and repetitive: the inline 3D stage is described twice (once inline, once in the all-caps INLINE 3D STAGE block), and a pricing URL plus quota marketing copy occupy space that should carry input guidance. Several sentences do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 13 loosely documented parameters, the description covers the headline behaviors (stage, decimation, quota) but leaves the return value, save/persistence behavior, valid enum values, and failure modes unexplained. Adequate to call the tool, not adequate to call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds nothing about any of the 13 parameters. Schema coverage is nominally 100%, but the entries only say things like 'Default: "circle"' with no valid-value list, so shape and material have no enums and no explanation of what 'front', 'back', 'photo_mask', 'brief_id', or 'color_overrides' actually accept. Baseline 3 applies given the stated coverage, but the gap is real.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource: 'Generate a hanging ornament with optional decoration.' That is enough to tell it apart from mesh, slicing, and decoration tools. However, it never distinguishes this from the many sibling product generators (generate_keychain, generate_coaster, generate_nameplate) whose names it sits beside, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' paragraph explains the tool chain (design_session is unavailable here, compile_scad is the make→preview→iterate loop) and states a quota, which is useful routing context. But it never says when a user should ask for an ornament instead of another generate_* product, nor what preconditions or inputs make a good request. Usage is implied, not prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pen_cupB
Generate a desktop pen / brush cup with optional decoration; adding a QR code needs Kiln Business. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 pen cups/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_pen_cup
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| shape | No | Default: "cylinder". | |
| bottom | No | Default: "plain". | |
| brief_id | No | Default: "". | |
| depth_mm | No | Default: 75.0. | |
| exterior | No | Default: "". | |
| material | No | Default: "PLA". | |
| height_mm | No | Default: 100.0. | |
| body_color | No | Default: "navy". | |
| photo_mask | No | Default: "auto". | |
| diameter_mm | No | Default: 75.0. | |
| include_step | No | Default: false. | |
| color_overrides | No | Default: "". | |
| interior_bottom | No | Default: "plain". | |
| corner_radius_mm | No | Default: 8.0. | |
| wall_thickness_mm | No | Default: 3.0. | |
| bottom_thickness_mm | No | Default: 3.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose real traits — free tier capped at 3 pen cups/month, Pro unlimited, QR decoration requires Kiln Business, oversized meshes decimated for the stage, and a viewer panel opening on success. However it never says whether a persisted design is created, whether sign-in is required for the base call, or what the tool actually returns, so key mutating behavior stays opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded, but the body then repeats the inline-3D-stage point twice (opening sentence and a dedicated all-caps section), injects a marketing URL and upgrade link, and detours into a confusing "MAKE DOORS" tangent about design_session. Substance is diluted well below what a 16-param generator description should carry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameter-rich, annotation-free, output-schema-free generator the description covers quota, tier gating, and preview/stage behavior, which is useful. But it omits the essentials an agent needs to call correctly — whether a design artifact is persisted, whether the call is idempotent or costly beyond quota, and what the PNG/stage output represents — leaving it only partly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% but each parameter is documented only as a terse "Default: X" string, and the description adds nothing about shape/bottom/material options, units, or how brief_id and color_overrides interact. Per the high-coverage baseline, 3 is the appropriate floor — the schema technically documents all 16 params, but no semantic depth is layered on top.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ("Generate a desktop pen / brush cup with optional decoration") plus a secondary capability (QR code, gated to Business tier). It does not differentiate from other product generators in the sibling list (generate_coaster, generate_pet_bowl, generate_decorated_product), so an agent must infer the boundary from the object name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "MAKE DOORS" block hints at a workflow (design_session absent, compile_scad as the make→preview→iterate loop), but it is framed as meta-commentary about the installation rather than guidance on when to call this tool versus a sibling product generator. No exclusions or prerequisite conditions are stated for choosing generate_pen_cup over generate_decorated_product or generate_coaster, leaving usage only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pet_bowlB
Generate a tapered pet bowl optimized for FDM printing. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 pet bowls/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_pet_bowl
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size | No | Default: "M". | |
| bottom | No | Default: "plain". | |
| wall_mm | No | Default: 3.0. | |
| brief_id | No | Default: "". | |
| exterior | No | Default: "". | |
| material | No | Default: "PETG". | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| printer_id | No | Default: "". | |
| include_step | No | Default: false. | |
| color_overrides | No | Default: "". | |
| interior_bottom | No | Default: "plain". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully states that the tool opens an interactive 3D stage, may attach a hosted browser stage link, auto-decimates oversized meshes, and has a 3-per-month free-tier limit. However, it does not explain generation latency, persistence of the result, error behavior, or what happens when the quota is exhausted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is bloated with promotional upgrade text and repeats the inline 3D stage information in a separate section. The MAKE DOORS paragraph is also confusing and not clearly tied to invoking this specific 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 12-parameter generation tool with no annotations and no output schema, the description leaves important gaps: it does not describe parameters, return artifacts beyond the stage/preview, or whether the result is saved as a design. It provides useful stage and quota context, but not enough for an agent to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even though the description adds no parameter meaning. The schema only supplies defaults for parameters such as size, bottom, wall_mm, material, and photo_mask, and the description does not clarify their valid values or interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: generate a tapered pet bowl optimized for FDM printing. This clearly distinguishes it from sibling product generators such as generate_pen_cup, generate_ashtray, and generate_coaster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 some usage context through the free-tier quota and the note that design_session is not installed, but it does not explicitly say when to choose generate_pet_bowl over generic tools like compile_scad, generate_model, or design_session. The MAKE DOORS paragraph is more server-level guidance than a clear routing rule for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pet_tagB
Generate a 3D-printable pet ID tag. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 pet tags/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_pet_tag
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| back | No | Default: "plain". | |
| shape | No | Default: "circle". | |
| brief_id | No | Default: "". | |
| material | No | Default: "PETG". | |
| body_color | No | Default: "white". | |
| front_text | Yes | ||
| printer_id | No | Default: "". | |
| diameter_mm | No | Default: 30.0. | |
| front_line2 | No | Default: "". | |
| include_step | No | Default: false. | |
| ring_hole_mm | No | Default: 8.0. | |
| thickness_mm | No | Default: 3.0. | |
| color_overrides | No | Default: "". | |
| ring_diameter_mm | No | Default: 5.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description does real work: it discloses that success opens an inline 3D stage, that hosted connections attach a browser stage link, that oversized meshes are auto-decimated for the stage, that the PNG preview is the minimum deliverable, and that there is a 3-tags/month free quota. It does not say whether the generated design is persisted, returns an ID, or can be sent straight to print, which are the remaining behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in sentence one. However, the inline-3D-stage behavior is explained twice (once in the opening line, again in the all-caps 'INLINE 3D STAGE' block), the 'MAKE DOORS' section is confusingly framed, and a pricing URL with UTM parameters is embedded in the middle of what should be tool 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 14-parameter generative tool with no annotations and no output schema, the description covers quota and result presentation but leaves the return contract undefined: it never says whether the output is a mesh file, a design ID, a printed job, or a persisted artifact. It also omits the engraving constraints (text length, legibility minimums) that materially change how front_line2 and back should be passed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Nominal coverage is 93%, but every parameter description is only 'Default: X' — no meaning, allowed values, or format. front_text (the sole required parameter) has no description at all, and shape/back/material are free-form strings with zero enums, so an agent cannot know which shape or back styles are valid. The prose adds nothing about parameters, not even character limits on the engraved text, which is the most consequential detail for a pet tag.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: 'Generate a 3D-printable pet ID tag.' That is unambiguous about what is produced. It does not explicitly differentiate itself from the many similar product generators in the sibling list (generate_keychain, generate_nameplate, generate_ornament, generate_fridge_magnet), so an agent must infer the boundary from the resource noun alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' paragraph names alternatives (design_session, compile_scad) but frames them as the general 'make' loop rather than stating the selection condition, e.g. 'use this tool only when the user wants a pet ID tag; use compile_scad for arbitrary SCAD designs.' The free-tier and upgrade notes are useful commercial context but not usage guidance. The result is implied routing, not explicit when/when-not rules.
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_product_baseC
Generate a 3D-printable product base shape from a template (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_product_base
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size_mm | No | Default: 0. | |
| brief_id | No | Default: "". | |
| size_preset | No | Default: "". | |
| include_step | No | Default: false. | |
| product_type | Yes | ||
| thickness_mm | No | Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does disclose real traits: the tool opens Kiln's interactive inline 3D stage, oversized meshes are auto-decimated for the stage, the PNG preview is a floor not the full result, and it requires Kiln Pro. That is meaningful beyond a bare verb. It still omits side effects (does it persist a design?), auth/prerequisite details beyond Pro, and failure behavior, leaving gaps for a mutating/generating 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 text is bloated with pricing URLs, an upgrade pitch, and a verbose prose explanation of the inline stage repeated across two sections. The useful sentence about Pro requirement and stage behavior is buried among upselling that does not help tool selection, and the uppercase 'MAKE DOORS' block adds noise rather than front-loaded signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain returns; it covers the interactive stage and PNG preview, which helps. But it leaves open what the generated 'base' actually is, how brief_id/template selection works, and what the caller should expect to do next. Given 6 parameters and a generation workflow, it is only partially 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 83% across 6 parameters, so the schema largely carries the burden and baseline 3 applies. The description adds nothing about product_type, size_mm, size_preset, thickness_mm, brief_id, or include_step, so it neither compensates nor confuses. It is adequate by virtue of the schema, not the text.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: 'Generate a 3D-printable product base shape from a template (Pro).' That is clear enough to place the tool among generation siblings. However, the clarity is diluted by a long marketing/upsell block and a tangential 'MAKE DOORS' aside about design_session and compile_scad that does not describe this tool's own 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 never states when to use generate_product_base versus clear alternatives such as generate_from_template, smart_generate_from_template, generate_template_variations, or generate_decorated_product. The 'MAKE DOORS' note routes the agent between design_session and compile_scad, which is ecosystem advice, not a use-condition for this tool, and it reads as confusing rather than guiding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_qr_decorationC
Generate a QR code heightmap for embossing onto 3D models (Business). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Kiln Business would generate the QR geometry, pocket it into the product, and keep it scannable at print size. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_qr_decoration
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| content | Yes | ||
| nozzle_mm | No | ||
| output_dir | Yes | ||
| target_size_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the Business requirement, the inline 3D stage side effect, the hosted browser link fallback, and automatic decimation, but it omits important details like whether it writes files, modifies the design, or has quotas/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 core purpose is front-loaded, but the description is bloated by repeated inline-stage explanations, business-gating repetition, and an upgrade URL. The 'INLINE 3D STAGE' paragraph substantially duplicates earlier stage 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?
For a generation tool with no annotations, no output schema, and low schema description coverage, the description is incomplete. It explains the stage and Business gating but leaves parameter meaning, output behavior, permissions, and error/limits handling unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25%, so the description must compensate for undocumented parameters. It only hints at 'scannable at print size' and never explains content, output_dir, nozzle_mm, or how target_size_mm affects the generated QR heightmap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'Generate a QR code heightmap for embossing onto 3D models.' This is clear enough to distinguish the core action, though the description does not differentiate it from sibling tools such as add_qr_to_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implies use for QR code embossing on 3D models and states the Kiln Business prerequisite, but it never explains when to choose this over add_qr_to_product, batch_decorate, or generate_decorated_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_recovery_gcodeC
Generate a resume-from-layer G-code file for a failed print (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_recovery_gcode
| Name | Required | Description | Default |
|---|---|---|---|
| failure_id | Yes | ||
| output_dir | No | Default: "". | |
| overlap_layers | No | ||
| printer_z_known | Yes | ||
| prime_extrusion_mm | No | Default: 0.0. | |
| power_loss_probe_recovery | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses only that the tool is Pro-gated, and says nothing about where the G-code is written, whether failures in failure_id lookup abort or return empty, or how output_dir and overlap_layers affect the result. The paid-tier notice is genuinely useful context, but most behavioral questions are unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only one sentence of six describes the tool; the remaining text is plan-tier marketing and an upgrade URL. The one useful fact, the Pro requirement, is repeated twice ('(Pro)' and 'Requires Kiln Pro'), which is waste in an already diluted definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a file-generating operation with a nested config object and no annotations or output schema. Given that complexity, the description should explain output location semantics and the role of printer_z_known, but it addresses neither, leaving the agent to guess before invoking a write-ish operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33% on six parameters, and the description adds nothing about any of them. failure_id, printer_z_known, and the nested power_loss_probe_recovery object are undocumented in both places, so the agent gets no guidance on what failure_id refers to or what the nested recovery config should contain.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: generate a resume-from-layer G-code file for a failed print. That is enough to identify the tool, but it never distinguishes it from nearby siblings such as get_recovery_gcode_steps, plan_print_recovery, or wrap_gcode_as_resume_3mf, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative among the many recovery tools. The only routing signal is the '(Pro)' marker, which tells the agent about entitlement rather than about when this tool is the right choice over start_print_recovery or resume_interrupted_print.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_rolling_trayB
Generate a rolling tray — a shallow rectangular work tray with a concave cove inner wall, so loose contents sweep clean into a corner instead of catching a 90-degree edge. Decorate the interior work surface and the exterior underside, both. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 rolling trays/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_rolling_tray
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| top | No | Default: "". | |
| size | No | Default: "". | |
| bottom | No | Default: "plain". | |
| wall_mm | No | Default: 2.4. | |
| brief_id | No | Default: "". | |
| depth_mm | No | Default: 135.0. | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 190.0. | |
| height_mm | No | Default: 18.0. | |
| body_color | No | Default: "white". | |
| photo_mask | No | Default: "". | |
| printer_id | No | Default: "". | |
| include_step | No | Default: false. | |
| cove_radius_mm | No | Default: 0.0. | |
| color_overrides | No | Default: "". | |
| corner_radius_mm | No | Default: 14.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does disclose meaningful behavior: it opens an interactive 3D stage on success (with host-dependent fallback), oversized meshes are decimated automatically, the PNG preview is described as a floor rather than the full experience, and it states the free-tier quota of 3/month versus unlimited Pro. Auth requirements and what the tool actually returns are not stated, which keeps it below 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 purpose is well front-loaded, but the description is bloated and self-repeating: the inline 3D stage is explained twice in near-identical terms ('Opens Kiln's interactive inline 3D stage...' then a full 'INLINE 3D STAGE:' paragraph), and the pricing/upgrade URL is promotional filler that does not help an agent invoke 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?
For a 16-parameter generator with no annotations and no output schema, the description adequately covers side effects (stage, decimation) and the make/iterate workflow, but it never describes what a successful call returns (mesh path, preview URL, stage handle) and leaves most parameters unexplained, so an agent cannot fully predict 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?
Schema description coverage is nominally 100%, but every parameter description is just a default value ('Default: ""', 'Default: 2.4'), so the schema conveys no semantics. The prose partially compensates by mapping the decoration targets ('interior work surface and the exterior underside') to the top/bottom parameters and by explaining the cove concept, but the remaining 14 parameters (size, brief_id, photo_mask, color_overrides, printer_id, etc.) stay opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Generate a rolling tray') and immediately defines the distinguishing geometry — a shallow rectangular tray with a concave cove inner wall that sweeps loose contents into a corner — which separates it from the flat product generators in its family (generate_coaster, generate_jewelry_tray, generate_soap_dish). It stops short of explicitly contrasting itself with those siblings by name, so an agent must still infer which tray generator to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'MAKE DOORS' block gives real workflow routing: it states design_session is not installed here and that compile_scad is the make → preview → iterate loop, which is actionable. However, it offers no guidance on when to choose this generator over the many sibling product generators (coaster, jewelry tray, pen cup), leaving the primary selection decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_soap_dishA
Generate a draining soap dish with optional bottom branding. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 soap dishes/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_soap_dish
INLINE 3D STAGE: on success this tool 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 | Default: "". | |
| depth_mm | No | Default: 65.0. | |
| material | No | Default: "PETG". | |
| width_mm | No | Default: 90.0. | |
| height_mm | No | Default: 15.0. | |
| body_color | No | Default: "white". | |
| decoration | No | Default: "". | |
| photo_mask | No | Default: "rounded_rectangle". | |
| ridge_count | No | Default: 6. | |
| include_step | No | Default: false. | |
| spout_width_mm | No | Default: 25.0. | |
| color_overrides | No | Default: "". | |
| spout_length_mm | No | Default: 18.0. | |
| corner_radius_mm | No | Default: 10.0. |
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 disclose real behavior: a free-tier cap of 3/month, Pro unlimited, automatic mesh decimation for the stage, an inline MCP Apps viewer with a browser fallback link, and that the PNG is a floor not the full output. It omits generation latency, failure modes, and whether the result is persisted as a design.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded well and the quota line is efficient. However, the final 'INLINE 3D STAGE' paragraph restates the stage/viewer point already made in sentence two, and the pricing URL with tracking parameters adds bulk that serves billing rather than tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 14-parameter generator with no annotations and no output schema, the description covers the experience (stage, preview, quota) but not the mechanics: what the call actually returns (design id, mesh, PNG path, 3MF?), whether output persists, and what the geometric parameters do. Adequate to start a call, not adequate to use it 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?
Schema description coverage is nominally 100%, but the schema descriptions are only default values ('Default: 65.0.'), so no real semantics exist anywhere. The description adds only 'optional bottom branding', which loosely maps to decoration/photo_mask; the other 13 parameters (depth, ridge_count, spout dimensions, include_step, material) get no explanation of effect or valid ranges.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource plus differentiating attributes: 'Generate a draining soap dish with optional bottom branding.' That distinguishes it from the many other generate_* siblings (coaster, ashtray, pen cup) without ambiguity, and it names the render surface the result lands 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?
The 'MAKE DOORS' block names design_session and compile_scad as alternatives, but the routing is muddled: it says design_session is not installed here and that 'compile_scad IS the make → preview → iterate loop', which reads as an instruction to use a different tool rather than a condition for choosing this one. It never says when to pick this generator over compile_scad or over the sibling generate_* product tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_technical_drawingC
Generate a dimensioned production drawing from a 3D model.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_technical_drawing
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Default: "". | |
| formats | No | ||
| material | No | Default: "". | |
| standard | No | Default: "house_style". | |
| design_id | No | Default: "". | |
| scad_params | No | ||
| source_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly doesn't: it never says whether the drawing is persisted/returned, what artifact is produced, whether the call is expensive, or what happens on insufficient tier. It does disclose a Business-tier requirement, which is genuinely useful failure context, and the 'team review, approval gates, 3 printers (grow to 50)' fragment is opaque and unexplained rather than informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is efficient and front-loaded, but three of the four lines are marketing copy and an upgrade URL that carry no invocation value. The '3 printers (grow to 50)' line is cryptic filler that dilutes the one useful 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?
For a 7-parameter, nested-object tool with no annotations and no output schema, the description omits the return shape entirely (a file? a drawing record? an ID to pass to list_technical_drawings?) and says nothing about the mutually exclusive-looking input sources. Only the tier prerequisite partially fills the 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?
Seven parameters with zero required, and the schema descriptions are near-vacuous ('Default: "".'), so the description had to compensate and adds nothing about formats, standard, material, design_id, source_path, or the nested scad_params object. An agent gets no idea which combination of design_id vs source_path is needed or what formats accepts.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource (generate a dimensioned production drawing) plus the input (a 3D model), which clearly distinguishes it from siblings like list_technical_drawings or assess_drawing_manufacturability. It never names those siblings or states the boundary explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as list_technical_drawings, assess_drawing_manufacturability, or the drawing-intake tools. The only conditional information is a licensing prerequisite ('Requires Kiln Business'), which is a gate, not usage guidance — the remaining text is a pricing upsell rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_template_variationsB
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.MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | ||
| variation_count | No | Default: 3. | |
| parameter_ranges | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden; it does explain the generation mechanism and that outputs come back as a dict of variations with files, which is genuine context. It never says whether the generated variations are persisted to the library, whether this is expensive/slow, or what happens if parameter_ranges conflict with the template's declared ranges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core two sentences plus docstring params are well front-loaded and efficient. However the trailing 'MAKE DOORS' paragraph about design_session and compile_scad is off-topic for this tool and dilutes an otherwise clean definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, and the description does spell out the return shape ('Dict with list of generated variations and their files'), so the essential calling information is present. It stops short of covering persistence, cost/time, or what to do with the returned variations, which matters for a generation tool whose siblings include template-optimization and compilation loops.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (template_id and parameter_ranges are undocumented, variation_count only says 'Default: 3'), but the description compensates well: it gives an example template_id, the 1-10 range and default for variation_count, and the {param: [min, max]} shape and optionality of parameter_ranges. That is meaningfully more than the schema provides for 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?
States a specific verb and resource ('Generate multiple variations of a parametric template') and explains the mechanism ('sampling parameter values across their valid ranges'), which is real information rather than a restatement of the name. It does not differentiate itself from nearby siblings such as generate_from_template, smart_generate_from_template, or optimize_template_params, so an agent must infer which one fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for exploring design space or offering choices to the user' implies the use case but gives no explicit when-to-use vs. when-not, and names no alternative tool. The appended 'MAKE DOORS' note talks about design_session and compile_scad rather than this tool, so it adds confusion rather than routing guidance.
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 | Default: "realistic". | |
| prompt | Yes | ||
| provider | No | Default: "meshy". | |
| mesh_path | 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 well: it discloses the Meshy API key requirement, the KILN_MESHY_API_KEY environment variable, internet dependency, accepted mesh formats, and that output is a UV-mapped texture. It stops short of describing latency, cost, rate limits, or failure behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and alternatives, then covers prerequisites and arguments. There is minor redundancy, such as repeating the Meshy API key requirement in the opening line and later in the body, but the content is otherwise efficient and 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?
For a four-parameter tool with no output schema and no annotations, the description is nearly complete: it covers prerequisites, alternatives, accepted inputs, parameter meanings, and the downstream use of the texture. It does not explicitly state the return value format or whether generation is synchronous, leaving a small 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 only 50%, but the description compensates: it explains mesh_path as an absolute path to STL/OBJ/GLB/FBX, prompt as a max-600-character text description with an example, style values realistic vs 2.5d-cartoon, and that provider currently only supports meshy. This adds substantial meaning beyond the sparse schema 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 names a specific operation (cloud AI texture generation) and resource (untextured mesh to UV-mapped texture), and explicitly distinguishes it from sibling tools apply_procedural_texture and apply_geometric_texture. An agent can tell exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: use this for cloud AI texture generation, and use apply_procedural_texture or apply_geometric_texture for instant offline textures without an API. It also mentions the downstream path via auto_multicolor_from_texture, covering the main routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_wall_plaqueC
Generate a wall-mountable photo plaque. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Free tier: 3 wall plaques/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=generate_wall_plaque
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| size | No | Default: "". | |
| text | No | Default: "". | |
| photo | Yes | ||
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| width_mm | No | Default: 150.0. | |
| border_mm | No | Default: 5.0. | |
| height_mm | No | Default: 100.0. | |
| body_color | No | Default: "white". | |
| mount_holes | No | Default: 2. | |
| include_step | No | Default: false. | |
| thickness_mm | No | Default: 8.0. | |
| color_overrides | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose genuinely useful behavior: the 3/month free quota, the auto-decimation of oversized meshes for the stage, and that the PNG preview is 'the floor, not the whole experience'. It omits whether the call creates a persisted design, whether it requires sign-in, and what the photo parameter accepts (path, URL, base64).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The inline 3D stage is explained twice at length (paragraph 1 and the INLINE 3D STAGE block), the upgrade URL is pure promotion, and the 'MAKE DOORS' paragraph is a muddled digression about a tool that is not installed here. The actually important scoping sentence is buried in a wall of marketing 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 13-parameter generation tool with no annotations and no output schema, the description should say what comes back (model file, design id, preview URL) and how to iterate. Instead it spends its budget on stage rendering and upgrade links, and the only iteration hint is a redirect to compile_scad, which is confusing rather than clarifying.
Complex tools with many parameters or behaviors need more documentation. Simple 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 92%, so the schema already documents all 13 parameters and the baseline of 3 applies. The description adds nothing about individual parameters — no clarification of what `photo` expects, what `size` versus `width_mm`/`height_mm` means, or what `brief_id`/`color_overrides` do.
Input schemas describe structure but not intent. Descriptions should explain non-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 is a clean verb+resource: 'Generate a wall-mountable photo plaque.' That is specific enough to act on. However, it never distinguishes itself from the many sibling generators (generate_nameplate, generate_coaster, generate_fridge_magnet, generate_decorated_product), so an agent cannot tell from the description alone which plaque-adjacent generator to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance. The 'MAKE DOORS' paragraph discusses design_session and compile_scad, but it is framed as an install-state note rather than a selection rule, and it never says when to prefer this tool over the other generate_* product tools. The free-tier line tells you the cost, not the trigger condition.
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_statusB
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 | Default: "meshy". |
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. 'Check' implies a read-only operation, but the description never states whether it blocks/polls, what status values are returned, whether the job can expire, or what happens for unknown job IDs. For a status tool with no output schema, that is a significant omission.
Agents need to know what a tool does to the 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: the core purpose is the first sentence, with parameter clarifications after. The Args-style block is slightly formal but nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 status tool with no annotations and no output schema, the definition covers purpose and parameter origins but leaves the return contract and polling/terminal-state behavior undocumented. It is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description compensates well: it explains that job_id comes from generate_model and enumerates the allowed provider values ('meshy' or 'openscad'), which the schema only hints at via a default. Minor gap: no format expectations for job_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check the status of a model generation job'), which is enough to distinguish it from generation tools like generate_model. However, it does not differentiate from near-siblings such as await_generation or job_status, leaving some ambiguity about which status mechanism to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that job_id is 'returned by generate_model' implies the tool is used after a generation request, which is helpful context. But there is no explicit when-to-use vs await_generation, no polling guidance, and no mention of what to do when the job is incomplete or failed.
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`` is the printer's own tray id (``unit * 4 + slot``
on a chained unit, the unit id itself on an AMS HT); ``254``
is the external spool and ``255`` no tray. An A1 / AMS Lite
can report ``255`` with trays loaded; then Kiln falls back to
the selected/target tray fields or returns the loaded
candidates instead of claiming the 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?
No annotations are provided, so the description carries the full burden, and it does a good job: it discloses the returned fields (type, colour, remaining percentage, temperature range), the 'unknown' fallback for unsupported hardware, and tricky edge cases such as tray_now 254/255 and A1/AMS Lite reporting 255 with trays loaded. It stops short of stating permission/auth requirements or confirming read-only safety, which is the remaining gap given zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the sibling alternative before the detail. The tray_now discussion is longer than strictly necessary for invocation and leans toward return-value interpretation, but every paragraph still conveys usable context and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description correctly compensates by enumerating the returned fields and fallback semantics, so an agent knows what it will get back. The only omission is any statement of permission/safety characteristics for the read.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the single parameter, and it does: printer_name is documented as the named printer to query, with the default behavior ('Omit to use the default printer') spelled out. Nothing more is needed for a one-param read tool, though no naming/format conventions are 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?
States a specific verb+resource with scope: 'Get the filament physically active in the AMS hardware right now (Bambu Lab).' It explicitly distinguishes itself from the sibling get_material, so an agent can route between the hardware-tracked and software-tracked material without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use-alternative: use get_material for the software-tracked material set via set_material. It also states the condition under which the tool is inapplicable (non-Bambu printers or printers without AMS report 'unknown'), which is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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 must carry the behavioral burden. It discloses useful traits: expired entries are filtered out, memory entries include a version field, and retrieval can be narrowed by printer or scope. It does not mention authentication, rate limits, or the full returned entry shape, so transparency 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 front-loaded with purpose and timing guidance, then gives concise argument details. Every sentence contributes to selecting or invoking the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should give enough return-value context. It explains that expired entries are filtered and that entries include a version field, but it does not fully describe the entry structure or any size limits. For a simple retrieval tool, this 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 explain the two parameters. It does: printer_name retrieves printer-specific memory when provided, and scope filters by values such as global or fleet. This adds meaningful semantics 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 states a specific verb and resource: retrieve stored agent memory for context. It also clarifies the domain of memory (printers, materials, past print outcomes). It does not explicitly contrast with siblings such as save_agent_note or clean_agent_memory, so it is clear but not fully 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?
It gives explicit timing guidance: 'Call this at the start of a session.' The recall use case is clear. It does not state when not to use it or name sibling alternatives for saving or cleaning memory.
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_auto_tuned_settingsB
Get auto-tuned print settings from historical success/failure analysis.
Kiln Pro would read this printer's recorded outcomes and return tuned settings, a success-likelihood read, and the risks to fix first. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_auto_tuned_settings
| 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 the behavioral burden. It discloses that the tool reads recorded outcomes and returns tuned settings, a success-likelihood read, and risks to fix first, plus the Kiln Pro requirement. It does not explicitly confirm read-only safety, rate limits, or behavior when historical data is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, followed by concise return-value and prerequisite context. The upgrade URL is somewhat promotional but still directly tied to the stated Kiln Pro requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, return components, and the Kiln Pro prerequisite. However, with no annotations, no output schema, and 0% schema description coverage, it is incomplete: it omits material semantics, printer_id format, and guidance versus sibling settings tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate for the two required parameters. It vaguely references 'this printer' but never explains printer_id format or the required material parameter at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get auto-tuned print settings from historical success/failure analysis. The purpose is clear, though it does not explicitly distinguish itself from nearby settings-related siblings such as get_optimal_settings or recommend_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?
Usage is implied by the description: call it to get tuned settings for a printer based on recorded outcomes. It also states the Kiln Pro prerequisite, but it gives no explicit when-to-use guidance versus alternatives or when-not-to-use conditions.
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_calibration_freshnessC
Report freshness for every calibration combination of a printer.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_calibration_freshness
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| printer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, and it discloses little: nothing about whether this is a read-only lookup, what shape the report takes, how "freshness" is computed, or whether there are rate/cost implications. The second sentence describes the value of Kiln Pro in general rather than the behavior of 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 purpose is front-loaded in sentence one and the Kiln Pro requirement is legitimately decision-relevant. But the middle sentence is product marketing and the trailing upgrade URL is pure upsell, neither of which helps an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and half the parameters undocumented, the description would need to explain the return shape and the material parameter to be callable with confidence. It instead spends that space on tier promotion, leaving meaningful gaps for a two-parameter, gated 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 only 50%: printer_id has no description and material is documented merely as 'Default: ""'. The description does not explain what material does or how it interacts with the phrase "every calibration combination," which could even suggest no filtering at all — so it fails to compensate 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 first sentence gives a specific verb and resource: "Report freshness for every calibration combination of a printer." The scope (all combinations for one printer) is clear, but the tool is not differentiated from nearby siblings such as assess_calibration_status, classify_calibration_confidence, or get_calibration_health_recommendations, and "freshness" is never defined as age, staleness, or measurement recency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires Kiln Pro" is a real gating prerequisite an agent needs before calling, which is more than nothing. However, there is no guidance on when to prefer this over assess_calibration_status or the other calibration siblings, and no statement of what the agent should do if the user lacks Kiln Pro beyond a pricing URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_calibration_health_recommendationsC
Recommend tunable noise floor + heuristic confidence levels.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_calibration_health_recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| min_samples_per_category | No | Default: 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful constraint (requires Kiln Pro), but omits whether the call is read-only, what heuristics are used, how samples affect output, or what happens when insufficient 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 diluted by an upsell paragraph and a tracking URL ('?src=agent&tool=...') that consume more space than the functional content. The actual purpose sentence is front-loaded but thin, and the rest doesn't earn 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 tool with no annotations and no output schema, the description should clarify return shape and behavior. Instead it leaves unclear what recommendations look like, whether they are applied or advisory, and how the sample threshold changes 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?
There is a single optional parameter with 100% schema coverage, so the baseline is 3. The description does not mention min_samples_per_category at all, so it adds no 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 phrase 'Recommend tunable noise floor + heuristic confidence levels' names a verb and somewhat specific subject, but it's unclear whether this returns calibration parameter suggestions, confidence-score classifications, or health advice, especially against sibling tools like classify_calibration_confidence and assess_calibration_status. Half the text is a Kiln Pro marketing pitch rather than functional clarification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus assess_calibration_status, classify_calibration_confidence, apply_calibration_recommendations, or recommend_running_clearance. The only condition given is a paywall gate ('Requires Kiln Pro'), which is usage-relevant but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comment_threadC
Retrieve a whole thread (root + replies) ordered oldest-first.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_comment_thread
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and mostly fails: it says nothing about permissions, whether deleted or resolved replies are omitted, ordering stability, or response size/pagination. The ordering note ('oldest-first') is the one genuine behavioral disclosure, which keeps this above a 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but it is followed by three lines of unrelated Kiln Pro subscription marketing and a pricing URL that have nothing to do with comment threads. That is pure noise occupying most of the 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?
No output schema and no annotations, so the description should compensate — but it leaves the parameter undocumented, says nothing about the returned structure beyond 'root + replies', and instead spends its length on an upsell link. An agent calling this correctly is doing so on guesswork.
Complex tools with many parameters or behaviors need more documentation. Simple 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 single required parameter 'thread_id' gets no description at all — no format, no example, no note on where an agent obtains a thread id. The description does not compensate for the missing schema text.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource ('Retrieve a whole thread (root + replies)') and even specifies ordering ('oldest-first'), so the operation is unambiguous. It does not, however, distinguish itself from adjacent tools like list_mesh_comments, reply_to_comment, or resolve_comment_thread.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus list_mesh_comments or reply_to_comment, and no stated preconditions (auth, thread visibility, whether resolved threads are included). Usage is only inferable from the verb 'Retrieve'.
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 | Default: "". |
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 meets it: it states the tool never fails on network or plan, that a missing plan only degrades the `community` field while `insight` is unaffected, and it enumerates the returned facets (success rate, printers, materials, settings, failure modes). This is exactly the degradation and partial-result behavior an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the two-layer model are front-loaded, and each paragraph adds distinct information rather than restating the name. It is somewhat long for a two-parameter read, and the RST markup plus the docstring-style Args block duplicate structure the schema already provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 read tool with no output schema and no annotations, the description covers everything an agent needs: what is returned, what degrades under which condition, that it degrades rather than errors, and how to get a precise result. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% (the required parameter has no schema description, and v2's is just a default value), so the description must compensate — and it does. It identifies `geometric_signature` as coming from `fingerprint_model` and, critically, explains the concrete consequence of omitting `geometric_signature_v2`: prints of a different design sharing the older signature can be counted into the result.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ("Get aggregated print data for a model geometry") and the two-layer breakdown (local `insight` vs `community`) makes the scope concrete. It never names the nearby siblings it could be confused with, such as `community_stats`, `get_model_print_history`, or `get_printer_insights`, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies clear use context — look up a known geometry's history "so you can start from what already worked" — and discloses the access conditions (no account required for local, Kiln Pro for community). It stops short of explicit when-not-to-use guidance or naming an alternative tool for adjacent questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_community_wear_baselineC
Pro+ — cross-tenant community wear baseline for a cohort.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_community_wear_baseline
| Name | Required | Description | Default |
|---|---|---|---|
| printer_model | Yes | ||
| nozzle_material | Yes | ||
| filament_material | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that the data is cross-tenant and requires Kiln Pro, but it does not state whether the operation is read-only, how cohort aggregation works, whether community data has privacy constraints, or what the response contains; the plan feature list is irrelevant to invoking this 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 first sentence is front-loaded, but the remaining sentences are subscription marketing ('mid-print edits, and unlimited textures and decorations') and an upgrade URL. That is wasted space in a tool definition and pushes the actual invocation-relevant information out.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a three-required-parameter query tool with no annotations and no output schema, so the description should explain inputs and result meaning. Instead it only mentions Pro entitlement and cross-tenant scope, leaving the parameter semantics and output expectations largely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 does not explain filament_material, nozzle_material, or printer_model. Saying the baseline is 'for a cohort' does not clarify how those three required inputs define the cohort or what values are 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 phrase 'cross-tenant community wear baseline for a cohort' identifies the resource and data scope, but it is a noun phrase rather than a clear action statement. It does not distinguish this tool from nearby siblings such as nozzle_wear_status, community_stats, or get_community_insight, and the following marketing copy dilutes 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 states an entitlement prerequisite ('Requires Kiln Pro'), but it gives no guidance on when to use this tool versus alternatives. There are no conditions, exclusions, or comparisons to wear-related or community-related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decoration_presetB
Fetch ONE decoration preset — the full record for a single preset or an exact version.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_decoration_preset
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | No | ||
| preset_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description does carry the burden, but it does disclose an important non-schema detail: the operation requires Kiln Pro and includes an upgrade link. 'Fetch' implies a read operation, which is low risk, but the description does not explain invalid-ID behavior, whether one of the two IDs must be supplied, or what 'full record' contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and useful, and 'Requires Kiln Pro' earns its place. But the sentence about Kiln Pro saving this as a reusable feature or decoration preset is promotional and irrelevant to invoking this tool, and the upgrade URL adds clutter rather than invocation 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?
There is no output schema and no annotations, and both parameters are undocumented at schema level. The description should therefore clarify required-ID behavior and return expectations, but it only says 'full record,' leaving the agent without enough information to reliably select the correct ID combination or understand 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%, so the description must compensate for preset_id and preset_version_id. It only hints at the distinction through 'single preset or an exact version,' but does not say which parameter is required, whether both may be supplied, or how the two selection modes interact.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: 'Fetch ONE decoration preset — the full record for a single preset or an exact version.' It scopes the operation to a single record, which helps distinguish it from list operations in spirit, but it never names the sibling alternative such as list_decoration_presets, so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Fetch ONE' and 'full record,' suggesting this is for retrieving a single preset rather than listing presets or versions. However, there is no explicit when-to-use guidance, no stated alternative, and no conditions distinguishing preset_id lookup from preset_version_id lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_designB
Fetch a single design's summary + branch list for the workshop detail view.
| 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 carries the full burden. It does disclose that the call returns a summary plus branch list and "Fetch" implies read-only behavior, but it says nothing about permissions, missing-design errors, 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?
A single front-loaded sentence with no wasted language. The trailing "workshop detail view" is mildly vague but does not undermine the compact structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description helpfully names what is returned (summary + branch list). It is still incomplete on how design_id should be sourced and what happens when the design is absent, which matters in a crowded design-tool namespace.
Complex tools with many parameters or behaviors need more documentation. 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 required parameter has 0% schema description coverage, so the description should clarify it. Instead, "single design" only restates the schema, leaving the ID's source or format unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ("Fetch a single design's summary + branch list") and even enumerates the returned content, so the purpose is clear. It does not, however, distinguish this tool from sibling reads like get_design_version, get_design_source, or inspect_design.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 "for the workshop detail view" implies a usage context, but the description never states when to use this instead of alternatives such as get_design_version or inspect_design. The agent must infer the selection rule from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_ancestryC
Walk the parent chain from a recipe back to the root.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_design_ancestry
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | Default: 50. | |
| recipe_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose the real constraint 'Requires Kiln Pro', which is useful, but it omits whether the walk is read-only, what happens at max_depth, output shape, or error behavior, and the 'would preserve this version so you can branch, restyle' sentence actively muddles what the tool does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and clear, but two of the four lines are upsell copy and a pricing URL that add no invocation value and dilute the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and half the parameters undescribed, an agent cannot predict return shape, depth semantics, or failure modes. The definition is not complete enough to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: max_depth notes a default of 50 but recipe_path is undocumented. The description never explains the recipe path format, what a 'parent' edge represents, or what depth truncation means, so it fails to compensate 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 first sentence states a specific verb+resource+scope: walk the parent chain from a recipe back to the root. However, it offers no differentiation from closely related siblings such as show_design_lineage, get_provenance_history, or show_branch_history, so the agent must guess which ancestry-type tool to 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?
There is no statement of when to use this versus alternatives, nor preconditions beyond a paywall mention. The remaining prose ('branch, restyle, compare outcomes') describes unrelated workflows rather than when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_pull_requestB
Fetch one pull request's full detail by id.
Kiln Pro would open the change as a reviewable pull request — the proposed diff, comments, and a record of what merged and why. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_design_pull_request
| Name | Required | Description | Default |
|---|---|---|---|
| pr_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 usefully discloses that Kiln Pro is required and that the PR includes diff, comments, and merge history, but it does not mention permission scope, error behavior, or response shape beyond content categories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the opening sentence, but the Kiln Pro explanation and upgrade URL add promotional weight that dilutes a simple fetch 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 single-parameter read tool with no output schema, the description gives adequate context: what a PR contains and that Kiln Pro is required. It does not fully document the id format or failure cases, but the essential invocation 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?
Schema coverage is 0% for the single pr_id parameter. The description only says 'by id' and adds no format, source, or lookup guidance beyond the schema's parameter 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 first sentence states a specific verb and resource: fetch one pull request's full detail by id. It clearly distinguishes this single-item fetch from the sibling list_design_pull_requests, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Fetch one pull request's full detail by id,' but there is no explicit guidance on when to choose this over list_design_pull_requests or review_design_pull_request. The Kiln Pro requirement is stated, which helps gate eligibility.
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_infoARead-only
Look up one design template by id — parametric part or pattern.
Resolves an id from EITHER library and says which it came
from, so a caller never has to know in advance:
* a PARAMETRIC PART (``generatable: true``) comes back with
its full parameter list — names, defaults, and units — which
is what you need to fill in the user's own dimensions and
call ``generate_from_template``.
* a DESIGN PATTERN (``generatable: false``) comes back with
its use cases, material compatibility, and print
orientation. Patterns are guidance for OpenSCAD you write
yourself; ``generate_from_template`` does not accept them.
Args:
template: Template identifier, from either library —
e.g. "shelf_bracket" (part) or "snap_fit_cantilever"
(pattern). Use ``find_design_templates`` to search.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read (readOnlyHint true, destructiveHint false, closed-world), and the description adds substantive behavior: the tool resolves ids from either library and reports provenance, and return content differs by generatable flag. It does not mention error behavior for unknown ids, so it falls 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 first sentence is front-loaded and the two bullets map cleanly to the two template kinds. It is somewhat verbose and heavily indented, but nearly every clause adds decision-relevant 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?
There is no output schema, and the description compensates by explaining what each result type returns: full parameter names, defaults and units for parts, versus use cases, material compatibility and print orientation for patterns. That is sufficient for an agent to call and interpret 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%, so the description must carry the parameter meaning. It does: the 'template' argument is described as an identifier from either library, with concrete examples for both a part ('shelf_bracket') and a pattern ('snap_fit_cantilever'), plus a pointer to the search 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?
States a specific verb and resource ('Look up one design template by id') and immediately scopes it to two template kinds, parametric part or pattern. This clearly separates it from sibling search/list tools like find_design_templates and list_design_templates_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?
Tells the caller to use find_design_templates for searching and positions this tool as the id-based detail fetch across either library. It also explicitly notes that patterns cannot be passed to generate_from_template, which is a crucial routing constraint.
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_face_emboss_depthC
Return the recommended maximum emboss/deboss depth for a face.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_face_emboss_depth
| Name | Required | Description | Default |
|---|---|---|---|
| face_name | Yes | ||
| product_type | 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 behavioral burden. It hints at an entitlement requirement but does not clarify error behavior, whether the recommendation depends on printer calibration, output format, 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 useful first sentence is front-loaded, but the remaining text is promotional upsell about Free versus Kiln Pro and an upgrade URL. That material does not help an agent invoke the tool correctly and bloats the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no annotations, and 0% schema coverage, the description should at least explain both parameters and whether an entitlement is required. It states the high-level return value but leaves key invocation details missing and the Pro requirement ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple 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 both required parameters are undocumented in the schema. The description implies 'face' but does not explain face_name or product_type, nor does it indicate valid values or how product_type affects the result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: return the recommended maximum emboss/deboss depth for a face. This is clear and actionable, though it does not explicitly distinguish itself from related sibling tools such as describe_face or get_product_faces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. The only usage-related signal is the entitlement note 'Requires Kiln Pro', which is ambiguous because the preceding Free/Pro marketing sentence makes it unclear whether this specific tool is gated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_featureC
Retrieve a specific feature version by its id.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_feature
| Name | Required | Description | Default |
|---|---|---|---|
| feature_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does disclose a real prerequisite (Kiln Pro entitlement) with a remediation link, which is genuinely useful behavioral context. However, it says nothing about read-only semantics, error behavior for unknown ids, or what a 'feature version' payload contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool-relevant content is front-loaded in one sentence, but two of the four lines are product marketing and an upgrade URL that do not help an agent select or invoke the tool. Meaningful content is buried under promotional 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?
With no annotations and no output schema, the description should explain what a retrieved feature version represents and returns; instead it pivots to a sales pitch about reusable presets. An agent knows the input id and the entitlement requirement but little else.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter feature_version_id, and the description only echoes it as 'its id' with no format, provenance, or where-to-find-it information. It does not compensate for the documentation gap, though the single-parameter shape limits the damage.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb (Retrieve) and resource (feature version), and the phrase 'by its id' distinguishes it from list-style siblings such as list_feature_versions. It stops short of naming the alternative tools (get_design, get_decoration_preset, get_feature_release) an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus list_feature_versions, list_features, or save_feature/rollback_feature. The only conditional information is an entitlement gate ('Requires Kiln Pro' with an upgrade URL), which is a prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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_cachedB
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 carries the full burden, and it does disclose the TTL cache and that a fresh fetch may hit the provider API — useful context. It omits what the cache key is, how long the TTL is, and whether a fresh provider call has cost/latency implications, which matters for an agent deciding to call 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 behavioral statement is front-loaded in the first two sentences and the Args block is compact. Slight redundancy in restating obvious parameter meanings, but 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?
There is no output schema and no annotations, so the description should say what a 'quote' actually contains (price, lead time, currency, provider name) and whether provider/material default when omitted. For a tool whose whole value is returning a structured quote, that gap is significant.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the Args block only restates the parameter names ('Path to the design file', 'Fulfillment provider name', 'Material specification'). It gives no format, no valid provider/material values, and no indication that provider and material are optional or how they affect cache-key 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 names a specific verb and resource ('Get a cached fulfillment provider quote') and adds a meaningful qualifier about cache-miss behavior ('fetch fresh if expired'). It does not, however, contrast itself with the sibling 'fulfillment_quote', so an agent must infer that the unqualified sibling is the non-cached variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The TTL-caching sentence implies the tool is the preferred low-cost path for repeat quote lookups, but there is no explicit 'use this instead of fulfillment_quote when…' guidance or any stated prerequisites. Usage is inferable rather than directed.
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 | Default: 50. | |
| 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 carries the full behavioral burden. It usefully discloses result ordering ('newest to oldest'), the included fields, and a limit cap of 500, but it does not state auth or access 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 front-loaded with the purpose, then cleanly separates arguments and return behavior. Every sentence earns its place by adding parameter constraints or return-order 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?
For a simple two-parameter read tool with an output schema, this is nearly complete: it defines both parameters and describes return ordering. The main remaining gap is routing guidance to sibling tools, which matters given the large interception tool family.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%; session_id has no schema description and limit only says 'Default: 50.' The description compensates by defining session_id as the target session and adding the 'max 500' constraint 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 states a specific verb and resource: 'Get recent interception results for a session.' The scope is clear, but it does not distinguish this tool from interception siblings such as get_interception_status 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?
There is no explicit when-to-use guidance, no when-not-to-use, and no alternatives named. It implies retrieving history for a session, but an agent still has to infer how this differs from other interception tools.
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 | Default: "PLA". | |
| material_b | No | Default: "PLA". | |
| printer_id | 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 the kiln-pro dependency, the exact calibration-tier effects (HIGH halves, MEDIUM shaves ~10%, LOW/UNKNOWN unchanged), and the attached calibration_used block. It omits auth requirements and return units, but the conditional behavior is unusually well documented for a read 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 core recommendation is front-loaded in the first sentence, followed by a structured Args section. It is somewhat verbose, repeating 'For joints whose parts MOVE' and re-explaining the round-joint assumption, but every section still carries usable 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 output schema and no annotations, the definition covers the conditional response shape (calibration_used block, narrowing behavior) and all parameters. It could state output units and any permission requirements, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, and the description more than compensates. It enumerates joint_type examples, material defaults, the non-obvious semantics of omitting printer_id for moving vs static joints, and the full meaning of each mating value (pin_in_bore, slot, planar_face, gear_flank) plus the safe-default rationale. This is far richer than 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?
States a specific verb and resource: returns recommended clearance settings given a joint type and material pairing. An agent can grasp the domain instantly, and it is clearly distinct from generic settings tools. It does not, however, explicitly differentiate itself from close siblings such as compute_iso_fit or recommend_running_clearance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers substantial conditional guidance: pass printer_id only to query a machine other than the active one, and supply mating only for joints whose parts move. This tells the agent when parameter choices are needed. It stops short of naming alternative tools for the same need, so no explicit when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maintenance_predictionC
Predict when maintenance is likely needed for a printer.
Kiln Pro would track accumulated nozzle wear on this printer, attribute quality drift to it, and predict when maintenance is due. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_maintenance_prediction
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | 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, and it does disclose one important behavioral fact: the tool requires Kiln Pro. However, it never says what happens when the caller lacks Pro (error, empty result, upgrade prompt) nor whether the prediction relies on telemetry that must already be collected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but the middle sentence is marketing copy ('Kiln Pro would track accumulated nozzle wear, attribute quality drift to it') and the closing pricing URL with UTM parameters is promotional rather than instructive for an 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?
With no output schema, no annotations, and an undocumented parameter, the description must explain the shape of the prediction (time estimate? confidence? remaining hours?) and does not. An agent cannot tell what it will receive or whether the call is usable at its tier.
Complex tools with many parameters or behaviors need more documentation. 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_id has 0% schema description coverage and the description never mentions it, so the agent must guess the expected identifier format (local printer name vs. registered printer ID) and whether the printer must belong to the caller's org.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a clear verb and resource ('predict when maintenance is likely needed for a printer'), but the body immediately undercuts it: 'Kiln Pro would track... and predict' reads as a future/hypothetical capability rather than a description of what this call returns. Sibling tools maintenance_due, nozzle_wear_status and nozzle_drift_attribution cover adjacent ground and are never distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus maintenance_due or nozzle_wear_status, both of which appear to answer overlapping maintenance questions. The only guidance given is a subscription prerequisite, not a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_manual_revisionC
Fetch a single manual revision by id.
| Name | Required | Description | Default |
|---|---|---|---|
| manual_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether the call is read-only, what happens when the id is unknown or the revision is retired, or whether the response includes content or just metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action and key front-loaded and no wasted words. It is efficient, though the terseness reflects missing detail rather than disciplined density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 must at least sketch the return shape and error behavior for a fetch-by-id tool; it does neither. An agent can call it but cannot predict or 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?
One parameter with 0% schema description coverage; the schema only supplies the title 'Manual Id'. The phrase 'by id' loosely maps to manual_id but adds no format, sourcing, or constraint detail, so it does little to compensate 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?
States a specific verb and resource ('Fetch a single manual revision') and the lookup key ('by id'), so the agent knows exactly what it returns. It does not, however, distinguish itself from manual-adjacent siblings such as list_manual_history or retire_manual_revision, so sibling differentiation is left to the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_manual_history (which presumably lists the revisions) or any other manual tool. 'By id' implies the caller must already hold an id, but the description never states that prerequisite or any alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_materialARead-only
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?
Annotations already carry readOnlyHint=true, destructiveHint=false, openWorldHint=false, so safety is covered. The description adds genuinely useful provenance context — the value is only what a user or agent previously told Kiln via set_material, not a verified hardware truth — which changes how an agent should trust the result. It does not say what is returned when nothing has been set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core distinction, then the source caveat, then the alternative, then the single arg note. Four short lines 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 one-optional-param read with full annotations and no output schema, this covers nearly everything needed to select and invoke it correctly. The only gap is what happens on the empty/no-material-assigned 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?
Schema coverage is 0%, so the description must compensate, and it does: 'Target printer. Omit for the default printer' explains the omission/default behavior the bare schema title does not. It stops short of explaining how printer_name is matched (exact name vs alias).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get material loaded in a printer') plus the data source ('from Kiln's software tracker'), and explicitly distinguishes itself from the hardware-reading sibling get_active_material. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use routing: this tool for tracker-reported material, get_active_material for live AMS hardware reading (Bambu Lab). It also references set_material as the counterpart that populates the data, which clarifies the intended workflow.
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 | Default: 30. |
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 add real behavior: results are aggregated per material type, and filament length is converted to grams via standard material densities — an agent can anticipate the unit and grouping of the output. It omits permission requirements, what happens with sparse/zero data in the window, and return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and aggregation semantics in two sentences, then a short Args block. The Args line largely duplicates the schema, so it is slightly wasteful 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?
For a single-optional-parameter read tool with no output schema and no annotations, the description covers source (completed prints), grouping (per material type), and unit conversion. The main residual gap is the shape of the returned aggregate, which an agent could still use a hint about.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'days' parameter, and the description only restates the default of 30 that the schema already documents. No added semantics such as whether the window is calendar days or rolling hours, or how boundaries are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'Get material consumption history' — and narrows the scope to 'completed prints', which separates it from live/forecast siblings. It does not name a sibling alternative (e.g. forecast_material_consumption or get_fleet_material_summary), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'From completed prints' implies the boundary — in-progress or failed prints are excluded — and the default 30-day window is stated. However, there is no explicit guidance on when to choose this over forecast_material_consumption, get_fleet_material_summary, or usage_summary, leaving the selection to inference.
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_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_recommendationARead-only
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?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the return content (hotend/bed temps, fan speed, and printer-model-tuned tips), which the agent would otherwise not know. It stops short of richer behavioral context like caching or fallback behavior, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the sequencing rule, then alternatives, then arguments — a clean and appropriately short structure. The 'Args:' restatement is conventional and earns its place given 0% schema coverage, though it is slightly boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 two required parameters, no output schema, and safety fully covered by annotations, the description supplies everything an agent needs: what it returns, when to call it, which siblings to use instead, and what each argument means. Nothing material is missing for correct 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 carries the full burden, and its Args block documents both parameters: printer_id as a 'Printer model identifier' and material with concrete examples (PLA, PETG, ABS, TPU) that the schema's bare string type and lack of enums do not supply. The printer_id gloss is thin (no format or how to obtain it), keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (printer-specific slicer settings for a chosen material) and explicitly distinguishes itself from the material-selection siblings recommend_material and recommend_design_material. An agent can tell it apart from recommend_settings or get_material_properties without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit sequencing rule ('Use AFTER selecting a material') and routes the agent elsewhere when the material is not yet chosen ('For help choosing which material to use, see recommend_material or recommend_design_material'). This is the when-to-use/when-not pattern done fully.
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). Leave unset for the only printer Kiln knows of,
else 0.4; the reply's ``nozzle`` says which.
| 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, but the description discloses the main return content: layer height limits, bridge/overhang parameters, fan speeds, and other material-tuned values. It also explains the optional nozzle fallback behavior. It does not cover error behavior, but for a read-only getter the behavioral picture is largely 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 front-loaded with the core purpose, then gives return categories and concise parameter notes. Every sentence adds useful information without 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?
The description covers purpose, return categories, and both parameters despite there being no output schema and no annotations. It is nearly complete for this complexity, though it could say a bit more about error cases or exact response 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%, so the description carries the full burden and does so well. It enumerates valid material names and explains nozzle_diameter_mm semantics, including what happens when it is unset and how the response reports the chosen nozzle.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: get material-specific slicing constraints for adaptive slicing. It clearly says what data is returned and ties the tool to adaptive slicing, though it does not explicitly contrast itself with nearby tools like get_slicer_profile or get_material_design_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?
Usage is implied by the phrase 'used by the adaptive slicer' and the adaptive slicing context. However, there is no explicit guidance on when to call this instead of related tools such as get_slicer_profile, get_material_design_profile, or generate_adaptive_slicing_plan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_success_ratesC
Get per-material success/fail breakdown for a printer.
| 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 behavioral burden and delivers little: 'Get' implies a read, but it never states the aggregation window (all-time vs recent), the data source, or whether the caller needs ownership/scope of the printer. For a statistics tool with zero annotation coverage, that 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?
One efficient sentence with the resource and scope front-loaded and no filler. Its brevity is appropriate, though the space saved is not used to add the missing scoping 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 statistics tool with no annotations, no output schema, and an undocumented parameter, the description leaves the agent guessing what 'success/fail' means (job outcome? first-layer? cancellation?) and over what population or time range it is computed. It is under-specified for correct 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 single printer_id parameter is completely undocumented in the schema. The description only implies it is the printer whose rates are computed, adding no format, source, or scoping detail to compensate 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?
States a specific verb and resource: a per-material success/fail breakdown scoped to one printer, which is clearly distinguishable from siblings like get_material_consumption_history or print_history. It doesn't explicitly name a sibling it is not, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as failure_history, print_history, or get_material_consumption_history, and no stated prerequisites (e.g., does the printer need recorded print outcomes?). Usage is only implied by the phrase 'for a printer'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_material_warningsC
Get warnings about printing a specific material on a printer.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_material_warnings
| 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 but only discloses that Kiln Pro is required. It does not describe the tool's read-only nature, return format, permissions needed, or what kinds of warnings are produced. The tier requirement is a small behavioral disclosure, but most 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 useful purpose statement is front-loaded, but the second paragraph is purely promotional marketing (Free vs Pro features, upgrade URL) that does not help an agent select or invoke the tool. This irrelevant content dilutes the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 simple two-parameter read tool with no annotations and no output schema, the description is severely lacking: it does not explain what warnings are returned, how to interpret them, or any other context needed for correct invocation. The plan requirement alone is insufficient.
Complex tools with many parameters or behaviors need more documentation. 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 description coverage is 0% and the description does not mention the two parameters (material, printer_id) at all. It adds no meaning beyond the parameter names, leaving the agent to infer expected formats, valid values, or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-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 warnings about printing a specific material on a printer. It uses a specific verb (get) and resource (warnings), and the scope is distinct enough from siblings like get_material_properties or check_printer_material_support. However, it does not explicitly name or differentiate from any 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 no guidance on when to use this tool versus alternatives, nor does it specify prerequisites beyond the plan requirement. The second paragraph is a marketing upsell that adds no usage 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 | Default: "". | |
| file_hash | No | Default: "". | |
| model_path | No | Default: "". | |
| geometric_signature | No | Default: "". | |
| geometric_signature_v2 | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load well: it explains that a file hash identifies bytes (so CAD re-exports change it), warns that hash-only lookups produce misleading history, and documents that the response includes an identified_by field revealing which path was used. It does not mention permissions, cost, or rate limits, but for a read-only history query that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the key routing rule before the argument list. It is somewhat long and the all-caps emphasis plus a full Args block partly duplicates the schema, but nearly every sentence carries non-obvious 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 exists, yet the description explains what the response contains (complete print history, success-rate metrics, identified_by precision flag), which is exactly the missing piece. Combined with five optional parameters all explained, an agent has everything needed 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 schema's own parameter descriptions are near-empty (just "Default: ..."), so the Args section does the real work: it marks model_path as the best input, ranks geometric_signature as usable when already obtained from fingerprint_model, and clarifies that empty material means all materials. This is meaningful 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?
States a specific verb and resource ('Get all print attempts for a model') and immediately frames the output scope: history of outcomes, settings, and quality grades. This is clearly distinguishable from sibling tools like print_history or get_material_success_rates, which cover different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing guidance: pass model_path whenever the file is available, and pass material to scope success-rate metrics to a filament type. It even explains the consequence of picking a weaker alternative (hash-only lookup reports a real history as never printed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_nozzle_wear_patternsB
Pro+ — your personal nozzle wear-rate matrix vs the population.
Kiln Pro would track accumulated nozzle wear on this printer, attribute quality drift to it, and predict when maintenance is due. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_my_nozzle_wear_patterns
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 200. | |
| printer_id | No | Default: "". |
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 disclose the entitlement gate and the upgrade path, which is genuinely useful behavioral information, but it never states what the tool returns when the user is not on Pro (error, empty result, or upsell payload) or what the output matrix looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line summary is front-loaded and clear, but the middle sentence is hypothetical marketing prose ('would track... attribute quality drift... predict maintenance') that describes a roadmap rather than the tool, and the bare URL line is bulky. The essential facts (what it is, Pro required) could be stated in half the 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?
For a two-optional-parameter read tool with no output schema, the description covers the key gating fact but omits the failure mode for non-Pro users and the shape of the returned comparison data. Given the sibling overlap, an agent still cannot confidently choose this over nozzle_wear_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 description coverage is 100% for the two parameters (limit, printer_id), so the schema does the work and the baseline of 3 applies. The description adds no meaning about what limit counts (rows? printers?) or how printer_id scopes the matrix to a single machine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names the resource ('personal nozzle wear-rate matrix vs the population') and the differentiation angle (personal vs population), which is a real verb-free but specific claim. However the second sentence shifts to hypothetical phrasing ('Kiln Pro would track...') so it's unclear whether this tool actually returns a matrix or is merely a gated stub that returns an upgrade prompt. It also does not distinguish itself from sibling nozzle_wear_status, nozzle_drift_attribution, or get_community_wear_baseline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Pro' is an explicit precondition the agent needs, which is more than most tools offer. But there is no statement of when to use this versus nozzle_wear_status / nozzle_drift_attribution / get_community_wear_baseline, all of which overlap heavily with this topic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nozzle_stateC
Return the recorded nozzle state for a printer.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes | ||
| printer_model | No | Default: "". | |
| file_nozzle_mm | No | ||
| printer_reading | 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 behavioral burden. The phrase 'recorded' hints that this returns stored rather than live state, but the description does not clarify permissions, data freshness, rate limits, or what the returned state includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded, direct, and free of filler. It is concise to the point of under-specification, but structurally it 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 four parameters including a nested object, no annotations, and no output schema, the description is too thin. It states the tool's basic effect but omits parameter purpose, return shape, and sibling differentiation, so an agent lacks the context needed to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the description does little to compensate. It implies printer_id is the target, but adds no meaning for printer_model, file_nozzle_mm, or the nested printer_reading object, leaving three parameters effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 clear verb ('Return') and resource ('recorded nozzle state for a printer'), so the basic action is unambiguous. However, it does not distinguish this tool from closely related siblings like list_nozzle_states or set_nozzle_state, leaving the agent to infer whether this is a per-printer lookup versus a list 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?
There is no explicit guidance on when to use this tool versus alternatives such as list_nozzle_states, auto_detect_nozzle, or nozzle_wear_status. The only implied usage is that it applies to a given printer, with no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_optimal_settingsC
Predict the best print settings based on historical success.
Kiln Pro would read this printer's recorded outcomes and return tuned settings, a success-likelihood read, and the risks to fix first. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_optimal_settings
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| printer_id | Yes | ||
| geometry_type | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose that the tool reads recorded outcomes and returns three things (tuned settings, a success-likelihood read, and prioritized risks), and it flags the licensing gate. It does not clarify that the operation is non-mutating, nor what happens when the printer has no or sparse history, which are the key behavioral unknowns for a prediction 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 useful content is front-loaded in the first two sentences, but the conditional framing ('Kiln Pro would read...') is awkward and partially restates the opening. The 'Upgrade: <URL>' line is marketing filler, though it does convey the tier requirement, so it is not pure 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 read-only three-parameter prediction tool with no output schema, the description usefully enumerates the return contents. However, it leaves material-string expectations, behavior with insufficient history, and sibling selection unresolved, so an agent would still need to guess on several practical points.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33%, and the one documented field ('geometry_type') has a placeholder note ('Default: ""') rather than real semantics. The description adds nothing about printer_id, material (free-form string, no enum), or geometry_type, so it does not compensate 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 first sentence names a specific verb and resource ('Predict the best print settings') and scopes the basis ('based on historical success'), and the second sentence clarifies it reads this printer's recorded outcomes. That is clear enough for an agent to understand the function, but it never distinguishes itself from near-duplicate siblings such as predict_print_settings, recommend_settings, infer_print_settings, or get_auto_tuned_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 only guidance is the access prerequisite 'Requires Kiln Pro' plus an upgrade URL. There is no statement of when to prefer this tool over the many sibling settings-recommendation tools, and no exclusion or fallback behavior for users without Kiln Pro.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_parser_health_summaryC
Aggregate correction rates per signal type and per mapping rule.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_parser_health_summary
| 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, and it discloses little: no auth/tier semantics beyond a vague Pro mention, no cost or rate characteristics, no indication of freshness or scope. Worse, three of the four sentences describe unrelated Pro features (mid-print edits, textures, decorations), which can mislead an agent about what this tool actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence is substantive; the remaining three are a tier upsell and a URL that appear to be boilerplate appended to many tools. The useful purpose statement is front-loaded, but most of the text is 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 zero-parameter aggregate read with no output schema, the description should convey what the result looks like. It hints at grouping (per signal type, per mapping rule) but says nothing about the rate format, time window, or whether data is per-printer or global — gaps an agent will hit immediately on 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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description does at least frame the two grouping dimensions of the aggregate.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and object: aggregates correction rates broken down by signal type and by mapping rule. That is clear enough to act on, though it never explicitly ties the aggregation to 'parser health' (the name) nor distinguishes it from health-adjacent siblings like design_version_health or get_calibration_health_recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the many adjacent diagnostics tools, and no prerequisites or exclusions. The only contextual cue is an ambiguous 'Requires Kiln Pro' buried in marketing text, which does not tell the agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_part_passportC
Everything about one part/design in a single call — the Part Passport.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_part_passport
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and the one genuinely useful disclosure is 'Requires Kiln Pro' — a gating/auth condition the agent otherwise could not know. The remainder describes unrelated paid features (calibration, mid-print edits, textures) and an upgrade URL rather than this tool's behavior, so it is unclear whether the call fails without Pro, returns partial data, or returns everything regardless of tier.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well front-loaded and earns its place. The following three lines are marketing copy and an upgrade link that consume most of the definition's length without describing 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?
For a read tool with no output schema and no annotations, the description should at least enumerate what the 'passport' bundle contains so the agent can decide to call it instead of several narrower tools. Instead it describes a subscription tier, leaving the return payload and any tier-gating failure mode undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required design_id, so the description must compensate and does not — it only implies a part/design is targeted without saying whether design_id is a UUID, slug, or name. Baseline 4 for zero params does not apply here since one undocumented parameter exists.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a verb and resource ('Everything about one part/design in a single call — the Part Passport'), which tells the agent this is an aggregate read for a single design. But 'everything about' is vague about what is actually aggregated, and it never distinguishes itself from nearby readers like get_design, inspect_design, or list_design_components, all of which appear in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 statement of when to reach for this versus get_design, inspect_design, or get_design_version. The only selection-adjacent text is a tier pitch about Kiln Pro features, which does not tell the agent which condition should select this tool over its many siblings.
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 must carry the behavioral burden. It usefully discloses the fallback behavior when goal is omitted (compact overview, not the full guide) and that the help is 'bounded' and 'public'. It does not state read-only semantics, failure modes for unknown material/goal values, or any rate/authorization 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?
The main behavior is front-loaded and the text is short. The Args block partially restates the parameter names from the schema, but it earns its place by adding concrete example values and the goal vocabulary, so there is little wasted 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?
For a two-parameter, read-only guide tool with no output schema, the description covers the essentials: scope, parameter values, and what happens when goal is omitted. Remaining gaps—unknown-value handling and a hint about the guide's content shape—are minor given 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?
Schema coverage is 0%, so the description must explain both parameters, and it largely does: material is a material ID with concrete examples (pla, abs, petg, nylon), and goal accepts surface_finish, paint, strengthen, or a listed technique name, with omission behavior spelled out. It does not clarify what happens with an unrecognized goal value, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition opens with a specific verb and resource ('Get bounded public post-processing help for one goal'), which tells an agent exactly what is returned. It does not name or contrast with sibling tools such as get_material_slicing_profile or troubleshoot_print_issue, so the agent must infer the boundary between this guide and other material/process tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear invocation context: pass one goal or technique name for focused help, or omit goal for a compact compatibility overview. That is actionable guidance on how to call the tool. It stops short of stating when to prefer this over related sibling tools, so there are no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_print_confidenceC
Predict how likely a print will succeed based on your print history.
Kiln Pro would read this printer's recorded outcomes and return tuned settings, a success-likelihood read, and the risks to fix first. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_print_confidence
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| fleet_mode | No | Default: false. | |
| printer_id | Yes | ||
| pipeline_result_json | No | Default: "{}". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the Kiln Pro gating requirement and outlines what the call returns (settings, likelihood, risks), and 'would read this printer's recorded outcomes' implies a read-only operation. It does not state latency, cost, or data-sufficiency requirements, so it is partial but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The capability is front-loaded in a single clear sentence, but a full sentence is spent marketing 'Kiln Pro would...' and another is a raw upgrade URL. This is not egregious, but the promotional framing dilutes the definition's density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 prediction tool with no output schema and no annotations, the description sketches the return payload but leaves the two required parameters and the pipeline_result_json semantics unexplained. An agent could call it, but not confidently with the right inputs.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: only fleet_mode and pipeline_result_json have descriptions, and even those are terse defaults. The description does not explain required parameters printer_id or material, nor what pipeline_result_json should contain, so it fails to compensate for the 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?
First sentence gives a specific verb and resource: predicts print success likelihood from recorded print history. The second sentence names the concrete outputs (tuned settings, success-likelihood read, risks). It does not distinguish itself from close siblings like predict_print_settings or predict_print_failure, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a Kiln Pro prerequisite but gives no guidance on when to choose this over predict_print_settings, get_optimal_settings, or get_print_learning_summary. The agent must infer the selection criteria 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.
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?
With no annotations, the description carries the burden and does well: it discloses that the response is a single combined payload spanning four knowledge domains, that printer context is additive rather than required, and conveys a read-only diagnostic nature through the knowledge-lookup framing. It omits the concrete shape of the response (sections, ordering) and any latency/coverage caveats for materials or symptoms it doesn't 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?
Front-loaded with purpose and the FIRST-call directive, then evidence, then examples, then args — a sensible order. It runs long and the blank-line-heavy indentation plus the Args section partly restates the schema; the three example triples are useful but not all strictly 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?
For a 3-param tool with no annotations and no output schema, the description supplies the aggregation scope, the invocation priority, and parameter meaning with examples. What's missing is the structure of the returned diagnostic (what sections an agent should expect to read out), which the agent must discover by calling.
Complex tools with many parameters or behaviors need more documentation. Simple 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: material, symptom, and printer are each explained in the Args block, symptom is enumerated with plausible values ("stringing", "warping", "poor adhesion", "clog", "brittle"), and printer is flagged as optional. The worked examples tie all three params together in realistic combinations, adding meaning well beyond the bare string-typed 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 names a specific verb+resource ("Get a comprehensive print diagnostic") and the body states exactly what it aggregates: troubleshooting data, printer compatibility, storage requirements, and post-processing tips. It explicitly positions itself as "the PRIMARY tool for debugging print problems," which separates it from the pass-through siblings in the print-diagnostic cluster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong when-to-use guidance: "Call this FIRST when a user reports any print quality problem," plus the rationale that it cross-references sources so the agent needn't make multiple calls. It stops short of naming overlapping siblings such as troubleshoot_print_issue or analyze_print_failure, and gives no explicit when-not condition, so the boundary still requires inference.
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 | Default: 20. | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it states that insights are advisory, do not override safety limits or preflight checks, and that unresolved prints remain excluded from success-rate math until settled. It still omits details such as authorization needs, pagination, or error behavior, so it is not fully 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 purpose and return content, but it is long for a two-parameter query tool. The unresolved-prints contract is valuable, yet phrases like the rhetorical 'one witness the machine can't replace' and the example dialogue are more verbose than 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?
Because there is no output schema, the description needs to explain return content, and it does: it names success rates, failure mode breakdown, per-material statistics, and unresolved prints. It is nearly complete for correct use, though it could say more about output shape, limits, and how it relates to sibling insight tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, with printer_name undocumented in the schema and limit only stating the default. The description adds that printer_name selects the printer and that limit controls how many recent outcomes are included, but the printer_name explanation is largely tautological and limit still lacks detail about ordering or filtering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: query cross-printer learning insights for a specific printer, and it names the concrete return categories (success rates, failure modes, per-material statistics, unresolved prints). It is clear what the tool does, but it does not explicitly differentiate itself from nearby siblings such as get_print_learning_summary or get_material_success_rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear operational context for unresolved prints, including when to ask the user and the exact follow-up tool record_print_outcome with required fields. However, it does not explicitly say when to choose this tool over sibling insight or material-rate tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_printer_melt_rateC
How much plastic per second a printer's own slicer lets one material melt: the figure Kiln slices it at.
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| nozzle_mm | No | ||
| printer_model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description identifies the data source as the printer's own slicer / Kiln slicing, but it does not state read-only behavior explicitly, failure modes for unsupported printer-material combinations, or whether the lookup has 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 a single compact sentence with the metric front-loaded and no filler. The phrase 'the figure Kiln slices it at' is somewhat opaque, but the overall size is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 lookup with no annotations and no output schema, key details are missing: units (mass vs volume), how nozzle_mm affects the result, and what happens for unsupported material/printer combinations. The description provides only a high-level metric definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 3 parameters. The description mentions material and printer conceptually but does not explain printer_model, material, or the optional nozzle_mm parameter and its effect on melt rate, so it does not compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific metric: how much plastic per second a printer's slicer allows a material to melt, tied to Kiln slicing. An agent can identify this as a melt-rate getter, though the wording is idiosyncratic and does not distinguish it from related material/print-setting 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?
There is no explicit when-to-use guidance, prerequisites, or alternatives among siblings such as check_nozzle_capacity_for_print or get_material_slicing_profile. Usage is only implied by the tool name and metric description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_print_learning_summaryA
Get the current learning summary for a printer.
Kiln Pro would read this printer's recorded outcomes and return tuned settings, a success-likelihood read, and the risks to fix first. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_print_learning_summary
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| printer_id | Yes | ||
| failure_type | No | Default: "". | |
| include_recovery | No | Default: true. | |
| include_community | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It does disclose that the tool reads recorded outcomes and what it returns, but the conditional 'would read... and return' phrasing makes it ambiguous whether this describes live behavior or a gated upsell stub. Permissions, read-only status, and failure modes are not 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 core purpose is front-loaded in the first sentence and the return summary follows efficiently. The trailing upsell URL is a functional gating notice but slightly dilutes the definition's focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 usefully names what is returned (tuned settings, success-likelihood, priority risks), compensating for that gap. It remains thin on parameter meaning and on how the Kiln Pro gate behaves, but is largely complete for a read 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 80%, above the threshold where the schema does the heavy lifting, so baseline 3 applies. The description adds nothing about material, failure_type, include_recovery, or include_community, leaving semantics entirely to 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?
States a specific verb and resource ('Get the current learning summary for a printer') and even enumerates the outputs (tuned settings, success-likelihood read, risks). However, it never distinguishes itself from close siblings like get_optimal_settings, get_print_confidence, or get_auto_tuned_settings, which cover overlapping territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the prerequisite 'Requires Kiln Pro,' which is a gating condition rather than guidance on when to pick this tool. No alternatives or when-not-to-use conditions are given, leaving selection between the many tuning/confidence siblings to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_color_rolesC
Return semantic color roles for a product type.
| Name | Required | Description | Default |
|---|---|---|---|
| product_type | 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. "Return" weakly implies a read, but nothing is said about whether roles include defaults/fallbacks, whether an unknown product type errors or returns empty, or what the payload looks like — and there is no output schema to cover that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope clause front-loaded and no filler. Its brevity is efficient rather than padded, though it borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and an undocumented parameter, the description is the only source of truth — yet it explains neither input provenance nor return shape. For a lookup tool in a large sibling set, this is insufficient to invoke correctly 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?
There is one parameter with 0% schema description coverage, and the description only restates it as "for a product type" without adding meaning. It doesn't say whether the value is a free-form string, a catalog key, or one of the values from list_product_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?
States a specific verb (return) and resource (semantic color roles) scoped to a product type, so the operation is identifiable. However, "semantic color roles" is undefined jargon and the description doesn't distinguish it from nearby siblings like list_product_types or get_product_faces, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 call this versus alternatives, no mention that product types likely come from list_product_types, and no preconditions stated. The agent must guess the trigger condition and the source of valid product_type values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_facesC
Return the full semantic face registry for a product type.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_product_faces
| Name | Required | Description | Default |
|---|---|---|---|
| product_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden; it does disclose a real access constraint ('Requires Kiln Pro'), which is useful. However, the claim that this tool includes 'calibration that learns your printer, mid-print edits, and unlimited textures and decorations' misrepresents the behavior of a face-registry lookup and would confuse an agent about side effects or scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence serves the tool; the following three are marketing copy and an upgrade URL that consume roughly three quarters of the text. Concise intent is buried under sales material.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter, no-output-schema tool needs the valid product types and a sense of what a 'semantic face registry' returns; neither is given. The space that should carry that information is spent on tier promotion instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, so the description must compensate, and it does not: it never says what values 'product_type' accepts or that list_product_types supplies them. Only the bare phrase 'for a product type' is added.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('Return the full semantic face registry for a product type'), but it never distinguishes this from close siblings such as list_decoratable_faces, get_product_color_roles, or describe_face. The remaining three sentences describe plan features rather than the tool, muddying what it actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 instead of list_decoratable_faces, describe_face, or list_product_types, which appear to cover overlapping ground. The only conditional statement is a pricing/upgrade one, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provenance_historyC
Return provenance-log entries for explainability.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_provenance_history
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 100. | |
| material | No | Default: "". | |
| since_iso | No | Default: "". | |
| printer_id | No | Default: "". | |
| feature_class | No | Default: "". | |
| mapping_rule_id | No | Default: "". | |
| originating_signal | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden, yet it only supplies a pricing blurb ("Requires Kiln Pro") that is ambiguous about whether the tool itself is gated or merely advertises a plan. It says nothing about read-only safety, ordering, pagination of the limit, or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only one of four sentences serves the calling agent; the remaining three are a marketing upsell and URL with no invocation value. The useful content is front-loaded, but the payload is diluted roughly 3:1 by noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 7-parameter query tool with no annotations and no output schema should explain filtering semantics and return format. Instead it omits both, and the sole contextual sentence misdirects toward plan gating rather than tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even though the schema field descriptions are thin (mostly just "Default: ..."). The prose adds no meaning beyond the schema for limit, material, since_iso, printer_id, feature_class, mapping_rule_id, or originating_signal.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ("Return provenance-log entries"), which is clear enough, but "for explainability" is a vague purpose qualifier and does nothing to distinguish it from siblings like verify_provenance_integrity or export_audit_trail that also traffic in provenance 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?
There is no statement of when to use this versus alternatives, no prerequisites, and no exclusions. With several provenance/audit-adjacent siblings in the list, the agent gets no routing signal at all.
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_planB
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 | Default: false. | |
| has_power_loss_recovery | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it discloses almost nothing: no statement that this is a read-only lookup with no side effects, no note on whether the plan is deterministic or stateful, no mention of permissions, and no hint about what a "plan" contains (steps, gcode, instructions). The only behavioral signal is that the plan is tailored by printer capabilities via the two boolean flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the Args block is compact and scannable. The enumeration of failure types is long but earns its place since it is the only place those values are documented; no filler 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?
For a 4-parameter tool with no annotations and no output schema, the definition covers inputs adequately but leaves the return value undefined — an agent cannot tell whether it gets a step list, gcode commands, or human-readable instructions, which matters for deciding whether to call this before start_print_recovery. 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?
Schema coverage is 50%, and the description compensates well: it supplies the full closed list of failure_type values (spaghetti, layer_shift, adhesion_loss, nozzle_clog, stringing, thermal_runaway, power_loss, filament_runout, warping, unknown), which the schema does not encode as an enum, and clarifies the meaning of printer_name and both capability booleans. It stops short of saying what happens with an unrecognized value or how 'unknown' differs from omission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Get a recovery plan") and scopes it to a failure type, which distinguishes it from the session-oriented siblings like get_recovery_session_status or get_recovery_gcode_steps. It never names the closest alternative (plan_failure_recovery / plan_print_recovery), so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this instead of plan_failure_recovery, plan_print_recovery, repair_guide, or troubleshoot_print_issue, and no preconditions or exclusions. The nearest thing to guidance is the enumerated failure_type list, which implies usage but does not route the agent among alternatives.
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_reflog_entryC
Fetch a single reflog entry by id.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_reflog_entry
| Name | Required | Description | Default |
|---|---|---|---|
| reflog_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, yet it says nothing about read-only semantics, error behavior for an unknown id, required scopes, or what the entry contains. Worse, the trailing marketing text about "required Kiln Pro" printer features is unrelated to this tool and could mislead an agent into thinking it gates a paid printing 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 useful content is one well-formed front-loaded sentence; the following three sentences are off-topic promotional text with a URL and should not be in a tool definition at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter lookup with no annotations and no output schema leaves the agent without any description of the returned entry (diff, author, timestamp, parent) or failure modes. The description spends its remaining space on unrelated content rather than closing that 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% – reflog_id is only typed as a string with no description, format, or example. The description says only "by id," adding no format (hash? sequence number?), no indication of whether short ids are accepted, and no behavior for invalid ids.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ("Fetch a single reflog entry by id") and clearly reads as the single-item counterpart to the sibling show_reflog. The remaining three sentences describe an unrelated printer-calibration/tier upsell and contribute nothing to identifying the tool's 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?
There is no guidance on when to call this instead of show_reflog (list all entries) or restore_from_reflog_entry (act on an entry). The only additional text is a pricing/upgrade pitch, which gives the agent no selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regression_alertsC
List persisted regression alerts emitted by record_print_outcome.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=get_regression_alerts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 20. | |
| design_id | No | ||
| include_dismissed | No | Default: false. |
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 only that alerts are "persisted" and originate from record_print_outcome; it says nothing about ordering, pagination, retention window, or what fields an alert contains. The inserted pricing text ("Requires Kiln Pro") is boilerplate that ambiguously implies a tier gate without confirming whether this specific tool is gated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but the following three lines are marketing copy with an upgrade URL that occupies the majority of the description and earns no place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and an undocumented design_id parameter, the description should explain what an alert looks like and how results are ordered or scoped. Instead it spends its length on pricing text, leaving the agent without enough to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% and design_id has no description in either place. The description does not explain limit semantics, ordering implied by limit, or what include_dismissed does to the result set, so it adds no 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 opening sentence names a specific verb ("List") and resource ("persisted regression alerts") and even identifies the producing tool, record_print_outcome, which separates it from dismiss_regression_alert and check_design_regression. However, the remaining three lines of pricing boilerplate dilute the signal and could make an agent wonder whether the tool is a paid feature gate rather than an alert lister.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus check_design_regression or dismiss_regression_alert, nor any prerequisite. The only hint is the include_dismissed parameter name, which is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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_logA
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 | Default: 100. | |
| session_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a read/log-retrieval operation, explains session scoping and the current-session default, and describes the log contents, but does not mention permissions, ordering, pagination beyond 'limit', or any 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 front-loaded and reasonably efficient, leading with the core purpose before usage context and parameter notes. The 'Args:' section is somewhat schema-redundant in formatting but the added default/max details justify it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only log tool with no output schema and no annotations, the description is mostly complete. It explains session scope, current-session fallback, log contents, and limit bounds, though it could additionally mention ordering or truncation 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 coverage is only 50%, but the description compensates well: it explains that session_id is a session UUID and that omitting it uses the current session, and it clarifies limit has a default of 100 and a maximum of 500. The schema gives only 'Default: 100' for limit and no description for session_id, so this is meaningful added 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 states a specific verb and resource: 'Return the full audit log for an agent session.' It is clear what the tool does, but it does not explicitly differentiate itself from sibling audit/log tools such as export_audit_log or verify_audit_integrity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 usage context: 'Use this tool to replay exactly what an agent issued during a session,' including safety checks and blocked attempts. It does not explicitly state when not to use it or name alternative tools for overlapping audit-log needs.
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_profileA
Get the full tuned slicer profile for a printer model.
Returns all INI settings (layer height, speeds, temps, retraction, etc.)
and the recommended slicer. A catalogued printer's profile is
served one printer per call and kept on this computer; a printer
whose record this install does not hold answers with the generic
``default`` profile (``profile.id == "default"``). 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?
With no annotations, the description carries the full burden and does substantial work: it discloses the local-cache resolution behavior, the generic 'default' fallback for unrecognized printers, and the tiered licensing gate for premium profiles. It omits only minor details like error behavior when a license 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?
Content is front-loaded with the primary purpose, then return contents, then resolution/tier behavior. Slightly verbose in the fallback and caching sentences, but every sentence conveys operational information rather than 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 one-param read tool with no output schema, the description covers what is returned (INI settings, recommended slicer), resolution semantics, the fallback profile, and licensing constraints. Only edge cases like failure modes when premium access is denied are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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% on a single parameter, so the description must compensate, and it does by defining printer_id as the printer model identifier and supplying concrete examples ('ender3', 'bambu_x1c', 'creality_k1_max'). Format hints (quoted string identifiers) add 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 states a specific verb and resource ('Get the full tuned slicer profile for a printer model') and clarifies the one-printer-per-call scope, which implicitly distinguishes it from the sibling list_slicer_profiles. It does not name the sibling explicitly, so full differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope note ('served one printer per call') and the free/premium tier rules, but there is no explicit when-to-use-this-vs-list_slicer_profiles guidance or statement of exclusions. An agent must infer the routing itself.
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.
Args:
chat_app: The chat app the person is writing to you from,
when there is one (``telegram``, ``discord``,
``whatsapp``, ``imessage``, ``signal``, ``slack``,
``wechat``, etc.). Say it once per session; leave it
out when they are typing in this app itself. Kiln
uses it to lead with the way of approving a print
that suits someone on a phone.
| Name | Required | Description | Default |
|---|---|---|---|
| chat_app | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral explanation and does well: it says what the onboarding summary contains and how chat_app affects the guidance. It does not explicitly state that the tool is read-only or side-effect-free, but the described behavior strongly implies a guidance-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 front-loaded with the core purpose and return summary before the parameter details. The Args-style formatting and explanatory prose are useful, though slightly verbose for a one-parameter onboarding 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 lack of annotations and output schema, the description supplies the key missing context: what the tool returns, when to call it, and how chat_app influences the response. It is nearly complete for an onboarding tool, with only minor gaps around explicit read-only/safety 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 must explain the single parameter, and it does thoroughly. It defines chat_app, gives examples, explains when to include or omit it, says to provide it once per session, and describes how Kiln uses 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 states a specific purpose: returning an onboarding summary covering what Kiln is, how to discover tools, core workflows, and which tools to call first. This clearly distinguishes it from operational siblings because it is explicitly a quick-start/meta-guidance tool rather than a design, print, or fleet 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?
It gives a clear usage condition: call this at the start of a session if unfamiliar with available capabilities. It also gives guidance for the chat_app parameter, saying when to include or omit it, though it does not explicitly name alternative onboarding or discovery tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_telemetry_preferencesB
Return the per-category telemetry disclosure + opt-out state.
| 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 returned shape (per-category disclosure plus opt-out state) and "Return" implies a non-mutating call, but it says nothing about scope (per-user vs. per-org), authorization requirements, or whether categories are fixed 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?
A single front-loaded sentence with no filler; the payload description lands immediately after the verb. Nothing could be trimmed without losing 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?
With no output schema, the description must sketch the return value, and it does so at a high level. However, the actual categories and their value domain are left undefined, and for a preferences tool the agent would benefit from knowing scope and whether the state is user- or org-level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The schema itself is trivially 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?
Specific verb ("Return") plus a concrete resource and payload ("per-category telemetry disclosure + opt-out state"), so the agent knows exactly what it gets back. It does not, however, distinguish itself from the closely-named sibling set_telemetry_preference, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use context, no prerequisites, and no mention of the obvious counterpart set_telemetry_preference (read vs. write). The agent must infer from the name alone that this is the read half of a preference pair.
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.
github_start_device_loginB
Kick off the GitHub device-code flow.
| 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 behavioral burden. It does not disclose what the tool returns, whether it starts a polling session, how long the device code remains valid, or whether any user interaction is required. For an authentication-flow initiation tool, these omissions are 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?
The description is a single front-loaded sentence with no waste. It is appropriately sized for a simple no-parameter tool, though the terseness contributes to the missing behavioral 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?
With no annotations and no output schema, the description would need to explain the return value and next steps for the device-code flow. It does not say whether the caller receives a user code, verification URL, or polling interval, nor does it point to a companion polling 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 there are no parameter semantics to explain. The baseline score for a no-parameter tool is 4, and the description does not introduce any confusing parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it starts the GitHub device-code flow. That is clear enough for an agent to know the general action. It does not, however, differentiate this tool from other authentication-related siblings such as kiln_signin or 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 gives no guidance on when to use this versus other authentication flows, nor does it mention prerequisites such as being unauthenticated. The phrase 'Kick off' implies initiation but does not tell the agent what to do next or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_print_codeA
Relay the code the person typed after Kiln showed one on their screen.
When a print is refused with "a code was just shown in a notification",
ask the person to type it here, then pass their exact words: the code
alone approves that one print; the code followed by ``2h`` or ``today``
also keeps printing on that printer without asking for a while. Then
call the start tool again. Nothing you can call reveals the code; a
wrong guess counts, and three wrong guesses void every code for a minute.
When the reply carries ``phone_next_time``, pass that one line on once
the print has started.
Args:
words: Exactly what the person typed, e.g. ``4821`` or ``4821 2h``.
| Name | Required | Description | Default |
|---|---|---|---|
| words | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden: nothing callable reveals the code, wrong guesses count, three wrong guesses void every code for a minute, and a phone_next_time reply must be relayed once printing starts. These are exactly the side-effect/failure-mode details an agent cannot infer 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 core action is front-loaded in the first sentence and each following sentence (code semantics, penalty for wrong guesses, phone_next_time) carries distinct operational value. It is slightly long and shows pasted-docstring indentation artifacts, but there is no genuinely redundant 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?
For a one-parameter tool with no annotations and no output schema, the description covers the trigger, the input format, the consequences of success/failure, the follow-up call, and out-of-band handling of phone_next_time. An agent has everything needed to call it correctly and recover from 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?
Schema coverage is 0% and there is one param, but the description documents it as 'Exactly what the person typed' with concrete format examples ('4821' or '4821 2h') and explains that the suffix changes behavior. This more than compensates for the empty schema and clarifies the format an agent would otherwise have to guess.
Input schemas describe structure but not intent. Descriptions should explain 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 ('relay') and resource ('the code the person typed') tied to an exact triggering situation (a print refused with 'a code was just shown in a notification'). It also implicitly distinguishes itself from the flow's other step by saying 'Then call the start tool again', so the agent knows this feeds back into the start path rather than replacing 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 says when to use it (print refused, person has a code), what to ask the person to do, and what to do afterward ('Then call the start tool again'). It even branches the semantics of the input (code alone approves one print; code plus 2h/today extends printing) so the agent knows the consequence of what it passes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grant_scopeB
Grant capability on scope_key to a tenant OR a team.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=grant_scope
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | ||
| team_id | No | ||
| scope_key | Yes | ||
| tenant_id | No | ||
| capability | Yes | ||
| expires_at | No | ||
| granted_by | 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 disclose a real behavioral constraint (the org's owner plan must be Kiln Business, but grantees on any plan can read it), which is useful. It omits mutation semantics entirely: whether re-granting duplicates, whether grants are revocable, how expires_at behaves, and what authorisation the caller 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?
Only the first sentence earns its place; the remaining three sentences are marketing copy and an upgrade URL that consume roughly two-thirds of the text without informing invocation. The one substantive constraint is front-loaded, but the bulk is 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?
Against a 7-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description leaves too much unsaid: expiry semantics, granted_by identity, org scoping, duplicate-grant behaviour, and revoke path are all absent. The plan-gating note is the only genuinely compensating 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 description coverage is 0% across 7 parameters, so the description must compensate and does not. It explains capability and scope_key only in tautological terms and gives a useful tenant/team either-or hint, but org_id, granted_by, and especially expires_at (numeric, unit unclear) are entirely undocumented, as is any required-one-of constraint between tenant_id and team_id.
Input schemas describe structure but not intent. Descriptions should explain 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 (Grant) and resource (capability on scope_key), and the phrase 'to a tenant OR a team' clarifies a mutually-exclusive targeting choice the schema does not express. It stops short of 5 because the sibling revoke_scope is never named, so an agent must infer the inverse tool from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'tenant OR team' phrasing implies which target to pick, but there is no statement of when to grant versus when to revoke, no prerequisites about caller permissions, and no mention of the license-gated failure mode beyond a vague plan note.
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, the description does substantial work: it says nothing is cancelled or paused, the print continues unchanged, and only Kiln's sense of responsibility changes. It also discloses the one-time return behavior and the report-only no-argument mode. It does not mention authorization requirements, error behavior, or return formatting, so it falls short of fully carrying the behavioral 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?
The first sentence is front-loaded and clear, but the description is long and literary for a one-parameter tool, with several explanatory passages that could be condensed. The information is mostly useful, but the structure spends more space than necessary on repetition and framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 one-optional-parameter schema and no output schema, the description covers the critical behavior: what changes, what does not change, how to query current state, and when to prefer the fleet tier. It is slightly incomplete because it does not describe the shape of the report returned when printer_name is omitted, nor error or permission 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?
Schema description coverage is 0%, so the description must explain the sole parameter, and it does: printer_name identifies the printer to hand back, and omitting it reports the current printer without changing anything. It does not specify name format or validation rules, but the semantic meaning and omit behavior are 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 states a specific action and resource: handing a printer back so Kiln stops driving it while the print continues. It clearly explains the below-fleet-tier single-printer model, but it does not explicitly distinguish this from nearby siblings such as release_printer_lock or acquire_printer_lock, leaving some ambiguity for an agent scanning the tool list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear usage conditions: use this below the fleet tier to release Kiln's attention, and avoid going back and forth between two running printers because that is what the fleet tier is for. It also explains the no-argument report-only mode. The alternative is described conceptually as 'the fleet tier' rather than by naming a specific sibling tool.
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 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 | Default: "". | |
| wall_thickness_mm | No | Default: 2.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses that a 3D stage panel opens on success, that oversized meshes are decimated for the stage, and that a dict of hollowing stats/savings is returned. It omits error conditions (e.g. failure on non-manifold meshes) which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and per-parameter notes are front-loaded and efficient. The inline-stage paragraph is longer than strictly necessary but earns its place by disclosing a non-obvious side effect; light duplication with the :returns: line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the return shape and the visible side effect, so an agent knows what happens after calling. Only failure/validation behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, and the description compensates by documenting all three params — file_path ('Path to the STL file'), wall_thickness_mm with default 2.0, and output_path defaulting to '<name>_hollow.stl'. That naming convention for the default output is real added value beyond the schema's empty-string default.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Create a hollow version of a mesh to save material') and explains the mechanism (inner offset shell combined with outer surface). It does not name or differentiate from nearby siblings like thicken_mesh_walls or simplify_mesh_model, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The goal ('to save material') implies when to reach for it, but there is no explicit guidance on when to prefer it over sibling mesh operations (e.g. thicken_mesh_walls, simplify_mesh_model) or any stated prerequisite about the input mesh needing to be watertight/solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
home_axesA
Home the print head — what the Home button on the printer's screen does.
Refused while a print is running, and while one is paused (the head is
over the part and homing travels).
Where the connected model's own start-sequence homing is served one plan at a time through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it works offline — raise first, home X, Z found the way
the maker finds it, park off the plate — it runs that, one described
motion at a time. A bare ``G28`` from an unknown height is exactly the
move that family's own sequences avoid, so a Bambu model whose sequence
is not served here is refused rather than guessed. Other backends send
the firmware's own ``G28`` and say so (``sequence_source:
"firmware_home_routine"``) -- but only after the catalogue's motion
record for the declared ``printer_model`` has answered how that routine
finds Z: on a machine whose Z home presses a probe or the nozzle onto
the plate (most of them) the tool asks for ``plate_clear`` first, on
the few whose Z home cannot touch the plate it runs unasked, and with
no ``printer_model`` declared, or one the catalogue does not know, it
refuses and says which key to set (code ``PRINTER_MODEL_REQUIRED``).
Homing X and Y alone never needs the record. The plan's first step
says what the person will see -- what descends and where, in the
vendor's words -- and whether the routine travels sideways before Z is
known; on a Klipper or USB Marlin machine the unit's own config or
reports settle the cells the maker left blank, and the plan says so.
Branch on ``outcome``: ``confirmed`` (the printer was seen at home),
``accepted`` (sent, not refused, not read back — the honest answer on
every backend Kiln cannot read a homed flag from), ``failed``.
``homed_axes`` names the axes the sequence's own homing commands
addressed; ``resting_position`` says where the head was left.
**Run it in steps the first time on any machine with a person beside
it.** ``plan_only=True`` returns the sequence as steps -- what the
person will see and how each motion knows where to stop -- and sends
nothing. ``step=N`` sends only step N, reports what it left armed
(heater, soft endstops), and describes step N+1 for the next call. A
single script cannot be paused between motions, however well it was
announced; step mode can.
Args:
axes: Any of ``X``, ``Y``, ``Z``. Default all three.
wait_seconds: How long to watch for a fault code afterwards on
backends that raise one (default 10).
step: Send only this step of the sequence (1-based).
plan_only: Describe the steps; send nothing.
plate_clear: A PERSON's statement that the plate is empty. Required
on every call that homes Z on a model whose Z home presses the
nozzle onto the plate (the A1 mini), whatever the plate record
says; without it the tool refuses with
``PLATE_CLEAR_REQUIRED`` and, where the printer has a camera,
``snapshot_path`` -- look, then call again with it set. Never
set it on a person's behalf.
printer_name: Which printer. Omit for the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| axes | No | Default: "XYZ". | |
| step | No | ||
| plan_only | No | Default: false. | |
| plate_clear | No | Default: false. | |
| printer_name | No | ||
| wait_seconds | 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 behavioral burden and does so extensively: refusal conditions, plan/step semantics, what gets sent per backend, PLATE_CLEAR_REQUIRED and PRINTER_MODEL_REQUIRED refusal codes, outcome meanings, and safety expectations are all 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?
It is front-loaded with a clear purpose, but the body is a very dense wall of text with long run-on sentences and nested clauses. Much of the detail is valuable, yet the structure makes it harder to scan than it needs to be for six 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's complexity, safety implications, and the presence of an output schema, the description is complete. It explains refusal paths, stepwise execution, outcome branching, and prerequisite model/plate conditions without needing to restate 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?
Schema coverage is only 50%, but the description documents every parameter with operational meaning beyond the schema: axes default and values, wait_seconds behavior, step being 1-based and what it leaves armed, plan_only sending nothing, plate_clear as a personal safety attestation, and printer_name as optional default selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Home the print head — what the Home button on the printer's screen does.' It clearly defines the operation and its user-facing analog, making it distinguishable from related motion tools like park_head.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when/when-not guidance: refused while printing or paused, recommended step-by-step first use, plan_only for describing without sending, and plate_clear only when a person confirms an empty plate. It does not explicitly route to sibling alternatives such as park_head, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_external_featureB
Import an external feature asset as a versioned feature. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=import_external_feature
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| name | No | ||
| notes | No | Default: "". | |
| design_id | No | ||
| asset_path | Yes | ||
| feature_id | No | ||
| branch_name | No | Default: "main". | |
| feature_kind | No | Default: "custom_scad". | |
| source_attribution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does volunteer real behavioral facts: a side-effect of opening an inline 3D stage, automatic decimation of oversized meshes for the stage, and a PNG preview fallback. But it is silent on the mutation/versioning semantics (does it create a branch commit? modify an existing design?), permissions, and idempotency. The tier statement is also self-contradictory ("Everything in Free... Requires Kiln Pro"), which leaves the agent unsure whether the call is even permitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Placeholder
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no annotations and no output schema, the description leaves too much unspecified: parameter meaning, versioning/branch behavior, and format expectations are all missing. The one genuinely useful addition (inline stage + decimation behavior) does not offset those 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 only 38% across 8 parameters, so the description must compensate and it does not. It never mentions asset_path (the sole required field), design_id, feature_kind, branch_name, source_attribution, or notes, and gives no hint about accepted file formats or how feature_id relates to the imported asset.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource ("Import an external feature asset as a versioned feature"), which an agent can act on. However, it never distinguishes this from close siblings like import_external_mesh, import_model_parts, or import_step_file, so the agent gets no help choosing among the import family. The subsequent upsell paragraph dilutes focus but doesn't obscure the core 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?
There is no when-to-use guidance at all: nothing says when to pick this over import_external_mesh or import_step_file, what kind of asset_path is acceptable, or what prerequisites (design_id? existing design?) apply. The only conditional content is a pricing upsell, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_external_meshC
Import external geometry (STL / OBJ / PLY / GLB / glTF / 3MF / STEP) as a first-class design version. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=import_external_mesh
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| notes | No | Default: "". | |
| brief_id | No | Default: "". | |
| design_id | Yes | ||
| mesh_path | Yes | ||
| branch_name | No | Default: "main". | |
| design_name | No | ||
| source_attribution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully discloses that the tool opens an interactive 3D stage, that oversized meshes are automatically decimated for the stage, and that a PNG preview is the floor, but it omits key import semantics such as permissions, overwrite/reversibility behavior, side effects on the design, and 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 purpose is front-loaded, but the description is bloated with promotional pricing/upgrade text, a long MAKE DOORS tangent, and repeated inline-stage explanation. Several sentences do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are no annotations and no output schema, and the tool has seven parameters with low schema description coverage. The description covers the interactive stage but leaves major gaps around parameter meaning, usage alternatives, permissions, and mutation 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 only 43%, so the description needs to compensate, but it does not explain design_id, mesh_path, branch_name, design_name, source_attribution, notes, or brief_id. The format list loosely relates to mesh_path but does not clarify parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: importing external geometry as a first-class design version, and it lists supported formats (STL/OBJ/PLY/GLB/glTF/3MF/STEP). It does not clearly differentiate this tool from sibling import tools such as import_step_file or import_external_feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 import_external_mesh versus sibling import tools. The MAKE DOORS / compile_scad passage discusses making objects generally, not when this import tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_model_partsC
Import a MULTI-PART model with its named parts intact. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link). MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
INLINE 3D STAGE: on success this tool 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 | Default: "". | |
| design_id | No | Default: "". | |
| model_path | Yes | ||
| output_dir | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does add useful context: it says the tool opens an inline 3D stage, adds a hosted browser stage link in some hosts, and decimates oversized meshes. However, it omits important import behavior such as accepted file formats, error cases, overwrite behavior, and what happens to named parts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful import description is front-loaded, but the text is bloated by an unrelated 'MAKE DOORS' tangent and repeats the 3D-stage behavior in a separate paragraph. The redundancy and off-topic routing content reduce 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?
For a four-parameter import tool with no annotations and no output schema, the description is incomplete. It covers the stage/decimation behavior but does not explain the parameters, return values, file format expectations, or failure modes needed for correct 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 four parameters at 75% description coverage, but three descriptions are only 'Default: ""' and model_path has no description. The tool description does not explain model_path, brief_id, design_id, or output_dir, so it fails to compensate for the weak schema 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 first sentence gives a specific verb and resource: import a multi-part model while preserving named parts. It is clear what the tool does, but it does not distinguish itself from nearby siblings such as import_external_mesh or import_step_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 does not state when to choose this tool over import_external_mesh, import_step_file, or other import/merge tools. The 'MAKE DOORS' paragraph discusses design_session and compile_scad, which is unrelated routing guidance rather than usage criteria for import_model_parts.
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:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| file_path | Yes | ||
| output_dir | No | ||
| merge_bodies | No | Default: true. | |
| output_format | No | Default: "auto". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, yet the description carries the full burden well: it explains backend resolution (OCCT, FreeCAD, Gmsh, CadQuery), that output format auto-selects 3MF for colour/multi-body files, the NO_BACKEND error contract with the remedy.actionable_by_caller branch, and the side effect of opening an interactive 3D stage with automatic decimation.
Agents need to know what a tool does to the 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 front-loaded: purpose, then format behavior, then workflow, then error handling, then args. However the trailing 'INLINE 3D STAGE' and especially the 'MAKE DOORS' paragraph about design_session and compile_scad are tangential to importing a STEP file and dilute focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 setup, format selection, error paths, and the destination/output_dir default well. It never states what a successful call actually returns (output file path? the 3MF/STL location? a mesh id?), which is the remaining gap for an agent chaining steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 60% and the schema descriptions are bare ('Default: "auto"'), so the description does the real work: it defines brief_id's purpose and empty-string default, explains output_format's three modes with their auto-selection logic, and scopes merge_bodies to STL output only while noting 3MF keeps bodies separate regardless.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Import a STEP (.step/.stp) CAD file and convert it for Kiln's mesh pipeline') and immediately clarifies what the output becomes. An agent can distinguish this from check_step_support, step_file_info, or export_step without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisites and follow-ups: 'Use check_step_support first' and 'After conversion, use diagnose_mesh or analyze_mesh_geometry'. It does not, however, state when NOT to use it—e.g. versus import_external_mesh or import_model_parts, which are adjacent import siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_third_party_calibrationC
Auto-import + classify + coach in a single call.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=import_third_party_calibration
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | ||
| config_path | No | Default: "". | |
| printer_model | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden, and it mostly does not. It discloses the Kiln Pro authorization gate, which is genuinely useful, but not whether the call writes calibration data, what settings it changes, whether it is reversible, or what happens when the third-party config cannot be parsed. The second paragraph is a sales pitch about a different feature (persistent profile offsets) rather than behavior of 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?
Roughly half the text is an upsell paragraph and a pricing URL with tracking parameters that add no invocation value. The one useful constraint (Kiln Pro requirement) is buried mid-text after marketing copy, so the definition is neither front-loaded nor waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A three-parameter, no-annotation, no-output-schema tool with unclear inputs needs far more: what the import consumes, what state it mutates, and how to interpret the outcome. The description leaves the required parameter undefined and substitutes promotional content for operational detail.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, with config_path and printer_model documented only as "Default: \"\"" and tool_name undocumented beyond its title. The description adds nothing: the ambiguous required parameter tool_name (name of the third-party tool? slicer? profile?) is never explained, so an agent cannot reliably populate 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 opening line, "Auto-import + classify + coach in a single call," restates the tool name rather than defining the operation. It never says what is being imported (which third-party format or slicer), what is classified, or what coaching means. The remaining text about Kiln Pro describes a hypothetical paid feature, not what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the "Requires Kiln Pro" prerequisite, which does gate invocation. There is no guidance on when to choose this over calibration siblings such as ingest_measurement, apply_calibration_recommendations, or calibrate_direct, and no exclusions or expected inputs.
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.
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 | Default: 1. | |
| has_bridges | No | Default: false. | |
| failure_mode | No | ||
| enforce_sanity | No | Default: true. | |
| 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 provided, the description carries the full burden and does so well. It discloses the three-check sanity gate, the default refusal behavior, the SANITY_GATE_FAILED error code, and how enforce_sanity=False changes the outcome. It also explains that file_path triggers structural analysis and folds risks into the improved prompt.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and key behavior are front-loaded, followed by the sanity-gate semantics and a structured Args section. The length is appropriate for an eight-parameter tool with no annotations and a nontrivial failure mode. Every section contributes useful 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 absence of annotations and an output schema, the description covers the essential behavior, refusal conditions, override path, and a key response field, improved_prompt.sanity. It also explains all parameters via the Args list. This 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?
Schema description coverage is low at 38%, so the description must compensate, and its Args section documents all eight parameters. Meaningful detail is provided for file_path, enforce_sanity, iteration, and failure_mode, though several physical-constraint parameters are described only briefly. This is a solid compensation but not exhaustive semantic 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?
The description clearly states a specific verb and resource: generate an improved prompt from feedback. It also specifies the transformation being applied, adding physical constraints to address printability and structural issues while preserving creative intent. This distinguishes the tool from a general prompt-building sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 use: improving a prompt based on feedback and structural issues. It also explains the specific when-not for enforce_sanity, including inspection, repair, or model self-correction. It stops short of explicitly naming when to use this instead of build_generation_prompt, but the feedback-driven context is clear.
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 | Default: "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 the full behavioral burden. It discloses that the tool analyzes structural risks and returns recommended settings with a confidence level, which is useful. It still does not explicitly confirm read-only behavior, file-access requirements, or error handling for a tool that reads an STL and computes recommendations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and states the core purpose immediately. The examples and return-field list are useful for an agent selecting and interpreting the tool, though phrases like 'Bridges the gap' are somewhat promotional. Overall the structure is clear and 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 no output schema and no annotations, the description does a good job covering inputs, analysis behavior, material-specific defaults, and the returned settings fields including confidence. It is complete enough to call correctly. Minor gaps remain around failure modes and explicit non-mutation guarantees.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%, but the description compensates by defining file_path as a path to an STL file and listing valid material values: PLA, PETG, ABS, Nylon, TPU, ASA, and PC. It adds real meaning beyond the schema, especially for material selection. It does not add further syntax details for file paths, so it is not quite a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: infer optimal slicer settings from structural mesh analysis. It clearly explains that the output is concrete slicer parameters such as perimeters, infill, supports, brim, and layer height. It does not explicitly differentiate itself from sibling tools like predict_print_settings or get_optimal_settings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the structural-analysis framing and concrete examples such as thin necks and cantilever overhangs. However, the description never states when to use this tool instead of alternatives like predict_print_settings, get_optimal_settings, or recommend_settings. It gives helpful context but no explicit exclusions or routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_material_datasheetC
Verify quoted datasheet values and build a structured material profile.
Kiln Business would verify the quoted datasheet values, build a structured material profile, and keep it in your ingested-materials library. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=ingest_material_datasheet
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Default: false. | |
| brand | No | Default: "". | |
| claims | Yes | ||
| product | No | Default: "". | |
| source_url | No | Default: "". | |
| material_type | Yes | ||
| datasheet_text | Yes | ||
| support_contact | No | Default: "". | |
| support_urgency | No | Default: "". | |
| review_acknowledged | No | Default: false. | |
| request_first_class_support | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the business-tier requirement and that results persist to a library, but it never says what verification actually does, whether unverified claims are rejected, what happens when save is false, or what the agent must do about review_acknowledged / request_first_class_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 opening sentence is well front-loaded, but the second sentence restates it almost verbatim with a marketing tone, and the upgrade URL adds bulk without behavioral 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?
An 11-parameter write/persist tool with no annotations, no output schema, and an opaque claims array needs far more: expected claim structure, validation behavior, and save semantics are all missing. The description is inadequate for the 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?
At 73% coverage the schema entries are mostly bare defaults ('Default: false.'), not semantic explanations, and the two required free-form inputs (claims, datasheet_text) are undocumented — claims is even an array with an empty item schema. The description adds no meaning for any of the 11 parameters, e.g. the format claims should take or where datasheet_text comes from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb pair and resource: verify quoted datasheet values and build a structured material profile. It implicitly distinguishes itself from read_material_datasheet and list_ingested_materials by naming the 'ingested-materials library' as the destination, though it never names those siblings 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?
Only a gating condition is given ('Requires Kiln Business'); there is no guidance on when to use this versus read_material_datasheet (already-extracted data) or list_ingested_materials. Nothing explains when save should be true or when review_acknowledged matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_measurementC
Ingest a calibration measurement and update the per-machine profile.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | ||
| material | Yes | ||
| printer_id | Yes | ||
| measurement_kind | 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 does disclose a mutation side effect (updates the per-machine profile), but says nothing about whether that overwrites or accumulates, what permissions are needed, whether profile changes are reversible, or how invalid payloads are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, but it is under-sized for a four-parameter, schema-opaque mutation tool. Conciseness is achieved at the cost of necessary detail rather than through efficient packaging.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, 0% parameter descriptions, and a nested object payload mean the description is the only documentation channel, and it provides one sentence. An agent cannot determine accepted measurement kinds or the expected payload shape from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple 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% for four required parameters, including a free-form 'payload' object with additionalProperties. The description hints only loosely at measurement content and the machine ('printer_id'), and never explains 'measurement_kind' values or what 'material' denotes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Ingest a calibration measurement') plus the side effect ('update the per-machine profile'), so an agent knows what it does without opening the schema. It does not differentiate from calibration siblings such as record_calibration_correction or import_third_party_calibration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not guidance, and no mention of the many adjacent calibration tools (import_third_party_calibration, record_calibration_correction, apply_calibration_recommendations). The agent must infer timing and routing entirely from the tool name.
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 | Default: "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 provided, so the description carries the full burden. It usefully discloses that existing content is preserved ('without replacing it') and where inserted code lands ('end' before closing brace / 'start' after opening brace). It omits error behaviour (module not found, invalid code) and whether the change is applied to a copy or in place.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the key constraint (insert without replacing) before examples and args. Well structured with no filler sentences, though the example phrases are slightly redundant with each other.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 source-mutating tool with no annotations and no output schema, the description covers inputs and intent adequately but leaves gaps around failure modes, idempotency, and how it differs from modify_scad_module. Adequate but not complete for a mutation 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 only 25%, so the description must compensate, and it does: the Args block defines all four parameters and spells out the enum values for `position` ('end' vs 'start') with their brace-relative meaning and default. This adds real meaning beyond the schema, which only shows a terse 'Default: end'.
Input schemas describe structure but not intent. Descriptions should explain 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 (insert) and resource (code into an OpenSCAD module) plus a scope constraint: 'without replacing it.' Clear on its own, but it never names or contrasts with the obvious sibling `modify_scad_module`, so an agent must infer which of the two to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete example intents ('add ventilation holes to the top panel', 'add screw holes to the base'), which implies when to use it. However there is no explicit 'when not to use' and no routing to alternatives like modify_scad_module, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_designA
Render and analyze a 3D mesh — shaded previews, cross-section slices, raw measurements (volume, watertightness, dimensions), and a print-readiness verdict (Pro+). Channels are opt-in, results land in a manifest.json bundle.
Free tier: 3 inspections/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=inspect_design
| Name | Required | Description | Default |
|---|---|---|---|
| channels | No | ||
| mesh_path | Yes | ||
| bundle_dir | No | Default: "". | |
| product_type | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose real behavioral facts: channels are opt-in (so defaults are not the full set), results are written to a manifest.json bundle (an output/side-effect location), there is a 3-per-month free quota versus unlimited Pro, and one channel is Pro-gated. What is missing is whether this writes files to disk as a side effect and how the tier is enforced, but the quota and bundle behavior are genuinely useful 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 first sentence is front-loaded with the tool's capabilities and the second and third carry the operationally relevant tier constraints. The closing pricing URL is somewhat promotional and carries agent/tool tracking parameters, but it does encode real tier gating, so it is not pure waste. Overall tight and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description does the important work: it explains what the returned artifacts are, where they land (manifest.json bundle), and the tier limits that constrain invocation. The remaining gaps are the unexplained bundle_dir/product_type parameters and the unspecified default channel set, which is a modest shortfall rather than a failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the 'channels' parameter has an untyped item schema ({}) with no enum, so the schema cannot tell the agent what values are legal. The description partially compensates by naming the analyzable outputs (previews, cross-sections, measurements, verdict), which likely map to channel values, and by noting channels are 'opt-in'. It adds nothing for bundle_dir or product_type, both of which appear with only a default value and no meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair ('render and analyze') and resource ('3D mesh'), then enumerates the concrete outputs: shaded previews, cross-section slices, measurements (volume, watertightness, dimensions), and a print-readiness verdict. That is far more informative than a tautology. However, it never distinguishes itself from heavily overlapping siblings such as inspect_mesh_view, analyze_mesh_geometry, cross_section_view, or mesh_quality_scorecard, so an agent cannot tell from the text alone which of these to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no named alternative. The only routing signal is the tier gate ('print-readiness verdict (Pro+)' and 'Free tier: 3 inspections/month'), which tells the agent about eligibility but not about tool selection versus the many sibling mesh-inspection tools. Usage must be entirely inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_mesh_viewB
Agent-side inspection camera: still PNG frames of a mesh from any pose, for YOUR eyes.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "view". | |
| size | No | Default: 800. | |
| zoom | No | Default: 1.0. | |
| focus | No | ||
| yaw_deg | No | Default: 32.0. | |
| mesh_path | Yes | ||
| pitch_deg | No | Default: -18.0. | |
| focus_region | No | Default: "". | |
| section_frac | No | Default: 0.5. | |
| reference_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses the return artifact (still PNG frames) and the camera's pose flexibility, which compensates for the missing output schema. It does not state whether rendering writes files/caches, expected latency/cost, or that it is non-destructive, so the safety profile is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler; the core capability (PNG frames of a mesh) leads. The 'for YOUR eyes' flourish is stylistic but still conveys audience, so it earns its place without bloating the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with no annotations and no output schema, the description covers the output form and general purpose but leaves the richer parameters (mode, focus, focus_region, section_frac, reference_path) unexplained and offers no guidance on how this differs from the many sibling visualization tools. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% and all parameters carry defaults, so the baseline is 3. The only added meaning is 'from any pose', which loosely maps to yaw_deg/pitch_deg; nothing explains mode values, focus/focus_region, section_frac, or reference_path beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: rendering still PNG frames of a mesh from any pose, and adds the 'agent-side inspection camera' framing that separates it from user-facing renderers. However, in a sibling set dense with mesh-viewing tools (cross_section_view, render_design_mesh, visualize_model, diagnose_mesh), it does not name or differentiate against any of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for YOUR eyes' implies the context is the agent inspecting a mesh itself rather than producing deliverable imagery, which is a real usage hint. But there is no explicit when/when-not, no named alternative, and no mention of prerequisites for calling it, so usage remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intake_engineering_drawingC
Start a drawing intake: register the drawing and get its pages to read.
Kiln Business would check the extracted requirements against the selected machine and material, flag what needs review, and prepare recommendations for the quote. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=intake_engineering_drawing
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| file_path | 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 does disclose the Kiln Business entitlement requirement, which is valuable, but it says nothing about duplicate registrations, unsupported file types, permissions, or side effects. Worse, the middle paragraph describes capabilities ('would check the extracted requirements... prepare recommendations for the quote') that this tool does not perform, which can mislead an agent 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 one-line purpose is well front-loaded, but three of five lines are pricing/upsell copy and a marketing URL that do not help an agent invoke the tool. The description is padded rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, an undocumented required file_path, and an unclear return shape ('pages'), the description leaves the agent without enough to call it correctly or know what follows. It also never names the natural next step (e.g. submit_drawing_extraction).
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%, and the only documented parameter's description is 'Default: \"\"', which conveys almost nothing. The description never mentions file_path (required) or material, so it adds no meaning about accepted formats, path conventions, or how material affects intake.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: 'Start a drawing intake: register the drawing and get its pages to read', which tells an agent both the mutation (register) and the return (pages). It does not name or contrast itself with near siblings such as submit_drawing_extraction or assess_drawing_manufacturability, so it stops short of full 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?
'Start' implies this is the entry point of a drawing workflow, and the mention of checking extracted requirements hints at a later stage, so sequencing is implied. However, no alternative tool is named and no explicit when-not condition is given; the remaining lines are tier/upsell copy rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 the user has seen the print, and say WHICH door showed
it — ``door`` is required and is checked against what this server
itself recorded, never taken on your word:
1. ``door="stage"`` — the inline 3D stage (the MCP Apps panel that
opens on a make, which the user can orbit). This is the first and
best option. Accepted only when the panel actually fetched the
geometry for this file (or for the design mesh it was sliced from).
2. ``door="url"`` — a hosted viewer link. Use it when this host draws
no panel. Accepted only when ``show_on_stage(file_path)`` issued
a ``viewer_url`` for this file that is still live (its result
carries one on a host that draws no panel, while the machine is
signed in).
3. ``door="png"`` — the stage's own still (``visualize_model`` with
``renderer`` ``stage`` or ``stage_paint``). The total fallback.
Accepted only when such a render is on record AND the stage is
unavailable for a reason the server can name AND the link door
refused for a reason it recorded. A raw ``openscad`` render is
inspection-only and is refused; a PNG claim on a host that draws
the stage is refused and told to open the stage.
The user approves → you call this tool → you pass the returned token as
``preview_token`` to ``start_print`` (or any other tool that starts a
print) or ``fulfillment_order``. Without a valid token those tools
refuse (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.
door: ``"stage"``, ``"url"`` or ``"png"`` — which door the user
saw the print through. Verified against the server's record.
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``, ``door``, ``evidence`` and ``expires_at``
(unix timestamp); or a refusal whose message says which door to
open and to call this tool again.
| Name | Required | Description | Default |
|---|---|---|---|
| door | No | Default: "". | |
| file_path | Yes | ||
| printer_id | No | ||
| ttl_seconds | No | Default: 600. |
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 thoroughly: single-use tokens, TTL expiry, file-hash and printer scoping, server-side verification of the door claim, refusal messages, and the safety consequence of bypassing the gate.
Agents need to know what a tool does to the world before calling 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 and well structured with numbered doors, Args, and Returns sections. It is longer than typical but every sentence carries operational meaning; minor verbosity in the door explanations 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?
For a four-parameter mutation-adjacent safety tool with no annotations or output schema, the description covers purpose, preconditions, door verification logic, token lifecycle, parameter meanings, downstream usage, and return shape. 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?
Schema coverage is only 50%, but the description's Args section fully compensates: file_path is hashed to bind the token to bytes, door values are enumerated with acceptance conditions, printer_id scopes the token, and ttl_seconds defaults to 600 seconds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Issue a preview-confirmation token for a file about to be printed.' It clearly distinguishes this tool from siblings like start_print and fulfillment_order by explaining it is the safety gate those tools require.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 call this AFTER the user has seen the print, then details the three door options with when each is accepted and when each is refused. It also names the downstream tools that consume the token and the KILN_SKIP_PREVIEW_GATE exception.
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 | Default: 600. | |
| shipping_address | No | ||
| save_profile_name | No | Default: "". | |
| shipping_option_id | No | Default: "". | |
| set_default_profile | No | Default: false. | |
| save_profile_decision | No | Default: "". | |
| shipping_profile_name | No | Default: "". | |
| overwrite_saved_profile | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does well: token is single-use, default lifetime is 10 minutes, and issuance can persist a profile (overwrite_saved_profile, set_default_profile). It does not spell out failure modes (e.g. what happens if called twice, invalid quote_id) or that profile writes are side effects of token issuance.
Agents need to know what a tool does to the 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 purpose sentence, then two sentences of preconditions, then a compact Args block that is justified by nine parameters. No filler; each line adds operational 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 9-parameter, unannotated, output-schema-less mutation-adjacent tool, it covers preconditions, parameter sourcing, side effects on saved profiles, and TTL. The main gap is that the return value (the token itself and any expiry metadata) is never described, and the TTL default is duplicated between description and 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 78% but the schema only lists defaults, no enums or meanings. The Args block adds real semantics: quote_id originates from fulfillment_quote, shipping_option_id must be selected from the quote, shipping_profile_name is an alternative to shipping_address, and save_profile_decision is required when shipping_address is passed, with 'save' only after user consent. It omits the shape of shipping_address and does not constrain save_profile_decision 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?
States a specific verb and resource ('Issue a single-use token') plus the trigger condition ('after the user confirms shipping details'), and its downstream consumer ('fulfillment_order refuses to place an order without this token') distinguishes it from quote, profile, and order 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?
Explicit when-to-use gating: only after showing normalized contact/address and shipping option, asking about saving the profile, and receiving approval. It also names the alternative path implicitly (fulfillment_order cannot be called without this token), so an agent knows there is no bypass.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
iterate_decorationA
Create a new version of a saved decoration, archiving the current one (Kiln Pro).
Use this when tuning a decoration -- a new depth, mode, style or
content file -- and the previous version stays available for
``rollback_decoration``.
:param name: Decoration name or slug.
:param content_path: New content file (empty = keep current).
:param depth_mm: New depth in mm (0 = keep current).
:param mode: New mode (empty = keep current).
:param image_style: New image style (empty = keep current).
:param notes: Free-text notes for this iteration.
:returns: Dict with the new version and what changed.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "". | |
| name | Yes | ||
| notes | No | Default: "". | |
| depth_mm | No | Default: 0.0. | |
| image_style | No | Default: "". | |
| content_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses that the current version is archived (not overwritten), that the old version is recoverable, and that the feature is Kiln Pro-gated. It stops short of permissions, validation failures, or whether repeated calls stack versions, which are the remaining mutation-risk 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?
Front-loaded with what happens (new version + archive) before the usage guidance, which is the right ordering. The Sphinx :param:/:returns: block is slightly repetitive with the schema titles but still reads compactly; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with no output schema, the description covers the side effect, the recovery path, the license gate, and the return shape ("dict with the new version and what changed"). Only failure/validation behavior is unaddressed, which is a minor gap at 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 coverage is already 83%, but the description adds the critical semantics the schema omits: empty string or 0 means "keep current," which changes how an agent constructs the call rather than just labeling fields. It also clarifies name accepts a name or slug and that notes are free-text for this iteration.
Input schemas describe structure but not intent. Descriptions should explain 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 + resource: creates a new version of a saved decoration and archives the current one. It also names rollback_decoration as the counterpart path, so an agent can separate it from sibling mutation tools like save_decoration or apply_decoration without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this when tuning a decoration -- a new depth, mode, style or content file" gives an explicit trigger condition, and it states that the prior version remains reachable via rollback_decoration, which is the key alternative an agent would otherwise confuse it with.
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. The
result is also compared with any picture kept on the goal
(``reference_check``); where this install cannot read the
goal, ``reference_check`` says the result was not compared.
:returns: Dict with the best result and iteration history.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| brief_id | No | Default: "". | |
| material | No | Default: "". | |
| provider | No | Default: "openscad". | |
| printer_model | No | Default: "". | |
| max_iterations | No | Default: 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it discloses the loop structure, the max_iterations stop condition, the 'returns best result' contract, brief_id sidecar writing, and stage decimation. Remaining gaps (cost/time of iterations, failure modes) are minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core loop is front-loaded, but the entry carries substantial bloat: the inline 3D stage paragraph and especially the MAKE DOORS paragraph add length and introduce a competitor tool reference that muddies the tool's own positioning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 6-parameter loop tool with no output schema, the description covers the process, return shape ('dict with best result and iteration history'), and side effects such as the brief_id sidecar. It is largely complete, with only cost/latency expectations unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 already 83%, but the description meaningfully extends it, especially for brief_id (sidecar writing, reference_check, failure_history wiring) and max_iterations (1-5 range). It adds real semantic value beyond the terse 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 names a specific verb and process (generate -> validate -> improve -> regenerate) and states what the closed loop does. It is clear what the tool accomplishes, though it does not explicitly contrast itself with near-siblings like generate_model or 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?
It explains the loop's mechanics and stopping condition but gives limited explicit when-to-use guidance versus alternatives. The MAKE DOORS section even frames compile_scad, not iterate_design, as 'the make → preview → iterate loop,' which risks steering the agent to a different tool.
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, read from
the durable job store on THIS machine (``~/.kiln/queue.db``)
— a server restart does not shorten it. The response
declares its own SCOPE: ``scope.local.total_records`` gives
the store's full matching count when ``limit`` truncated the
page, other machines running Kiln keep their own histories,
and the response marks itself ``incomplete`` if the durable
store could not be read.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 20. | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that records come from a durable local store at ~/.kiln/queue.db, survive server restarts, are machine-local, and may be marked incomplete. It does not discuss permissions, authentication, or rate limits, but the durability and scope disclosures are 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 structured with Args and Returns sections and leads with the core purpose. It is somewhat verbose, but the detail about durability and scope is useful rather than 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?
There is no output schema and no annotations, so the description must explain returns and behavior. It does so by describing newest-to-oldest ordering, local durable storage, scope.local.total_records, and the incomplete marker, leaving only sibling differentiation and permission details unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%, so the description must compensate, and it does: it adds the max of 100 for limit and defines the allowed status values as completed, failed, or cancelled, along with the meaning of omitting status. This goes meaningfully beyond the sparse 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 uses a specific verb and resource: it gets the history of completed, failed, and cancelled print jobs. It clearly states what the tool returns, but it does not differentiate itself from closely related siblings such as print_history, failure_history, or job_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?
It explains how the status filter narrows results and that omitting status shows all finished jobs, which implies usage. However, it gives no explicit guidance on when to choose this tool instead of print_history, failure_history, queue_summary, 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_statusA
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,
plus ``watch`` when the scheduler is watching it: ``state`` is
``moving`` / ``stalled`` / ``no_contact`` / ``watching`` and ``note``
is the sentence to show a person when it is not moving.
| 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 behavioral burden. It does well by describing the return payload: the full job record with status, timing, metadata, and watch-state values like moving, stalled, no_contact, and watching, plus a human-readable note. It does not mention auth, polling behavior, or error cases, but the return format is unusually well 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 front-loaded with the core purpose and then uses structured Args/Returns sections. It is slightly verbose with formatting inherited from a docstring, but every part adds useful information about the parameter or return 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 single-parameter read operation with no output schema, the description is nearly complete: it explains the parameter source and describes the returned record and watch states. It could mention job-not-found behavior or polling guidance, but no critical gap prevents correct 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 explain the single parameter. It does: job_id is 'The job ID returned by submit_job,' which gives the agent the origin and expected format of the 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 specific verb and resource: getting the status of a queued or completed print job. It also names the source of the job_id via submit_job, but it does not explicitly distinguish this tool from close siblings such as job_history or 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 phrase 'job ID returned by submit_job' implies usage after submission, and 'queued or completed' scopes the job state. However, it does not explicitly say when to use this tool versus job_history, queue_summary, or fleet_job_status, leaving alternative selection implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_designA
Keep a make that Kiln's servers built: save its file to this computer.
A make from one of Kiln's served tools (a coaster, a textured part,
a decorated model) is built on Kiln's servers and shown on the
stage. Looking at it and changing it are free. Call this when the
user wants to KEEP it: to slice, print or export it. It saves the
full-quality file on this computer and returns its path
(``mesh_path``), which every local tool takes.
On the Free plan a keep counts toward that kind of make's monthly
allowance, and the answer says how many are left (``keep``). Paid
plans keep without limit. A make is only ever counted once.
Args:
artifact_token: The token of the make to keep. It is in the
make's own answer, under ``made_on_kiln_servers``.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_token | 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 discloses key behavior: full-quality local file saving, returned mesh_path, Free-plan quota counting, remaining keep count, paid unlimited keeps, and once-only counting. It does not cover auth requirements, overwrite behavior, or local filesystem 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 front-loaded with the core action and then adds usage, billing, and parameter details in a logical order. It is somewhat long, but nearly every sentence earns its place by clarifying behavior an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a billing-sensitive one-parameter operation, the description is complete enough to call correctly: it explains the action, when to use it, the return path, and quota implications. Minor gaps remain around permissions and 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 single parameter has 0% schema description coverage, but the description explains that artifact_token identifies the make to keep and where to find it: in the make answer under made_on_kiln_servers. It could add token format details, but it compensates well for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: keep a make built on Kiln's servers and save its file to this computer. It distinguishes keeping from merely looking at or changing a make, though it does not explicitly name sibling tools such as keep_painted_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clearly says to call this when the user wants to keep a make for slicing, printing, or exporting, and notes that viewing and changing are free. It does not name alternative tools or spell out when not to use this tool, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_painted_detailC
Keep a model's painted-on detail when it prints. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 textures/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=keep_painted_detail
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| invert | No | Default: false. | |
| depth_mm | No | Default: 0.6. | |
| design_id | No | Default: "". | |
| model_path | Yes | ||
| output_path | No | Default: "". | |
| target_edge_mm | No | Default: 1.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose useful context — a 3 textures/month free-tier cap, an upgrade URL, and automatic decimation of oversized meshes for the stage — but it never says whether the input model is mutated in place, what output_path receives, whether a license/credit is consumed beyond quota, or what the caller gets back 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 first sentence is well front-loaded, but the inline 3D stage is described twice — once in the opening paragraph and again at length in the ALL-CAPS INLINE 3D STAGE section — plus a promotional pricing URL. A meaningful share of the text is duplicative marketing rather than invocation 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 six-parameter mesh operation with no annotations and no output schema, the definition is incomplete. It omits the core transformation semantics, the meaning of five optional parameters, mutation/return behavior, and dependency on license tier, spending most of its length on the viewer stage instead.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 83%, but those descriptions are nearly empty ("Default: false.", "Default: 0.6.") with no semantic content, and `model_path` has none at all. Baseline 3 applies at high coverage, and the description adds no parameter meaning of its own to lift 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 opening sentence gives a concrete verb and resource — preserving painted-on detail through printing — which is distinguishable from nearby siblings like recover_texture_detail or apply_geometric_texture. However, it never explains the mechanism (embossing? depth carving?) so the agent knows the goal but not quite what transformation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use framing, no alternatives named, and no prerequisites or exclusions. Nothing tells the agent when to pick this over the many other decoration/texture-preservation siblings, and the free-tier quota is stated as a fact rather than a selection condition.
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_monitor_controlA
Internal support for Kiln's inline print monitor.
Relays a pause, resume, or cancel from the panel's own buttons
through the same doors the pause_print, resume_print and
cancel_print tools open. Called by the panel itself; not
useful to call directly.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| 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 behavioral burden. It discloses that the tool relays pause/resume/cancel actions, but does not describe side effects, permissions, reversibility, or whether cancel is destructive, leaving meaningful gaps for a mutation-like control tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, first identifying the tool's role and then immediately stating the critical usage limitation. Every sentence adds useful information 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?
For an internal-only tool meant to be invoked by the panel, the description sufficiently communicates that agents should not call it directly. However, with no output schema and 0% parameter description coverage, it leaves the two input parameters undocumented for any caller that does need to 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 description coverage is 0%, so the description must compensate, but it does not mention the 'action' or 'printer_name' parameters at all. It implicitly names pause, resume, and cancel as valid actions, but does not map these to the action parameter or explain the nullable printer_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?
States a specific verb and resource: it relays pause, resume, or cancel commands from the Kiln inline print monitor panel. It also explicitly distinguishes itself from the pause_print, resume_print, and cancel_print sibling tools by saying it uses the 'same doors' those tools open.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 it is called by the panel itself and is 'not useful to call directly,' which is clear when-not-to-use guidance. It also names the sibling tools whose functionality it mirrors, giving the agent obvious alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_monitor_snapshotB
Internal support for Kiln's inline print monitor.
Returns the composed printer snapshot the rendered panel polls. Called by the panel itself; not useful to call directly.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | No | ||
| include_video | No | Default: false. | |
| include_camera | No | Default: false. | |
| include_capabilities | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that this is internal support polled by the rendered panel and therefore not intended for direct use, which implies a read-oriented internal call. However, it does not state permissions, side effects, rate-limit behavior, or what the returned snapshot includes, leaving notable gaps for an unannotated 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 three short sentences and is front-loaded with the internal-support context. The second and third sentences add the return behavior and the direct-use warning, though there is mild overlap between 'internal support' and 'called by the panel itself.' It is appropriately sized with no wasted 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?
For an internal panel-support tool with no output schema and no annotations, the description does enough to warn agents away from direct use. It is still incomplete regarding the four parameters, the snapshot contents, and return behavior, but the central consumption warning 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?
There are four parameters with 75% schema description coverage, and the description adds no parameter-level meaning. The schema already documents the three include_* booleans as defaulting to false, but printer_name has no description in either the schema or the tool description. The description therefore does not compensate for the remaining 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 states a specific verb and resource: it 'Returns the composed printer snapshot the rendered panel polls.' That is clear enough to understand what the tool does, and the note about internal panel use distinguishes it from more general printer snapshot or monitoring tools. It stops short of explaining what the composed snapshot contains, but the core purpose is legible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 strong when-not-to-use signal: 'Called by the panel itself; not useful to call directly.' This is explicit guidance against direct agent invocation. It does not name an alternative tool to use instead, which keeps it from a 5, but the exclusion 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.
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.
kiln_spend_caps_confirm_changeA
Confirm a cap change with the person's six-digit code (step 2 of 2).
Args:
challenge_id: From ``kiln_spend_caps_request_change``.
totp_code: The six-digit code the PERSON reads from their own
authenticator app. Never produce or guess it.
Returns the new caps on success. A refusal names its case: a
wrong code (they may try again within the daily limit), a
challenge that expired or was already used (ask again from step
1), no authenticator set up on the account, or too many attempts.
| Name | Required | Description | Default |
|---|---|---|---|
| totp_code | Yes | ||
| challenge_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 provided, the description carries the behavioral burden well. It discloses that a person must provide the code and the agent must never produce or guess it, and it enumerates refusal cases including wrong code, expired/used challenge, missing authenticator setup, and too many attempts.
Agents need to know what a tool does to the world before calling 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 action and step context, then provides compact argument guidance and failure outcomes. Every sentence adds useful information without 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 two-step confirmation tool with no annotations and an existing output schema, the description supplies the necessary invocation context: prerequisite tool, parameter sourcing, safety constraint, success behavior, and failure cases. Nothing essential for correct use is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define the parameters, and it does: challenge_id is sourced from kiln_spend_caps_request_change, and totp_code is the six-digit code read by the person from their authenticator app. It also adds the critical constraint not to generate or guess the code.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: confirm a cap change using a six-digit code, and identifies this as step 2 of 2. This distinguishes it clearly from the related request-change step and other spend-cap tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says this is step 2 of 2 and that challenge_id comes from kiln_spend_caps_request_change. It also gives routing guidance for failures, including asking again from step 1 when a challenge expired or was already used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_spend_caps_confirm_order_approvalA
Confirm a one-order approval with the person's code (step 2 of 2).
On success returns an ``approval_token``: pass it to the order
tool when placing that order again. It works once, for that
order and amount, and expires within minutes.
Args:
challenge_id: From ``kiln_spend_caps_request_order_approval``.
totp_code: The six-digit code the PERSON reads from their own
authenticator app. Never produce or guess it.
| Name | Required | Description | Default |
|---|---|---|---|
| totp_code | Yes | ||
| challenge_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, and the description carries the full burden well: it discloses the single-use token, its binding to a specific order and amount, and its minutes-long expiry. It also warns the agent never to produce or guess the TOTP code, which is critical safety 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?
Front-loaded with the action and step number, then the return contract and token lifetime, then the parameter meanings. Every sentence adds information relevant to correct invocation; 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?
Despite an output schema existing, the description adds the non-obvious semantics of the returned token (single use, scoped, short-lived) and the security constraint on the code. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: challenge_id is traced to the originating request tool, and totp_code is defined as the six-digit code the person reads from their own authenticator, with an explicit prohibition on generating 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?
States a specific verb and resource ('Confirm a one-order approval with the person's code') and positions itself as 'step 2 of 2', naming the sibling tool that produces the challenge. An agent can distinguish it from kiln_spend_caps_request_order_approval without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states the sequencing (step 2 of 2), where the challenge_id comes from, and what to do with the returned token ('pass it to the order tool when placing that order again'). It does not explicitly say when not to call it, but the workflow context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_spend_caps_request_changeA
Ask to raise the per-order and/or monthly spend cap (step 1 of 2).
The servers hold the requested change for a few minutes and
return a ``challenge_id``. Show the person ``current_caps`` and
``requested_caps`` so they can review the change, then ask them
for the six-digit code from their authenticator app and pass it
to ``kiln_spend_caps_confirm_change``.
Args:
per_order_dollars: New per-order cap; leave unset to keep it.
monthly_dollars: New monthly cap; leave unset to keep it.
reason: Optional note kept with the change.
A refusal says which case it is (chat changes turned off, with
``enable_url``; too many attempts, with ``retry_after_seconds``;
a cap below the minimum). Relay it as written.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| monthly_dollars | No | ||
| per_order_dollars | 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 behavioral burden and does so well: it discloses that the server holds the change for a few minutes, returns a challenge_id, and may refuse with case-specific details such as enable_url or retry_after_seconds that must be relayed as 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 the purpose and two-step flow, then gives parameter meanings and refusal behavior. It is information-dense with little waste, though the indented prose and Args formatting make it slightly less scannable than an ideal short definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 parameter descriptions in the schema, the description supplies the workflow, parameter semantics, refusal cases, and the needed handoff to confirmation. Because an output schema exists, it need not further explain return fields, and nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description documents all three parameters: per_order_dollars and monthly_dollars set new caps and may be left unset to keep existing values, while reason is an optional note. This fully compensates for the schema’s lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: raising the per-order and/or monthly spend cap. It explicitly frames this as step 1 of 2 and names the confirmation sibling, so an agent can distinguish it from kiln_spend_caps_confirm_change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clearly explains the two-step flow and routes the agent to kiln_spend_caps_confirm_change after review and authenticator-code entry. It does not explicitly state when not to use this tool or how it differs from kiln_spend_caps_request_order_approval, but the context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_spend_caps_request_order_approvalA
Ask to approve ONE order over the cap (step 1 of 2).
For an order Kiln refused as over the person's spend cap, when
they want this order to go ahead without raising the cap for
good. Returns a ``challenge_id``; step 2 is
``kiln_spend_caps_confirm_order_approval`` with their code.
Args:
order_id: The order Kiln refused.
max_dollars: The order total being approved, in dollars.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | ||
| max_dollars | 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 exist, so the description carries the full burden. It does disclose the important two-step flow and that a challenge_id is returned, but omits authorization requirements (whose order, which role), whether the pending challenge expires, and whether repeated calls are idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the step/2 marker, then the condition, then the return/next-step. The condition sentence partially restates the first sentence, and the 'Args:' block format is slightly verbose, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be fully explained, yet the description still notes the challenge_id and the follow-up tool, which is the critical handoff. It is short of complete only on permission/expiry behavior for a mutation-style two-step approval.
Complex tools with many parameters or behaviors need more documentation. Simple 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: order_id is defined as the specific refused order, and max_dollars is clarified as the order total being approved (not a new cap), which resolves a genuine ambiguity. Still lacks any format or validation hints.
Input schemas describe structure but not intent. Descriptions should explain 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 action (request approval for a single over-cap order) and distinguishes itself from siblings by naming step 2 (kiln_spend_caps_confirm_order_approval) and by contrasting with raising the cap 'for good' (i.e., kiln_spend_caps_request_change). An agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear triggering condition: Kiln already refused the order for exceeding the person's spend cap, and the user wants a one-off approval rather than a permanent cap change. It doesn't explicitly say when NOT to use it or name the alternative tool as a contrast, but the 'without raising the cap for good' phrasing makes the distinction inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_spend_caps_showA
Show your current Kiln spend caps and whether chat may change them.
Returns the per-order and monthly caps, the defaults, and
``agent_flow_enabled``. When that is off the answer carries a
``next_step`` with the web page where the account owner turns it
on; give the person that link as written, because turning it on
cannot be done from chat.
Needs a signed-in session: call ``kiln_signin`` first.
| 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 carries the full load and does so well: it declares the auth prerequisite, discloses what the response contains (per-order and monthly caps, defaults, agent_flow_enabled), and warns that a conditional next_step field will appear. The instruction to give the link 'as written' because enabling cannot be done from chat is exactly the kind of non-obvious operational context annotations could never 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?
Front-loaded with the core purpose, then behavior, then the auth prerequisite in order of what an agent needs. Slightly verbose in the middle paragraph and the indented formatting is odd, but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be enumerated, yet the description still summarizes the key fields and, more importantly, flags the conditional next_step and the verbatim-relay rule. Combined with the auth prerequisite, nothing an agent needs to call and act on this tool 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 tool takes zero parameters, so there is nothing to document; the description correctly spends no words on inputs. Baseline of 4 applies for a no-parameter tool, with no gaps introduced.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource (show spend caps) and adds a scope qualifier ('whether chat may change them') that implicitly separates it from the kiln_spend_caps_request_change / confirm_change siblings. It never names a sibling outright, so an agent must infer the boundary, but the purpose itself is 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 establishes a clear precondition ('Needs a signed-in session: call kiln_signin first') and routes the agent: when agent_flow_enabled is off, hand the returned link to the user rather than trying to fix it in chat. It does not explicitly state when to prefer the request/confirm_change siblings, so the change-path guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kiln_viewer_payloadA
Internal support for Kiln's inline 3D viewer.
Returns the viewer-grade mesh payload for a token the viewer was handed. Called by the rendered panel itself; not useful to call directly.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_token | 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. It discloses the call context (invoked by the rendered panel, intended as internal support) but says nothing about side effects, whether it is a pure read, token validity/expiry, or failure behavior. For a one-parameter internal read tool this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, purpose stated first, then return value, then the do-not-call caveat. Slight overlap between 'Internal support' and 'Called by the rendered panel itself', but nothing is padded and the key warning is not buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 say more about what the payload contains and what a caller sees on a bad token. It does deliver the single most important fact for an agent — that this tool is not meant for direct invocation — which makes it adequate rather than inadequate for an internal helper.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter is titled only 'Artifact Token', so the description must compensate. It partially does by clarifying provenance — the token is one 'the viewer was handed' — but gives no format, source, or lifetime details. This is the minimum viable for a one-param 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 names a specific verb and resource: it 'Returns the viewer-grade mesh payload for a token the viewer was handed.' It also self-identifies as internal support for Kiln's inline 3D viewer, which separates it from the many mesh/render siblings (render_design_mesh, visualize_model, inspect_mesh_view). 'Viewer-grade mesh payload' is jargon, but the operation 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?
It gives explicit when-not guidance: 'Called by the rendered panel itself; not useful to call directly.' That is unusually strong routing signal for an agent deciding whether to invoke it. It does not name an alternative tool an agent should use instead, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
license_status_liveB
Return live tier / status / expiry for the current Kiln caller by hitting the server (revocation-aware).
| Name | Required | Description | Default |
|---|---|---|---|
| license_key | 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 disclose two real traits: it performs a server round-trip and it is revocation-aware. It omits other behaviorally important facts such as auth requirements, latency/cost of the server hit, failure behavior when the server is unreachable, and whether results are cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the distinguishing qualifier arrives immediately after the core claim. It could be slightly tighter, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description covers what is returned at a high level (tier, status, expiry) and notes the live/revocation-aware behavior. It is still thin on the optional license_key parameter and on operational behavior (auth, server unavailability), which matter for a server-hitting call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is one parameter, license_key, which the description never mentions. The phrase 'current Kiln caller' hints that identity may come from the session, but the description does not say what passing license_key does versus omitting it, so the only parameter's semantics are left unaddressed in both schema and 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 states a specific verb-and-resource pair (return tier/status/expiry for the current Kiln caller) and adds a distinguishing qualifier, 'live ... by hitting the server (revocation-aware)'. That implicitly separates it from the sibling license_status, but it never names that sibling or states the contrast explicitly, so an agent must infer 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?
Usage is only implied: the words 'live' and 'revocation-aware' suggest calling this when a freshly checked, revocation-aware answer is needed rather than a cached one. It does not say when to prefer it over license_status or check_my_tier, nor when not to call it (for example, on every turn vs only on suspicion of revocation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_approval_gatesB
List every configured approval gate, optionally filtered. Business+ tier.
Kiln Business would open the change for team review, apply your approval gates, and record who signed off. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_approval_gates
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | No | ||
| artifact_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 burden. It does disclose an entitlement gate (Business tier required), which is real behavioral value, but gives no output shape, pagination, or error behavior when the tier check fails, and one sentence is upsell narrative rather than tool 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 core action is front-loaded in the first sentence, which is good. But roughly half the text is upsell copy and a pricing URL that does not help an agent decide or invoke, and the tier requirement is repeated 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?
Two undocumented parameters, no annotations, and no output schema, yet the description says nothing about the returned gate objects or filter semantics. For a list tool the agent has no idea what fields come back or how to narrow results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for artifact_id and artifact_type, and the description compensates only with the phrase "optionally filtered." It never explains what the filters scope to, whether artifact_type constrains artifact_id, or what happens if both are omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A clear verb plus resource ("List every configured approval gate") with a note that filtering is optional. It does not name or differentiate from the obvious siblings set_approval_gate / remove_approval_gate, so the agent must infer that this is the read-only counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tier prerequisite ("Requires Kiln Business", "Business+ tier") is stated twice and is genuinely useful gating context. Beyond that there is no when-to-use guidance: nothing says to call this before set_approval_gate, whether an empty result is normal, or what to do without a Business tier.
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_bisect_sessionsC
List active bisect sessions, optionally filtered by artifact type (design / preset / feature).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_bisect_sessions
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_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 behavioral burden, and it does little: 'active' hints at a filtering behavior, but there is no statement about read-only safety, authorization, tier gating, or what a session record contains. The trailing marketing block implies a Kiln Pro requirement without clarifying whether this specific tool is gated, which actively muddies the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but it is followed by three lines of unrelated upsell copy (calibration, textures, upgrade URL) that consume roughly three-quarters of the text and add zero operational value. The useful content is drowned by advertising.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must convey what comes back, and it does not — no mention of session fields, ordering, or pagination. For a single-optional-param list tool the schema is thin enough that one more sentence on return shape would have closed the 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% and artifact_type is a bare string with no title or enum, but the description supplies the three accepted values (design / preset / feature), which is real added meaning. It stops there, though — nothing about case sensitivity, default behavior when omitted, or whether values outside the set error or return 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?
The opening sentence names a specific verb and resource ("List active bisect sessions") and scopes it with an optional artifact-type filter, which separates it from the bisect_start/bisect_good/bisect_bad action siblings. It does not explicitly name which sibling to use instead, but the purpose itself 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 says what the tool lists but never states when an agent should reach for it versus the surrounding bisect workflow tools (bisect_current, bisect_start, bisect_end), nor any prerequisite such as an in-progress session. Usage is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cached_designsA
List cached designs, optionally filtered by material.
Args:
material: Filter by material (e.g. "PLA", "PETG").
limit: Maximum number of results.
Most recently used designs come first.
The response declares its ``scope``: which store was read.
The cache is local-only at every tier (regenerable files,
no cloud copy), so a complete local read is the whole
cache.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 50. | |
| material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so reasonably well: ordering is disclosed ("Most recently used designs come first"), the response is said to declare its ``scope``, and the cache is characterized as local-only/regenerable with no cloud copy. It stops short of stating whether the read is side-effect free or what happens when the cache is empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and filter, then ordering, then scope semantics. The final two-line note about the local-only cache is slightly padded but carries real decision-relevant information, so 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?
No output schema exists, and the description compensates by explaining the ``scope`` field and the pagination/size signal via limit. What is missing is very little: behavior on an empty or cold cache, and whether total counts are returned.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: limit is documented in the schema (default 50) and material has no schema description. The description partially compensates by giving material examples ("PLA", "PETG") and glossing limit as "Maximum number of results", but adds no default or range detail beyond the args block.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List cached designs") plus the optional filter dimension, which is more precise than the bare name. It does not explicitly distinguish itself from nearby siblings such as list_designs, list_cached_models, or search_cached_models, so an agent still has to infer which listing to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Optionally filtered by material" implies when the material argument is useful, and the local-only note implies a complete-read use case. There is no explicit when-to-use/when-not guidance and no named alternative (e.g. versus list_designs for full design records or search_cached_models for name search).
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.
The response declares its ``scope``: this cache is local to
this machine, so the count is what THIS install has cached,
not everything the user has ever downloaded or generated.
It is also a page — ``limit``/``offset`` bound it further.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 50. | |
| offset | No | Default: 0. |
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 add real behavioral value: newest-first ordering, the limit/offset paging model, and the important scope caveat that counts reflect THIS install's cache rather than everything the user has downloaded. It still omits auth requirements, rate limits, and any sense of result shape or total-count 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 lead sentence is well front-loaded, but the Args block duplicates what the schema already says and the scope paragraph is bloated ('not everything the user has ever downloaded or generated'). Roughly a third of the text does not earn 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 two-param, read-only list tool with no annotations and no output schema, the description covers ordering, pagination, and the crucial scope caveat, which is nearly everything an agent needs. Only auth/pagination-limit behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description's Args block merely restates the same defaults the schema provides, adding no semantics beyond it, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List all models in the local cache') plus the sort order ('newest first'), which is exactly what an agent needs. It does not explicitly distinguish itself from the nearby siblings search_cached_models, get_cached_model, or list_cached_designs, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope note ('this cache is local to this machine') implicitly tells the agent this is an inventory-browsing tool, not a filtered search, but no explicit when-to-use/when-not or alternative (e.g., search_cached_models for querying) is named. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cherry_pick_candidatesC
Enumerate the semantic modifications cherry-pickable from source_version_id relative to ancestor_version_id.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_cherry_pick_candidates
| Name | Required | Description | Default |
|---|---|---|---|
| source_version_id | Yes | ||
| ancestor_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 behavioral burden. It implies a read-only enumeration and mentions a Pro tier requirement, but does not describe output shape, pagination, ordering, or whether the result excludes already-picked changes. The Pro/upsell text is relevant but poorly integrated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful first sentence is followed by three lines of unrelated product marketing and an upgrade URL. The critical purpose is front-loaded, but a substantial portion of the description does not help an agent select or invoke 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?
For a two-parameter list tool with no output schema and no annotations, the description leaves key gaps: return values, ordering, pagination, and differentiation from sibling cherry-pick candidate tools. The Pro-tier note is useful but does not compensate for the missing operational 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 for two undocumented required parameters. It does clarify that the enumeration is from source_version_id relative to ancestor_version_id, which adds some directional meaning, but it does not explain ID formats, ancestry requirements, or validation 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 opening sentence names a specific verb ("Enumerate") and resource ("semantic modifications cherry-pickable") and references both required IDs. However, "semantic modifications" is vague and does not distinguish this generic tool from close siblings like list_feature_cherry_pick_candidates or list_decoration_cherry_pick_candidates. The trailing marketing copy adds noise without clarifying scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as list_feature_cherry_pick_candidates, list_decoration_cherry_pick_candidates, or the cherry_pick_* mutation tools. The only implied guidance is that it enumerates candidates, which is already evident from the name.
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_custom_palettesC
List all saved custom color palettes.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_custom_palettes
| 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 behavioral burden and does not meet it: nothing about whether the list is scoped to a user/org, whether it can be empty, pagination, or return shape. Worse, the embedded 'Everything in Free... Requires Kiln Pro' marketing text leaves it ambiguous whether listing palettes is itself gated, which could deter a legitimate 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 true purpose is one short sentence; the next three lines are promotional copy and an upgrade URL that earn no place in a tool definition. Front-loading is correct, but roughly three-quarters of the text is waste that competes with the actual instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a trivial no-parameter list tool with no output schema, so the description should at minimum say what a palette contains or how results are scoped. Instead it spends its length on tier advertising, leaving the agent with less usable context than the one-line summary alone would provide.
Complex tools with many parameters or behaviors need more documentation. 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 there is nothing for the description to disambiguate and a baseline of 4 applies. The description does not misrepresent any inputs.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — 'List all saved custom color palettes' — which is unambiguous about what the call returns. It does not distinguish itself from the nearby siblings save_custom_palette, delete_custom_palette, or push_palettes_to_cloud, so an agent gets the purpose but not the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the palette-related siblings, no prerequisite, and no note about local versus cloud palettes. The remaining sentences are an upsell pitch rather than guidance, so the agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decoratable_facesC
List a product's decoratable faces and the decorate_surface face= value for each.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoratable_faces
| Name | Required | Description | Default |
|---|---|---|---|
| product_type | 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 never states that this is a read-only, side-effect-free lookup or what permissions/tier it needs. The bulk of the text is a Kiln Pro upgrade pitch whose relationship to this specific tool is unclear — it could be read as gating this tool behind Pro, which is misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well-formed and front-loaded, but three of the four sentences are marketing copy ('Everything in Free, plus calibration...', 'Upgrade: https://...') that adds nothing to tool selection and buries the useful 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?
With no output schema, the description does helpfully sketch the return contents (faces plus their `face=` values), which is real value. But the sole parameter is undocumented and the tier/eligibility implication of the upsell paragraph is left dangling, so an agent cannot fully reason about when this call is valid.
Complex tools with many parameters or behaviors need more documentation. 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 is one required parameter, `product_type`, with 0% schema description coverage, and the description says nothing about it — no valid values, no pointer to `list_product_types`, no format. The description must compensate here and 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 first sentence states a specific verb and resource ('List a product's decoratable faces') and adds the useful detail that each entry carries the `face=` value consumed by `decorate_surface`. It does not, however, distinguish itself from the sibling `get_product_faces`, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The reference to `decorate_surface`'s `face=` parameter implies this is a prerequisite lookup before decorating, but usage is never stated explicitly. There is no guidance on when to pick this over `get_product_faces`, `describe_face`, or `list_product_types`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decoration_cherry_pick_candidatesC
Enumerate field-level modifications cherry-pickable from source.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoration_cherry_pick_candidates
| Name | Required | Description | Default |
|---|---|---|---|
| source_preset_version_id | Yes | ||
| ancestor_preset_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full behavioral burden, yet it discloses only the Kiln Pro requirement. It says nothing about read-only intent, what the enumeration returns, or whether the two version IDs must be related — the remaining text is a promotional upsell.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence purpose is front-loaded, but roughly two-thirds of the text is product marketing and a pricing URL that does not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-required-parameter diff tool with no annotations and no output schema, the definition lacks the base-vs-source semantics, the shape of the returned candidates, and how it relates to the cherry_pick_* tools that consume its 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% with two required string parameters (ancestor_preset_version_id, source_preset_version_id). The description does not explain that one is the diff base and the other the branch being cherry-picked from, which is exactly the ambiguity an agent would hit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Enumerate field-level modifications cherry-pickable from source" gives a specific verb and resource, but it drops the decoration qualifier that distinguishes it from siblings like list_cherry_pick_candidates and list_feature_cherry_pick_candidates. The agent must infer 'decoration' from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus list_cherry_pick_candidates or cherry_pick_decoration_modification, nor any prerequisite beyond an implicit tier gate. The only conditional context is that Kiln Pro is required, which tells the agent nothing about scenario selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decoration_preset_branchesC
List the branches of a decoration preset.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoration_preset_branches
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | Yes | ||
| include_retired | No | Default: false. |
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 never states that this is a read-only listing, whether retired branches are excluded by default, or how results are ordered/paginated. The only behavioral claim is the vague entitlement line 'Requires Kiln Pro,' which is buried in marketing copy and not framed as a permission prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is correctly front-loaded, but roughly three quarters of the text is promotional boilerplate and an upgrade URL that do not help an agent select or invoke the tool. The useful content is one line padded with sales copy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 listing tool with no annotations and no output schema, the description should at minimum explain preset_id semantics and default retirement filtering. It omits both, leaving the agent unable to distinguish this call from neighboring branch/release/version listers.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: 'preset_id' has no schema description and the description never explains what identifier it expects, while 'include_retired' is only documented as 'Default: false.' The description does not compensate for the undocumented half of the parameters, so it adds no 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 opening sentence gives a specific verb and resource: 'List the branches of a decoration preset.' The 'decoration preset' qualifier implicitly separates it from sibling list_design_branches / list_feature_branches, but no sibling is named and there is no scope detail (active vs retired, pagination) to make the distinction 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?
There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. The remaining sentences are tier/upsell messaging ('Requires Kiln Pro. Upgrade: ...'), which tells the agent nothing about when to call this tool versus list_decoration_preset_versions, list_decoration_preset_releases, or cloud_list_remote_branches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decoration_preset_releasesC
List signed decoration-preset releases — and the id needed to apply one.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoration_preset_releases
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | No | ||
| include_retired | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the tool requires Kiln Pro and that the releases are signed, but it does not clarify read-only behavior, pagination, return shape, or what happens for non-Pro callers. The marketing copy also distracts from 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 first sentence is front-loaded and useful. The following lines are promotional copy about Free versus Pro features and an upgrade URL, which do not help an agent select or invoke the tool and add substantial noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 for a tool with no annotations, no output schema, and one undocumented parameter. It omits return-value expectations, filtering behavior, default handling, and practical distinctions from nearby listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are two parameters and only 50% schema description coverage. The description does not explain the preset_id filter or the include_retired option; only include_retired has a schema-level default note. It therefore fails to compensate for the undocumented 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 first sentence gives a specific verb and resource: list signed decoration-preset releases. It also notes the practical purpose of obtaining the id needed to apply one. It does not explicitly distinguish this from sibling listing tools such as list_decoration_preset_versions or list_decoration_presets, but the signed-release scope 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 phrase 'and the id needed to apply one' implies this should be used before applying a decoration preset. The Pro requirement is stated, but there is no explicit guidance on when to use this versus related list methods, nor 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_decoration_presetsC
List the latest version of every decoration preset.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoration_presets
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | No | ||
| portfolio_only | No | Default: false. | |
| include_archived | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavior, and it does disclose one meaningful constraint: 'Requires Kiln Pro' with an upgrade path — useful gating information an agent cannot get from the schema. However, it says nothing about ordering, whether archived presets are excluded (only implied by a param default), pagination, or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is efficient and front-loaded, but the second paragraph is marketing copy ('Kiln Pro would save this as a reusable feature…') plus an upgrade URL that consumes roughly half the text without helping the agent invoke 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?
No output schema exists, so the description should characterize the returned list (fields, ordering, version identity) and the role of design_id; it does neither. The entitlement note is the only behavioral fact supplied for a tool with three undocumented-in-prose 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 coverage is 67%, and the single most consequential parameter, design_id, has no description anywhere and is never mentioned in the tool description — it is unclear whether it scopes the list to a design or is ignored. The description adds zero meaning beyond the two boolean defaults already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource with a scope qualifier ('latest version of every decoration preset'), which implicitly contrasts with all-versions listing. It never names the closely related siblings (list_decoration_preset_versions, list_decoration_preset_releases, get_decoration_preset), so an agent must infer the 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?
There is no guidance on when to call this versus the many preset-related siblings; the only stated condition is the Kiln Pro entitlement. No mention of when to set design_id or portfolio_only, or when to prefer a versions/releases listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_decoration_preset_versionsC
List every saved version of one decoration preset, oldest first.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_decoration_preset_versions
| Name | Required | Description | Default |
|---|---|---|---|
| preset_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry some real behavioral burden: it discloses the sort order (oldest first) and a tier gate ('Requires Kiln Pro'), which tells the agent the call may fail for Free accounts. However, it omits pagination, whether archived/branch versions are included, and what fields a version record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single functional sentence is front-loaded and useful, but roughly two-thirds of the description is marketing copy and an upgrade URL that does not help an agent invoke the tool. The tier requirement could be stated in one clause instead of a feature list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool with no output schema, the description covers purpose, ordering, and the tier gate, which is the minimum an agent needs. It still lacks pagination/volume expectations and any hint of the returned version structure, which matters given 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?
Only one parameter (preset_id) with 0% schema description coverage, so the description must compensate. 'One decoration preset' implies the parameter scopes to a single preset, but it never states the expected ID format or how to obtain a valid preset_id (e.g., from list_decoration_presets).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List every saved version of one decoration preset') and adds the ordering ('oldest first'). It does not distinguish itself from near-siblings like get_decoration_preset, list_decoration_preset_branches, or the analogous list_design_versions/list_feature_versions, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus the other preset-listing and version-listing tools in the sibling set. The only conditional content is a tier/upgrade pitch, not usage guidance.
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.
The response declares its own SCOPE. The library is
local-only at every tier — the web's /decorations pages are
the decoration PRESET store above, not a cloud copy of this
one — so a complete local read here is the whole library,
and ``scope`` says exactly that.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Default: "". | |
| category | No | Default: "". | |
| content_type | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does so well: it discloses the adaptation semantics (each success stores proven settings per material), that no version history is kept, that the library is local-only at every tier, and that the response self-declares scope. It does not cover auth, limits, or ordering, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then filters, then the preset contrast. It is longer than needed — the adapts/remembers contrast is restated in both the preset paragraph and the summary line, and the scope paragraph is a bit discursive — but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return (dict with count and list) plus the scope field. Combined with filter semantics and sibling disambiguation, an agent has everything needed to select and 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?
Schema coverage is 100% (baseline 3), but the description adds real meaning the schema lacks: accepted content_type values (photo, svg, qr, text, procedural_texture, ai_texture) and the category mapping (surface vs. texture), plus the empty-string = show all convention. The schema declares no enums, so this is genuine added 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?
States a specific verb and resource ('List all saved decorations in the library') and immediately scopes it to browsing/filtering rather than applying. Crucially it distinguishes the library from the sibling decoration PRESET concept and names the specific siblings (list_decoration_presets, apply_decoration_preset) that handle the other case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 routing: use this to browse the library, filter by content type/category/tag, and 'if what you want isn't here, look there' pointing at list_decoration_presets. The when-to-use-which decision is spelled out with the distinguishing criterion (adapts vs. remembers versions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_branchesC
List the branches of a design.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_design_branches
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| expand_kits | No | Default: false. | |
| include_retired | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does disclose the Kiln Pro entitlement gate, but says nothing about ordering, whether retired branches are returned by default, pagination, or what shape the results take; the rest of the text is promotional framing about why branching matters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one good sentence, but roughly half the text is product marketing plus a pricing/upgrade URL — content that does not help an agent select or invoke the tool. That is filler, not conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema and no annotations, the description should explain what a 'branch' is here, what is returned, and how the two optional flags change results. None of that is present, so an agent cannot invoke it confidently beyond passing a design_id.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, and the uncovered parameter (design_id) is the required one. The two covered booleans are documented only as 'Default: false', and the description adds no meaning about what expanding kits or including retired branches actually does.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('List the branches of a design'), which is enough to tell it apart from feature-branch and decoration-preset-branch siblings by scope. It does not explicitly name or contrast those siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a prerequisite ('Requires Kiln Pro'), which is genuinely useful gating information, but gives no guidance on when to use this versus list_feature_branches, visualize_branch_tree, show_branch_history, or compare_branches. The second sentence describes benefits of branching, not when to call this 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 burden; it does disclose useful context (components come from bundled BOSL2 libraries and are proven geometry) and that omitting the filter lists everything. It doesn't say anything about return shape, ordering, or how many components to expect, which is a gap for a no-annotation tool but a minor one for a read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by the supporting detail and the category list. The middle paragraph leans slightly promotional ('much better than generating complex mechanical parts from scratch'), and the Args-style formatting is a bit heavy for one parameter, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter list tool with no annotations and no output schema, the description covers what is listed, where it comes from, and the filter values. Return format and result count remain unspecified, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the category field has no enum, but the description enumerates the valid values (mechanical, fasteners, electronics) and explains the default behavior when omitted. It stops short of stating whether matching is exact or case-sensitive, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: listing pre-built OpenSCAD components from bundled BOSL2 libraries. An agent can tell this apart from generation tools, though it doesn't explicitly differentiate itself from close siblings like match_design_components or list_design_templates_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?
It implies when to use it — browse the catalog before generating complex mechanical parts from scratch — and explains that the category filter is optional. But it never states when NOT to use it or names sibling alternatives such as match_design_components for matching a requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_goalsC
List your saved design sessions (saved goals).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 200. | |
| filter_status | No | Default: "all". |
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 behavioral burden, yet it says nothing about read-only status, pagination/limit behavior, ordering, valid filter_status values, or what a result contains. For a simple list tool the risk is lower, but the disclosure gap remains 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?
The description is one front-loaded sentence with no filler. Its brevity contributes to under-specification rather than being a model of efficient completeness, but structurally it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain return shape and filter semantics but does not. An agent can invoke it, but cannot predict what it will receive or how filter_status='all' behaves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, though only as defaults. The description adds no meaning about limit or filter_status beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a list operation over 'saved design sessions (saved goals),' but the parenthetical is ambiguous and it never distinguishes this resource from nearby siblings such as design_session, list_designs, or list_design_versions. An agent can infer it lists saved goals, but not precisely what a 'design session' is in this system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and nothing says whether this replaces list_designs, design_session, or a version listing. The only routing cue is the tool name, which is not enough for reliable sibling selection.
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_pull_requestsC
List proposed design changes, optionally filtered.
Kiln Pro would open the change as a reviewable pull request — the proposed diff, comments, and a record of what merged and why. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_design_pull_requests
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| design_id | 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 disclose one genuinely useful behavioral fact: the tool requires Kiln Pro, so calls will fail without entitlement. However it omits read-only nature, pagination, ordering, and what a pull request record contains, and the middle sentence ('Kiln Pro would open the change as a reviewable pull request') describes a hypothetical product behavior rather than this call's effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful clause is front-loaded, but two of the four sentences are a sales pitch and a URL. The counterfactual 'would open' sentence is confusing and consumes space that belongs to parameter or filtering 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?
A two-parameter filter tool with 0% schema coverage, no annotations, and no output schema needs the description to explain filter semantics and return shape; instead the description devotes its length to upsell copy. The licensing note is the only real added 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, but it never names status or design_id or gives their allowed values or formats. An agent cannot tell whether status takes 'open'/'merged' or what identifier design_id expects.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause states a specific verb and resource ('List proposed design changes'), which is clear enough to distinguish listing PRs from reviewing them. It does not reference siblings like get_design_pull_request or review_design_pull_request, so the differentiation is only implied by the word 'list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only 'optionally filtered' hints at usage; there is no statement of when to use this versus get_design_pull_request or the branch/version listing tools, and no prerequisites beyond the paywall. The bulk of the text is an upgrade prompt rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_releasesC
List signed releases for a design.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_design_releases
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| include_retired | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full behavioral burden, yet it says nothing about ordering, pagination, what 'signed' implies, or what a release record contains. The 'Requires Kiln Pro' line hints at an entitlement gate but is marketing copy rather than disclosed 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 first sentence is well front-loaded, but roughly two-thirds of the text is an unrelated upgrade/pricing pitch with a tracking URL. That is dead weight for an agent trying to decide whether and how to call 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?
For a two-parameter, no-annotation, no-output-schema listing tool, the description omits return shape, ordering, and entitlement behavior, while spending its length on promotional content. It is not sufficient to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: include_retired has only a terse 'Default: false.' note and design_id is undocumented. The description adds no meaning for either parameter — it never explains what a retired release is or what form design_id takes.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('List signed releases for a design'), which is clear enough to distinguish it from generic list tools. However, it makes no attempt to differentiate from close siblings such as list_feature_releases, list_decoration_preset_releases, or list_design_versions, leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the other release/version listing siblings, nor any prerequisite context for design_id. The only usage-adjacent statement is 'Requires Kiln Pro', which is a paywall notice rather than invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_designsB
List every design the user has saved — id, name, branches, last-updated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 24. | |
| filter | No | Default: "all". | |
| offset | No | Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden; 'list' implies a safe read, and enumerating returned fields (id, name, branches, last-updated) is genuine added value. However it does not disclose pagination behavior, ordering, or whether the listing is truncated by default, which matters for a 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?
A single front-loaded sentence that names the action, the scope and the payload with no filler. Slightly compact given the undocumented filter/pagination behavior it could have clarified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with no output schema and no annotations, describing the returned fields is the right move. But the schema's parameter descriptions ('Default: "all"' for filter) are uninformative, and the description does not compensate by explaining valid filter values or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no meaning for limit/offset/filter, and the word 'every' slightly undercuts the schema's default limit of 24 without explaining pagination.
Input schemas describe structure but not intent. Descriptions should explain 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 (list) and resource (designs the user has saved) and enumerates the returned fields, which separates it from search/all-designs tools. It stops short of naming which sibling to use instead, e.g. list_design_versions or list_cached_designs, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, when-not-to-use, or alternative named. 'The user has saved' implies personal scope but gives no guidance on picking between this and list_design_versions, search_design_versions, list_cached_designs or list_design_templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_templatesARead-only
List every parametric part Kiln can build, with full parameters.
These are ready-made, print-verified FUNCTIONAL PARTS — brackets,
bins, stands, cases, hooks, jigs, clamps, plumbing and garden
parts — that render locally through OpenSCAD. They are FREE and
need no AI provider or API key. Whenever a user wants a functional
part to their own dimensions, check here before writing OpenSCAD
from scratch.
Each template includes:
- Every parameter with its default, unit, and description
- Pre-validated OpenSCAD (prints without supports)
- Category and a one-line description of the job it does
Prefer ``find_design_templates(use_case)`` when you know what the
user is making — it searches this library by use case and ranks
matches, instead of returning all of them. Then call
``generate_from_template(template_id, {...})`` to render a printable STL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description goes beyond that by disclosing that rendering happens locally via OpenSCAD, requires no AI provider or API key, and is free — operationally relevant facts absent from structured fields. It also enumerates what each returned record contains (parameters with defaults/units/descriptions, pre-validated OpenSCAD, category and job description), which compensates for the missing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, the bulk is a scannable bulleted list of what a template record contains, and the routing advice sits at the end where an agent looks for next steps. The emphasis on 'FREE and need no AI provider or API key' earns its place because it tells the agent this path avoids a paid generation dependency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 input parameters and no output schema, the description carries the full burden of explaining the return shape, and it does so item by item. Combined with the annotations covering safety and the explicit routing to find_design_templates and generate_from_template, an agent has everything needed to select and 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?
This tool takes zero parameters, so the baseline is 4; the schema is empty and there is nothing to disambiguate. The description does explain the parameter shape of the sibling calls it routes to (use_case for find_design_templates, template_id plus a parameter object for generate_from_template), which is a small bonus but not required here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('List every parametric part Kiln can build, with full parameters') and immediately characterizes what those templates are: print-verified functional parts rendered locally through OpenSCAD. That framing separates it from the sibling find_design_templates, which searches rather than enumerates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 use condition ('Whenever a user wants a functional part to their own dimensions, check here before writing OpenSCAD from scratch') and names the preferred alternative with the exact condition that selects it ('Prefer find_design_templates(use_case) when you know what the user is making'). It also names the follow-on tool, generate_from_template(template_id, {...}), so the whole call chain is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_design_templates_catalogA
Browse the whole design-template library, both kinds.
Returns every PARAMETRIC PART Kiln can render on its own —
brackets, bins, stands, cases, hooks, jigs, clamps, plumbing
and garden parts — followed by the DESIGN PATTERNS that are
guidance rather than geometry. Every entry carries a
``generatable`` flag and the call to make next.
The parametric parts are FREE and need no AI provider: they
compile locally through OpenSCAD. Reach for one whenever a
user wants a functional part to their own dimensions, and
offer it before writing OpenSCAD from scratch — it is
faster and every part in the library is print-verified.
Use ``find_design_templates(use_case)`` to search rather than
reading the whole catalog.
| 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 — and it does well: it discloses that parametric parts are free, require no AI provider, compile locally through OpenSCAD, and are print-verified, and it says each entry carries a generatable flag and the next call. What it doesn't cover is the practical cost of reading 'the whole catalog' (size, pagination, truncation), which matters for a full-library browse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and the two content classes, then cost/behavior, then the search alternative — a sensible ordering. It runs slightly long with a few marketing-flavored clauses ('it is faster and every part in the library is print-verified') and heavy list-of-examples padding, but nothing is confusing or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return shape (two sections, generatable flag, recommended next call) and the execution model (local OpenSCAD compile, no AI provider). Its only gap is not telling the agent how large the response may be or whether to page through 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Schema coverage is 100% and the empty schema is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource ('Browse the whole design-template library') and explicitly enumerates the two contents — PARAMETRIC PARTS and DESIGN PATTERNS — so the agent knows exactly what the call yields. It also names the sibling used for searching, so the tool is distinguishable from find_design_templates without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('reach for one whenever a user wants a functional part to their own dimensions' and 'offer it before writing OpenSCAD from scratch') plus an explicit when-not-to-use alternative ('Use find_design_templates(use_case) to search rather than reading the whole catalog'). Both the trigger and the exclusion are stated, not implied.
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, plus a ``scope`` block saying which store
was read and whether the user's cloud-side versions are
included. Read ``scope`` before treating ``count`` as
the design's whole history.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 20. | |
| design_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 add real behavioral context: ordering (version number descending), the presence of a 'scope' block, and an explicit warning to read scope before treating count as the whole history. It omits pagination behavior and error cases, keeping it below 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 opening sentence is front-loaded with purpose, and the Args/Returns split is easy to scan. The Returns block is a touch wordy but the scope warning justifies 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?
There is no output schema, so the Returns explanation is necessary and supplied, including the important scope caveat. What remains missing (pagination, error handling) is minor 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 coverage is only 50% (design_id undocumented), but the description compensates by defining design_id's meaning and restating limit's default of 20. It adds meaning beyond the bare schema, though it doesn't say what limit=0 or large limits do.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List version history for a design') plus the ordering ('newest first'), which lets an agent distinguish it from get_design_version or diff_design_versions. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope caveat implies when the listing may be incomplete, but there is no explicit 'use this instead of search_design_versions when...' routing or statement of prerequisites. Usage is only implied by the tool's nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_branchesC
List all branches (optionally including retired) for a feature.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_feature_branches
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | Yes | ||
| include_retired | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it says nothing about pagination, ordering, permissions (e.g. whether the feature must be in the caller's org), or what a branch record contains. The remaining three lines are pricing marketing text unrelated to tool 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 first sentence is well-formed and front-loaded, but it is followed by three lines of subscription upsell copy ('Everything in Free, plus calibration...', 'Requires Kiln Pro', an upgrade URL) that add nothing to tool selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-annotation, no-output-schema tool, the description should clarify the identifier, return shape, and safety profile; instead it wastes most of its length on promotional content, leaving real 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 50%: include_retired has only 'Default: false.' and feature_id has no description at all in the schema. The description's '(optionally including retired)' marginally clarifies include_retired but does not compensate for the undocumented feature_id or explain identifier 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 opening sentence states a specific verb and resource (list branches scoped to a feature) and clarifies scope with 'optionally including retired'. However, it gives no differentiation from near-identical siblings such as list_design_branches, list_decoration_preset_branches, or list_feature_releases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the many sibling listing tools, nor any prerequisite or exclusion. The only usage hint is the parenthetical about retired branches, which is a parameter detail rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_cherry_pick_candidatesD
Enumerate isolatable modifications in source relative to ancestor.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_feature_cherry_pick_candidates
| Name | Required | Description | Default |
|---|---|---|---|
| source_feature_version_id | Yes | ||
| ancestor_feature_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses nothing about permissions, output shape, or what 'isolatable' actually means. Worse, the injected tier/upsell text ('Everything in Free, plus calibration... Requires Kiln Pro') reads as marketing boilerplate unrelated to this tool, adding noise rather than 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 single purpose sentence is well front-loaded and concise, but it is followed by three lines of unrelated upgrade/pricing promotion that do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no annotations, and 0% parameter coverage, the description would need to explain inputs and returns; instead it offers one terse sentence plus an ad. An agent has essentially nothing to act on beyond the tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (ancestor_feature_version_id, source_feature_version_id) have 0% schema description coverage, and the description says nothing about what these IDs are, how to obtain them, or how the ancestor/source relationship affects results. The description fails entirely to compensate 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 opening sentence, 'Enumerate isolatable modifications in source relative to ancestor,' gives a specific verb and a reasonably specific resource, so the agent can infer this lists cherry-pickable changes. However, it never distinguishes itself from the close siblings list_cherry_pick_candidates, list_decoration_cherry_pick_candidates, or cherry_pick_feature_modification, so the boundary between them is left to guesswork.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the sibling candidate-listing and cherry-pick tools, and no workflow context (e.g. 'call before cherry_pick_feature_modification'). The 'Requires Kiln Pro' line is promotional rather than actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_kindsC
Enumerate every supported feature kind with its parameter spec.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_feature_kinds
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it discloses almost nothing behavioral: no indication of whether the catalog is static or dynamic, how large the response is, or what a 'parameter spec' contains. The second paragraph is promotional copy about paid features rather than information about this call'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 useful content is a single front-loaded sentence; the two following sentences and the embedded upgrade URL are marketing that consume roughly two-thirds of the description without helping the agent call the tool. That noise also risks the agent misreading tier limits as a constraint on this call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 enumeration tool with no output schema, the description is minimally sufficient: it says what is enumerated and that specs are included. It does not sketch the return shape at all, and the ad copy displaces space that could have done so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies a full enumeration with no filtering arguments, which matches 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 first sentence states a specific verb and resource: 'Enumerate every supported feature kind with its parameter spec.' That is unambiguous and distinct from data tools like list_features or list_feature_branches. It stops short of naming a sibling it replaces, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus list_features, get_feature, or list_product_types. The remaining sentences are a Pro-tier upsell, not usage guidance. An agent gets no routing signal beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_releasesC
List signed feature releases — and the ids that reference them.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_feature_releases
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | No | ||
| include_retired | No | Default: false. |
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 add one genuine behavioral fact — the tier gate ('Requires Kiln Pro') — and implies only signed releases are returned, which is useful. However, it says nothing about ordering, pagination, or what 'ids that reference them' actually means in the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful purpose statement is front-loaded in one sentence, but the next three sentences are marketing copy ('unlimited textures and decorations', a pricing URL) that has no bearing on invoking this listing tool. Roughly three-quarters of the text does not earn 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 read-only listing tool with no annotations and no output schema, the description should explain what a release record looks like or what identifier is returned. It instead spends its budget on an upsell pitch, leaving gaps in both parameter meaning and expected 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 only 50%: include_retired carries 'Default: false' but feature_id has no description at all. The description does not compensate — it never explains what feature_id filters on (a feature, a release, a reference id?) despite alluding to 'ids that reference them'.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — 'List signed feature releases — and the ids that reference them' — so the core action is identifiable. But it does not distinguish this from close siblings such as list_feature_versions, cloud_list_remote_releases, or verify_feature_release, and the remaining three sentences are unrelated upsell copy about calibration and textures that muddies rather than sharpens 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?
There is no when-to-use guidance, no indication of when to prefer this over list_feature_versions or cloud_list_remote_releases, and no statement of prerequisites beyond 'Requires Kiln Pro'. The agent is left to infer context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_featuresC
List the latest version of every known feature.
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_features
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | No | ||
| portfolio_only | No | Default: false. | |
| include_archived | No | Default: false. |
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 discloses almost nothing about behavior. It hints at a paywall ('Requires Kiln Pro'), but the surrounding sentence about saving presets is marketing copy, leaving it ambiguous whether the listing itself is gated. There is no mention of result volume, pagination, or how 'latest version' is determined.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence does definition work. The remaining three are promotional: a Kiln Pro upsell, a duplicate 'Requires Kiln Pro' line, and a pricing URL. The upsell is repeated and crowds out any operational 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 zero-annotation, no-output-schema tool with an ambiguous design_id parameter, the description should clarify scope and gating. Instead it spends its budget on marketing, leaving the agent without enough to invoke the tool confidently or know how to handle the Pro requirement.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%; the booleans carry default notes in the schema, but design_id is undocumented in both places. The description says 'every known feature' without reconciling that against a design_id scoping parameter, so the two are in tension and the agent cannot infer what design_id filters.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: list the latest version of every known feature. But nothing distinguishes it from close siblings such as list_feature_versions, list_feature_releases, or get_feature, so the agent cannot tell which one to pick without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, even though the sibling list contains several overlapping feature-listing tools. The only conditional statement is 'Requires Kiln Pro', and it does not say what happens when the caller lacks Pro.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_versionsC
List every version of one feature, oldest first.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_feature_versions
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | 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 discloses the ordering (oldest first), which is useful, but the tier copy ('Requires Kiln Pro') is boilerplate plan advertising and leaves it ambiguous whether this specific tool is gated, and says nothing about result size, pagination, or error behavior for a missing feature_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in one crisp sentence, but three subsequent lines are promotional body copy and an upgrade URL that do not help an agent invoke the tool. Roughly three quarters of the text is 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?
With no output schema, no annotations, and an undocumented parameter, the description should explain what a 'version' entry contains and how many are typically returned. It instead spends its budget on tier advertising, leaving the agent under-informed for a listing call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required parameter, so the description must compensate. 'One feature' only weakly implies feature_id identifies the feature; nothing is said about accepted ID format or whether version IDs, names, or slugs are valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('List every version of one feature') plus an ordering guarantee ('oldest first'), which is genuinely informative. It does not distinguish itself from adjacent siblings such as list_feature_releases, list_feature_branches, or show_branch_history, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative, despite the sibling list containing several close candidates (list_feature_releases, list_feature_branches, list_feature_cherry_pick_candidates). The remaining text is plan marketing rather than selection guidance.
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_ingested_materialsC
Browse your ingested-materials library, or fetch one full spec.
Kiln Business would verify the quoted datasheet values, build a structured material profile, and keep it in your ingested-materials library. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_ingested_materials
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Default: "". | |
| material_id | No | Default: "". | |
| material_type | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and largely fails it. It never states that this is a read-only operation, whether results are paginated, how results are shaped, or what happens when both brand and material_id are supplied. The 'Requires Kiln Business' entitlement note is the one genuinely useful 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 first sentence is front-loaded and useful, but the middle paragraph describes what a paid Kiln Business tier 'would' do rather than what this tool does, and the upgrade URL is pure promotion. Two of four lines do not earn their 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?
With no output schema, no annotations, and placeholder-only parameter docs, the description should explain the return shape, the list-vs-single behavior, and the entitlement mechanics. It covers only the last of these, leaving an agent unable to predict what a call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is nominally 100%, but every parameter description is the placeholder 'Default: ""', so the schema conveys no semantics. The description only faintly implies that an identifier selects 'one full spec'; it never explains how brand, material_type, and material_id interact or whether they combine as filters.
Input schemas describe structure but not intent. Descriptions should explain non-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 states a resource ('ingested-materials library') and two modes (browse vs. fetch one full spec), which is more than a tautology. But the verb 'browse' is vague, the mechanism for the 'fetch one full spec' mode is never tied to a parameter, and nothing distinguishes this from siblings like list_design_materials or list_materials. The remaining text is marketing rather than 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?
There is no guidance on when to choose this tool over the many material-listing siblings (list_materials, list_available_materials, list_supported_materials, get_material_design_profile). The only usage-adjacent statement is the entitlement 'Requires Kiln Business', which gates access but does not help an agent decide between tools.
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_manual_historyC
List the chronological revision history of a design's manuals.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | ||
| include_retired | No | Default: false. |
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 chronological list, but it does not state ordering guarantees, pagination, permission requirements, or what 'retired' revisions are and how they are excluded by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is a byproduct of under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, and half its parameters undocumented, the description is too thin. It does not describe the shape of the returned history or how the retirement filter changes 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 50%: include_retired only notes 'Default: false' and design_id has no description at all. The description implies design_id scoping but adds no meaning for include_retired, leaving the agent uninformed about what a retired manual revision is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource with scope: list the chronological revision history of a design's manuals. That is specific enough to act on, but it does not distinguish this from sibling tools such as get_manual_revision, diff_assembly_manuals, or list_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 has no when-to-use guidance and no exclusions. It never says how it relates to get_manual_revision (a single revision) or to the version-listing tools in the same family, so the agent has to guess which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_materialsARead-only
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?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuinely useful non-schema context: the returned data is Kiln's static bundled database rather than physical/current state, which prevents a common misinterpretation. No rate-limit or pagination detail, but none is expected for a zero-param static list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero waste, and front-loaded: what it returns comes first, then the negative scoping, then the alternatives. Each 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?
There is no output schema, but the description names the payload contents (density, cost, temps) and the data source, which is sufficient for a zero-param static list. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical field list is helpful framing but not a substitute for parameter docs, which are unnecessary here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List built-in filament material profiles') and enumerates the returned data ('density, cost, temps'). It also distinguishes itself from the many sibling material lookups by clarifying that this is the bundled catalog, not loaded inventory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when-not ('NOT what is physically loaded') and names two alternatives with their distinguishing traits: get_material (software tracker) and get_active_material (live AMS hardware query). An agent can route correctly without opening any other schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mesh_commentsC
List comments on a specific version of an artifact.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_mesh_comments
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_type | Yes | ||
| only_unresolved | No | Default: false. | |
| artifact_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden, yet it only says comments are listed. It does not disclose pagination, ordering, permissions, whether resolved comments are included by default, or any read-only behavior beyond implication. The pricing/upgrade paragraph is unrelated to invocation behavior and may confuse 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 useful first sentence is front-loaded, but the remaining marketing text about calibration, textures, Kiln Pro, and an upgrade URL is irrelevant to listing comments. It adds noise without helping the agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should explain enough about parameters, return shape, filtering, and permissions. It omits key details and spends space on unrelated promotional content, leaving the definition incomplete for reliable 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 only 33%, and two of three parameters are undocumented in the schema. The description mentions a specific artifact version but does not explain artifact_type, artifact_version_id, or the only_unresolved filter beyond the schema's default note.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: listing comments on a specific artifact version. It is understandable without opening the schema, but it does not explicitly distinguish this from related sibling tools such as get_comment_thread or add_mesh_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this tool versus alternatives like get_comment_thread or search-related tools. It implies it is for listing comments on one version, but provides no exclusions, prerequisites, or selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_model_categoriesARead-only
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?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that returns are names+slugs, but says nothing about pagination, caching, or completeness of the category list (which matters for an open-world remote source).
Agents need to know what a tool does to the 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 purpose sentence followed by two short, purposeful sentences; nothing wasted. The heavy indented line-wrapping is cosmetic noise but not 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?
With no output schema and no parameters, the description carries the return-shape burden and does so for names/slugs, plus it wires the output into browse_models. Minor gap: no indication of list size or pagination behavior for an open-world remote listing.
Complex tools with many parameters or behaviors need more documentation. 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 the documented baseline of 4 applies; the description introduces the concept of the 'slug' value that other tools consume, which is useful cross-tool semantic context even though there is no parameter here.
Input schemas describe structure but not intent. Descriptions should explain 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+resource: 'List available Thingiverse content categories', and it further states what a category record contains (names and slugs). An agent can tell this is a taxonomy-listing tool distinct from the model-search siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent what to do with the result — pass a slug to browse_models(category=...) — which is real next-step guidance. It does not state when NOT to use it or name a competing category source, so it falls just short of 5.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses the return payload fields (tool change times, color capacity, compatibility) and the non-obvious inclusion rules for universal vs Klipper-only add-ons. It does not mention whether the catalog is static or fetched remotely, nor any caching/rate-limit behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return contents, then filtering rules, then the cross-tool call-site hint. Slightly long—the ':param printer_id:' tail partly repeats the filtering sentence above it—but no sentence is 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 single-optional-parameter catalog tool with no output schema, the description supplies the return shape, the filter semantics, and the integration path into estimate_before_design. An agent has everything needed to call it and use the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the schema's own text is only 'Default: ""', so the description's explanation of what printer_id does (compatibility filtering) and concrete example values ('k1', 'ender3', 'voron_2') add real meaning beyond the schema. It omits what happens on an unknown/invalid id.
Input schemas describe structure but not intent. Descriptions should explain 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 ('List available multi-material add-on systems for 3D printers') and immediately enumerates the concrete vendors covered (Creality CFS, Mosaic Palette, Co Print KCM, 3D Chameleon, Elegoo CANVAS). This clearly separates it from the many printer/hardware siblings such as cfs_status or check_multi_material_pairing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 filtering condition ('When a printer_id is provided, only add-ons compatible with that printer are returned'), the exceptions (universal add-ons, Klipper-only add-ons), and the downstream step: feed the returned id into estimate_before_design's tool_changer_addon. It tells the agent both when to call it and what to do with the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_orgsB
Return every org tenant_id belongs to (owner or member).
| Name | Required | Description | Default |
|---|---|---|---|
| tenant_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full load, and it does disclose one real behavioral trait: results include both owned and member orgs rather than one or the other. It says nothing about permissions, pagination, ordering, or what an org record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource first and the scoping qualifier second. No filler 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 one-parameter read tool with no output schema, the description covers the what and the scope but omits return shape (fields of an org) and whether results are paginated. Adequate but with visible gaps for an agent planning to consume 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?
Schema coverage is 0% and 'Tenant Id' has no description, but the description compensates partially by establishing that tenant_id identifies whose memberships are returned. It adds no format, source, or default information for the 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 names a specific verb and resource ('Return every org') and scopes it to those where the given tenant is 'owner or member', which is precise enough to distinguish it from membership-listing siblings like list_org_members or list_my_teams. It stops short of explicitly naming an alternative tool, so no sibling routing 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?
There is no statement of when to call this versus list_org_members, list_my_teams, or list_teams. The owner-or-member clause implies scope but is not framed as usage guidance or an exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_teamsB
List teams within org_id that tenant_id belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | ||
| tenant_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 behavioral burden. It implies a read-only list operation but does not disclose authentication requirements, pagination behavior, return shape, or what happens when the tenant belongs to no teams.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler. The verb and scope appear immediately, and every phrase contributes to the core filtering 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?
The tool is simple, but with no annotations, no output schema, and 0% parameter description coverage, the description is too thin. An agent still lacks enough information about parameter formats, authorization context, return behavior, and pagination to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It names org_id and tenant_id and gives a rough relationship, but does not specify ID formats, whether tenant_id is the current user, or whether either parameter has constraints beyond being required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list teams, scoped to an org and a tenant. It implicitly distinguishes itself from broader siblings like list_teams and list_my_orgs by saying these are the teams the tenant belongs to within the org.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: call this when you need the teams associated with a given tenant inside a given org. However, it does not explicitly say when to use it versus list_teams, list_my_orgs, or list_team_members.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nozzle_statesA
List every printer with a recorded nozzle state.
| 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 behavioral burden. "List" implies a read-only operation and the description gives scope, but it omits pagination, ordering, empty-result behavior, and what a recorded nozzle state includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant or filler content. The purpose and scope are clear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 listing tool, the description is enough to understand and invoke it. It could say more about the returned nozzle-state data, especially since there is no output schema, but the low complexity keeps this from being a major 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 tool has zero parameters, so there are no parameter semantics for the description to explain. 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?
States a specific verb and resource: list every printer with a recorded nozzle state. It distinguishes scope from get_nozzle_state by emphasizing all printers, but does not explicitly name the sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: call this to enumerate printers that have a nozzle state. There is no explicit when-to-use/when-not-to-use guidance or named alternative such as get_nozzle_state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_org_membersC
List every member of org_id with their role.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_org_members
| Name | Required | Description | Default |
|---|---|---|---|
| org_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 does disclose one real behavioral trait beyond the schema: reads are gated on the organisation owner's Business plan, not the caller's own plan. Beyond that it says nothing about ordering, pagination, empty results, or whether non-members 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 single functional sentence is correctly front-loaded, but three of the four sentences are pricing-page marketing copy and an upgrade URL that do nothing for tool invocation and actively compete for attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 for a tool whose whole value is the returned member/role list. The description never states the response shape or whether it is paginated, while spending its remaining budget on upsell 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?
Schema coverage is 0% and the single required parameter org_id is undocumented in both places. The description confirms org_id is the scope of the listing but gives no format, source (e.g. from list_my_orgs), or validation behaviour.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource plus a stated return element ("with their role"): 'List every member of *org_id* with their role.' It does not distinguish the tool from near siblings such as list_team_members, list_my_orgs or list_my_teams, so an agent must infer the scope difference 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?
There is no explicit guidance on when to use this versus list_team_members (team-scoped) or list_my_orgs (which org to pass). The only conditional content is a plan-eligibility note about Kiln Business, which addresses access rather than tool selection.
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 | Default: 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full behavioral burden and does well: it discloses parsing of embedded plate metadata, operation even when no mesh geometry exists, multi-plate support, and the response fields including `plates_available`. It stops short of stating read-only safety or invalid-file/plate failure behavior, keeping it below 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 the purpose, then adds usage, params, and returns in a clear structure. It is slightly repetitive — object fields are named in both the prose and the `:returns:` block — but nearly every sentence adds useful 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?
With no output schema and no annotations, the description still covers purpose, usage routing, behavioral edge cases, both parameters, and the shape of the return value. An agent has enough information to invoke this tool correctly 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 description coverage is only 50%, but the description compensates by documenting both parameters: `file_path` accepts .3mf or .gcode.3mf files, and `plate_number` is 1-based with a default of 1 and selects among multiple plates. This meaningfully extends beyond the schema's sparse `Default: 1.` note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — list named objects on the build plate of a Bambu .gcode.3mf file — and explicitly distinguishes itself from `extract_plate_object` and `skip_print_objects`. An agent can route to this tool without opening any other schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: discover parts before calling `extract_plate_object`, or retrieve a `label_id` mid-print for `skip_print_objects`. It also explains when to use `plate_number` for multi-plate Bambu files, leaving little inference required.
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_procedural_texturesB
List all available procedural texture types, palettes, and presets.
| 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 does disclose a behavioral trait — 'all available' implies an unfiltered, complete catalog with no arguments and no pagination — but it says nothing about permissions, rate limits, or result size/caching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and the full result enumeration front-loaded. Nothing is padded, though it is minimal enough that it borders on under-specification rather than model conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-annotation read tool with no output schema, the description usefully enumerates the three categories returned, effectively standing in for a return-value summary. It does not distinguish built-in palettes from the custom palettes exposed by list_custom_palettes, leaving a small ambiguity 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?
The tool takes zero parameters, and the schema is empty, so there is nothing to document beyond the baseline. The description correctly spends no words on parameter syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (List) plus the resources returned (procedural texture types, palettes, presets), so the agent knows exactly what comes back. It stops short of naming the counterpart tool apply_procedural_texture, so sibling differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of apply_procedural_texture as the follow-up action, and no statement about when this list is relevant. The agent can infer it is a discovery step before applying a texture, but nothing in the text says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_product_typesC
List all Kiln product types that expose a semantic face registry.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_product_types
| 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 behavioral burden. It discloses that Kiln Pro is required, which is useful, but it does not clarify read-only behavior, return format, authentication expectations, or pagination 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 useful purpose statement is front-loaded, but most of the description is pricing and upgrade marketing. Those sentences do not help an agent decide how or when to invoke the tool, so they do not earn their 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 zero-parameter list tool, the description still leaves key context missing: what a product type is, what the result contains, and how this list relates to sibling tools for faces and decoration. The Pro requirement is noted, but the definition is not complete enough for confident 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?
The tool takes zero parameters, so there is no parameter semantics burden. The empty schema is consistent with the description, and no additional parameter explanation 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 first sentence states a specific verb and resource: listing Kiln product types that expose a semantic face registry. It is clear enough to identify the tool's function, though it does not distinguish itself from related siblings such as list_decoratable_faces or get_product_faces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool instead of alternatives. The qualifier about semantic face registries implies a scope, but there are no named alternatives, exclusions, or contextual triggers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proven_recipesC
List all proven recipes across all designs (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_proven_recipes
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 50. | |
| design_id | 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 does disclose a genuine behavioral constraint — the operation requires Kiln Pro and will fail otherwise — which is real value beyond structured fields. However, it says nothing about result volume, pagination, ordering, or what a recipe record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence describes the tool; the remaining three are pricing upsell copy with a tracked marketing URL that no agent needs in order to select or invoke the tool. Roughly half the text does not earn 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 two-parameter list tool with no output schema and no annotations, the description covers the basic purpose and the tier requirement, which is close to sufficient. It leaves the design_id filter and any pagination/limit behavior unexplained, so an agent could call it correctly but not optimally.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: limit has a default note but design_id is undocumented in both schema and description. The description actively muddies this by saying "across all designs" while a design_id filter parameter exists, so it neither explains nor reconciles the 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?
"List all proven recipes across all designs" gives a specific verb and resource, enough to distinguish it from sibling list_* tools such as list_decorations or list_design_templates. It stops short of a 5 because "proven recipes" is domain jargon left unexplained and the tool is not explicitly differentiated from the related record_proven_recipe workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives, no prerequisites beyond the paywall note, and no exclusions. The "(Pro)" tag implies a tier gate but the agent gets no guidance on what to do when the gate applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_published_modelsC
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 | Default: 50. | |
| marketplace | 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 implies a read (List) and mentions an optional filter and a default page size, but says nothing about pagination, ordering, whether the caller's org scope is applied, or auth requirements for marketplace 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?
Short and front-loaded, with the purpose sentence first and parameters grouped in a compact Args block. The limit sentence duplicates the schema description, which is minor waste 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?
For a two-parameter read-only list tool with no output schema, the definition covers the essentials, but it omits pagination/ordering behavior and any hint of the result shape or scope, which an agent would want before calling it in a marketplace 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 50%: limit is already documented in the schema ('Default: 50.'), so the description's restatement adds nothing there. The marketplace parameter has no schema description, and 'Filter by marketplace name (optional)' usefully supplies its semantics and optionality, which roughly compensates for the 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?
States a specific verb and resource with scope: 'List models that have been published to marketplaces.' This clearly separates it from the write-side sibling publish_model, though it does not name any alternative reader such as browse_models or search_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 when-to-use guidance is given. With siblings like browse_models, search_models, model_details and list_designs in the same namespace, an agent gets no signal about when this listing is preferred over those, or over marketplace_info/marketplace_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_role_templatesB
Enumerate available role templates and their scope sets.
| 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 behavioral burden. It implies a read-only enumeration and hints that scope sets are returned, but says nothing about auth requirements, permissions, or whether the listing is org-scoped or paginated. Adequate but thin for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and resource front-loaded and no filler. It is efficient, though so terse that it conveys little beyond the minimum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-param list tool with no output schema and no annotations, the description covers what the tool returns (templates and their scope sets) but omits scope/auth context and result format. It is minimally viable rather than fully rounded out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4. The description adds nothing about parameters because there are none to describe, so the baseline stands.
Input schemas describe structure but not intent. Descriptions should explain 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 (enumerate) and resource (role templates) and even names the payload dimension (scope sets). An agent can tell it lists templates rather than applying one, distinguishing it loosely from the sibling apply_role_template. No explicit sibling/alternative is named, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. auth, org context), and no named alternative such as apply_role_template for acting on the templates. Usage is only implied by the listing verb.
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 the printers Kiln has a safety profile for, by id and name.
The list names printers; it carries no limits. Kiln reads a
printer's limits one printer at a time: call
``get_safety_profile`` with one of these ids for its temperature,
feedrate and flow limits, its build volume, and where those
numbers came from. ``validate_gcode_safe`` checks commands
against one printer's limits. A printer set up on this machine
with limits its owner entered is listed too, marked
``set_up_on_this_machine``.
| 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 behavioral burden and does disclose real traits: the response contains only identifiers and names, contains no limit values, and includes an extra field (set_up_on_this_machine) that flags owner-entered local printers. It does not state ordering, pagination, or whether printers without profiles are omitted, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key fact (ids and names only, no limits) is front-loaded in the first two sentences, and each subsequent sentence earns its place by naming a sibling. The embedded line-break indentation and backtick markup add noise that a cleaner single paragraph would avoid.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument list tool with no annotations and no output schema, the description supplies the missing pieces: what fields come back, what does not come back, the meaning of the set_up_on_this_machine marker, and where to go next for actual limits. Only minor operational details (ordering, whether the set can be empty) 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?
The tool takes zero parameters, so per the baseline the schema already carries the full parameter story and the description neither can nor needs to add syntax detail. It does usefully clarify that the result set is scoped to printers Kiln already has profiles for, which frames what an empty argument list actually returns.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — list the printers that have a safety profile — and states the returned shape (id and name). It explicitly distinguishes itself from get_safety_profile and validate_gcode_safe, both of which exist as siblings, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the when-not condition directly ("the list names printers; it carries no limits") and names two concrete alternatives with the condition that selects each: get_safety_profile for one printer's limits, validate_gcode_safe for checking commands. That is an explicit use/do-not-use/alternative triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scopesB
List grants for an org, optionally filtered by tenant OR team.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_scopes
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | ||
| team_id | No | ||
| tenant_id | 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 disclose one real behavioral trait: the org (its owner's plan) must be on Kiln Business while the caller's own plan is irrelevant — a precondition that explains a likely failure mode. It says nothing about pagination, ordering, or result shape, and roughly half the text is upgrade promotion rather than tool 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 one useful sentence is correctly front-loaded, but it is followed by three sentences of marketing copy and a pricing URL that consume most of the definition without helping the agent invoke the tool. The plan-gating fact is buried inside upgrade messaging rather than stated as a condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter list tool with no annotations and no output schema, the description should clarify what a returned 'grant' contains and how the scope is gated. It gestures at the plan gate but omits return shape, pagination, and the effect of omitting both tenant_id and team_id, leaving real gaps filled by advertising.
Complex tools with many parameters or behaviors need more documentation. Simple 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 three parameters, so the description must compensate. It clarifies that tenant_id and team_id are alternative filters ('OR'), a constraint the schema does not express, but leaves org_id's relationship to team_id/tenant_id, identifier formats, and behavior when no filter is supplied unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — 'List grants for an org' — and adds scope ('optionally filtered by tenant OR team'), which distinguishes it from the mutation siblings grant_scope and revoke_scope. It does not explicitly name an alternative tool, but 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?
'Optionally filtered by tenant OR team' implies the filter is optional and that tenant and team are mutually exclusive, which is genuine usage guidance. However, nothing states when to prefer it over list_org_members / list_team_members / list_role_templates, and no prerequisite conditions for calling are laid out as instructions.
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 | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that include_addresses defaults to False to avoid exposing personal details, which is meaningful privacy context beyond the schema. However, it does not explicitly state read-only behavior, permissions, or return shape, 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?
The purpose is front-loaded in the first sentence, and the parameter explanation is efficient. The docstring-style 'Args:' formatting adds slight verbosity but does not obscure the core 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 one optional parameter and no output schema, the description covers the essential purpose and parameter behavior. It omits details such as whether profiles are paginated or what fields are returned, which could help the agent set expectations, but the core call is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds meaning: include_addresses controls full contact/address fields and defaults to False for privacy. This clarifies the impact beyond the schema's bare 'Default: false.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (List) and resource (saved local shipping profiles), making the operation clear. It does not explicitly differentiate itself from sibling tools like save_shipping_profile or delete_shipping_profile, though the 'list' verb implies read-only 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 implies usage when retrieving saved shipping profiles, but it does not state when to use this tool versus alternatives such as save_shipping_profile or validate_shipping_address. The privacy note for include_addresses gives parameter-level guidance but not tool-selection guidance.
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 | Default: 20. | |
| phase | No | ||
| job_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 usefully discloses that only metadata (not the images themselves) is returned and that records are persisted in the database, but says nothing about pagination, ordering, permissions, or result size, leaving real gaps for a read 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?
Front-loads the core action, follows with purpose context, then a clean Args block enumerating the parameters. Tight and scannable, with only minor redundancy between the prose and the arg list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, and 4 parameters, the description should do more. It conveys what kind of thing is returned (metadata) but not the shape of that metadata or how paging works, so an agent can select the tool but has limited information about the results it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (limit alone), so the description must compensate, and it does: it explains all four filters and, critically, gives phase examples ('first_layer', 'timelapse', 'mid_print') when the schema has no enum. It adds clear meaning beyond the 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?
States a specific verb (List) and resource (persisted snapshots) and clarifies the source is the database, making the retrieval semantics clear. It does not explicitly differentiate itself from look-alike siblings such as printer_snapshot (capture) or analyze_print_snapshot (analysis), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: 'review print history visually or correlate snapshots with print outcomes.' This tells the agent when the tool is useful, but it names no alternative sibling or exclusion condition, so it stays below the top band.
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.
``remaining_grams`` is what Kiln believes is left on each spool, and
``remaining_determined_by`` says who set it: ``inferred`` is Kiln's own
count (what the spool held, less what the prints Kiln started were
sliced to use), ``observed`` is the printer's reading of a spool it can
measure, ``user_reported`` is what the person said. A count misses
prints started outside Kiln, so report a counted figure as Kiln's
count, never as a measurement. When the person says the figure is
wrong, correct it with ``add_spool(spool_id=..., remaining_grams=...)``;
when they say a spool is used up, ``remove_spool``.
| 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 and does add meaningful behavioral context: it explains what remaining_grams means, defines inferred/observed/user_reported, and warns that Kiln's count can miss prints started outside Kiln. It does not cover permissions, ordering, or the full return shape, but the key data limitations are 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 front-loads the purpose and then adds field semantics and corrective workflow guidance. It is longer than a bare listing description but most sentences earn their place by preventing misinterpretation of remaining_grams.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no-annotation, no-output-schema listing tool, the description explains the most important returned semantics and the known limitation of inferred counts. It is not complete about all returned spool fields, but it is sufficient for an agent to call and interpret the core 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 input parameters, so there are no parameter semantics to add; the baseline for a parameterless tool is 4. The description's mention of add_spool parameters documents a sibling call, not this tool's own 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 gives a specific verb and resource: 'List all tracked filament spools in inventory.' It clearly distinguishes listing from the corrective add_spool/remove_spool actions, but does not explicitly distinguish itself from other inventory-query siblings such as get_filament_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?
Usage is implied by the listing purpose and by the corrective guidance for add_spool and remove_spool. However, the description never states when to choose list_spools over other spool or filament-status tools, nor does it give conditions for calling it.
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_team_membersC
List every member of team_id.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_team_members
| Name | Required | Description | Default |
|---|---|---|---|
| team_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 it does disclose one genuinely useful behavioral fact: access is gated by the organisation owner's Kiln Business plan, not the caller's. It says nothing about permissions required, pagination, ordering, or whether the caller must be a member, and most of the text is plan marketing rather than tool 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 one useful clause leads, but roughly two-thirds of the text is unrelated upsell — team review, approval gates, printer counts, and a pricing URL with tracking parameters. That padding dilutes the signal an agent needs and does not earn 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 one-parameter list tool with no output schema and no annotations, the description should say what a member record contains and whether results are paginated or complete. Instead it spends its budget on plan advertising, leaving the return shape entirely unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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% for the single team_id parameter, so the schema only says 'Team Id' with no format or sourcing hint. The description implies team_id selects which team's roster is returned but adds nothing about identifier shape (slug vs UUID) or where to obtain one.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource (list members of a given team), which is enough to distinguish it from team-management tools like create_team or delete_team. It does not differentiate from the close sibling list_org_members, whose scope (org vs team) an agent must infer from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_org_members, list_my_teams, or list_teams, which all enumerate people or team containers. The only conditional content is a plan prerequisite, not a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsB
List every team in org_id.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=list_teams
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | 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 usefully discloses a plan-gating requirement on the target organisation, which is genuine behavioral context an agent needs. However, it omits the failure mode when the plan requirement is unmet, pagination/size behavior, and any permission implications, so the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the remaining two paragraphs are pricing/marketing copy ('Business adds team review, approval gates, and 3 printers (grow to 50)', an upgrade URL) and a grammatically muddled sentence about who reads the team. These sentences do not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool with no output schema, the essentials are mostly present: what is listed, in what scope, and under what plan gate. It still leaves the agent without guidance on identifier source, result size, or behavior on a non-Business org, and the upsell text crowds out that 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?
There is one parameter (org_id) with 0% schema description coverage; the schema offers only the title 'Org Id'. The description confirms the list is scoped to a specific org but adds no meaning about the identifier's form or where to obtain it (e.g., list_my_orgs), so it does not compensate 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 first sentence gives a specific verb and resource with an explicit scope ('List every team in *org_id*'), which distinguishes it from create_team/delete_team. It does not, however, explicitly contrast itself with the very close sibling list_my_teams, leaving the agent to infer the difference from the scoping phrase alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does add a real prerequisite: the organisation must be on the Kiln Business plan. But it never states when to choose this tool over list_my_teams, nor what happens if the org is not on Business (error, empty list, partial results). Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_technical_drawingsC
List the dimensioned drawings this person has made, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only discloses the sort order ('newest first'). It says nothing about pagination or result limits (a concern for an unbounded 'list' that is newest-first), permissions, or whether it covers only the caller or a broader person scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the ordering guarantee is attached directly to the action. Nothing could be trimmed without losing 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 listing tool with no annotations, no output schema, and an effectively undocumented parameter, the description is thin. It omits pagination/limit behavior and any result shape, which an agent needs before calling a newest-first list that could be large.
Complex tools with many parameters or behaviors need more documentation. Simple 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 nominally 100%, so the baseline is 3, but the single parameter's schema text is only 'Default: ""' and the description never mentions design_id. Whether it filters to a specific design or defaults to all designs is left entirely to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the dimensioned drawings') plus scope ('this person has made'), so the agent knows exactly what comes back. It does not differentiate itself from the closely named siblings generate_technical_drawing, intake_engineering_drawing, or assess_drawing_manufacturability, so the agent must infer the split 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?
There is no guidance on when to call this versus generate_technical_drawing or the other drawing-related siblings, and no prerequisites or context conditions are stated. The only usage hint is implicit in 'this person has made', which at least implies a personal-scope query.
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_filamentA
Feed filament to the nozzle — an AMS tray on Bambu, a manual feed elsewhere.
On Bambu Lab the firmware's own change-filament routine runs (retract,
feed, purge) and the answer is read from the AMS: ``extrusion_verified``
is ``True`` once ``tray_now`` reports the tray feeding the nozzle,
``False`` with the fault code in plain language if the routine raised
one (the same HMS codes the touchscreen shows), ``None`` if neither
arrived in ``wait_seconds``. On Klipper a ``LOAD_FILAMENT`` / ``M701``
macro from the printer's own config is used when it exists; otherwise,
and on OctoPrint / Duet / serial, the hotend is heated and
``length_mm`` is fed at 3 mm/s — push the filament into the extruder
first.
Temperature is checked against the printer's safety profile, the
spool's own ``nozzle_temp_min/max`` (AMS) or Kiln's material table,
and the 170 °C cold-extrusion floor; refused outside any of them.
Refused while a print is running (paused is fine).
Branch on ``outcome`` — one field, three values, the same shape
``set_temperature`` and ``start_print`` use:
- ``"confirmed"``: the printer showed the effect (the AMS reports the
tray feeding the nozzle).
- ``"accepted"``: the command was sent and not refused, and the printer
has not shown the effect yet. A Bambu load takes a minute or two
and a tool call cannot wait that long, so this is the normal answer
when the watch runs out: the routine is still running. Do NOT send
the load again — read ``next_read`` (``ams_status`` for ``tray_now``,
``printer_status`` for ``print_error``) to finish the answer.
- ``"failed"``: the gate or the printer refused, or a fault was raised
(``error_code`` / ``error_hint``).
On Bambu Lab that check binds what Kiln sends, not what the routine
does: the firmware heats to its own flush temperature for a filament
change (250 °C observed on an A1 asked for 215, the ``M109 S250`` its
own start sequence sets) and drops to the requested target only when
the routine finishes. The answer reports the temperature the firmware
actually used (``firmware_hotend_target_c``) beside the one Kiln
validated; the gate is not widened to match it.
Where the declared model's own purge position is served one plan at a time through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it works offline, the head is parked over the purge chute
before the routine runs, so its purge falls into the chute instead of
hanging off the nozzle at home; the answer says where the head was
either way.
Args:
slot: The printer's own tray id, as ``ams_status`` lists it in
``tray_id`` (0–3 on unit A, 4–7 on unit B, 128 for the AMS HT
named HT-A). Omit for the external / single spool.
material: e.g. ``"PLA"`` — picks a temperature when none is given
and no spool report supplies one.
temperature: Hotend target in °C. Omit to use the middle of the
spool's or material's window.
length_mm: Feed distance for the generic G-code path (default 60;
bowden machines need more). Ignored where the firmware's own
routine decides.
wait_seconds: How long to watch for the AMS to confirm. Bounded to
what a tool call can wait inside the client's request window
(40 s unless ``KILN_FILAMENT_WAIT_BUDGET_S`` says otherwise); a
longer ask is applied at the bound and the response says so.
keep_hot: Leave the heater ON afterwards, for a caller about to do
something else hot. Off by default: every op ends with the
heater off and says so; where the machine's own cool-down is
served, the part fan goes on and Kiln turns it off on its own
once the nozzle reads the hand-off temperature -- the answer
does not wait for that, and ``printer_status`` shows it.
printer_name: Which printer. Omit for the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | ||
| keep_hot | No | Default: false. | |
| material | No | ||
| length_mm | No | ||
| temperature | No | ||
| printer_name | No | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it discloses firmware-routine behavior, AMS verification via tray_now/extrusion_verified, fault-code handling, temperature safety gates, cold-extrusion floor, print-running refusal, outcome semantics, and the important warning that a Bambu load may return accepted while still running.
Agents need to know what a tool does to the world before calling 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 and well-structured, with outcome semantics and Args organized clearly. It is long and includes some tangential detail about the hosted purge service, but most content is relevant for a complex, multi-platform printer 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?
There is no output schema, no annotations, and low schema coverage, so the description must carry the definition. It covers purpose, platform branches, safety constraints, outcome values, next_read guidance, error fields, and all parameters, making it complete enough for an agent to invoke and interpret 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 only 14%, but the description compensates with a detailed Args section: slot IDs and ranges, material/temperature selection logic, length_mm default and when it is ignored, wait_seconds bounding with KILN_FILAMENT_WAIT_BUDGET_S, keep_hot consequences, and printer_name default behavior. This adds 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 opening sentence states a specific verb and resource: 'Feed filament to the nozzle', and immediately distinguishes the Bambu AMS path from the manual-feed path elsewhere. An agent can tell this is the loading counterpart to unload_filament/purge_filament without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: it explains Bambu vs Klipper vs generic paths, states that loading is refused while a print is running (paused is fine), and explicitly says 'Do NOT send the load again' when outcome is accepted. It does not name sibling tools as alternatives, which keeps it below a perfect 5.
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_designA
Keep a design on this computer only: never saved to the person's Kiln account.
A locked design is never saved to the Kiln account, by any door:
a cloud push, an automatic save after each version, a push of one
of its signed releases, or a pull request. Each is refused and
says the design is locked. Branching, merging and the history
views keep working; when Kiln's servers run one of those, the
design passes through them for that call only and is not kept
there. Locking removes nothing already in the account. Free on
every plan.
Args:
design_id: The design to lock or unlock.
locked: ``True`` (the default) to lock it, ``False`` to unlock it.
Returns:
``locked`` (the state it is now in) and ``said``: a sentence
to show the person, saying what the lock does and does not do.
| Name | Required | Description | Default |
|---|---|---|---|
| locked | No | Default: true. | |
| design_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 behavioral burden and does so well: it enumerates the refused operations, explains pass-through behavior for server-side branch/merge/history calls, states that existing account data is not removed, and mentions return values. This is unusually complete 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 core meaning is front-loaded and the structure is readable, but the opening sentence and the following paragraph repeat that a locked design is never saved to the Kiln account. The Args/Returns structure is useful, though somewhat 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?
For a two-parameter mutation tool with no annotations and no output schema, the description covers the important behavioral edges: what is blocked, what still works, what is not deleted, and what is returned. An agent has enough context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate, and it does: design_id is identified as the design to lock or unlock, and locked is explained as True for lock and False for unlock. It does not specify the expected design_id format, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action-resource pair: lock/unlock a design so it stays local and is never saved to the Kiln account. The effect is clear, but it does not explicitly distinguish this tool from similarly named siblings such as keep_design or the cloud-push tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context by explaining that the lock prevents all cloud-save paths while branching, merging, and history still work. It also notes that locking removes nothing already in the account, but it does not name an alternative tool or explicitly say when to choose unlock versus lock beyond the locked argument.
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 | 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 behavioral burden. It usefully discloses the Enterprise license requirement and enumerates allowed category values, but it does not explain mutation effects, error behavior, permissions beyond licensing, whether entries are editable, or what the tool returns.
Agents need to know what a tool does to the world before calling 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 action, followed by a compact Args list and the license prerequisite. It is appropriately sized for a six-parameter tool and contains no obvious filler, though the docstring formatting is conventional rather than especially tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers purpose, all parameters, and the Enterprise license prerequisite. It still leaves notable gaps around return behavior, failure modes, and how the logged cost relates to summary or reporting tools, so it 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?
Schema description coverage is only 17%, so the description must compensate. It does so well for all six parameters: project_id is tied to create_project, category is given five concrete allowed values, amount is specified as the configured currency, description and printer_name are explained, and job_id is marked optional for traceability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Log a cost entry against a project.' It is clear what the tool does, but it does not explicitly differentiate itself from related siblings such as project_cost_summary, client_cost_report, or estimate_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Log a cost entry against a project,' suggesting this records actual costs rather than estimating or summarizing them. However, there is no explicit guidance on when to use this versus estimate_cost, project_cost_summary, or client_cost_report, and no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
look_at_plateA
Look at the build plate through the machine's camera, and record what is there.
Two steps, one tool. Called WITHOUT ``seen`` it fetches a frame and
hands it to you as a picture, after a short text record that names
``snapshot_path``, the same picture saved on this computer -- and
records nothing. Look at it, then call again with ``seen="clear"``
(nothing on the plate) or ``seen="occupied"`` (something is), and that
answer becomes the plate record with you named as the one who looked.
The picture shows whatever the camera sees, the room around the
printer included. This tool saves it only on this computer and hands
it only to you; it is never written to a log.
A refusal over a recorded part (a slice with no spot named, a print
start, a park or home that would cross it) already carries that frame
as ``snapshot_path`` and says how old the record is: look at it and
come straight here with ``seen``. A record days old most likely
describes a part someone took off -- look before you ask a person.
A print held with ``ALWAYS_ALLOW_LOOK_FIRST`` carries a frame the same
way: always allow is on for that printer, nobody is being asked, so
the bed is looked at first. Judge that frame here with ``seen`` and
start the print again; the picture is kept with the print's record.
If you cannot tell, say ``occupied`` -- the person is then the one who
says the bed is clear.
When the PERSON tells you the bed is clear -- typed to you in a chat,
after a refusal that says a part is on it -- pass their words exactly
as ``person_says``. They have to say it flatly ("bed clear", "the
plate is empty"); a hedge or a question is not that. Where this app
can show a dialog, Kiln asks the person itself and records their
answer; otherwise the words are recorded as passed on by you, kept on
the record. Never write these words yourself: if they have not said
it, ask them. It settles a plate the record says is occupied; a plate
with no such record is settled by looking.
Kiln ships no vision model and judges nothing here. The eyes are
yours; this tool is the camera and the pen. Say what you actually see:
a plate you are not sure about is ``occupied``, because the cost of a
wrong "clear" is a print driven into a part and the cost of a wrong
"occupied" is one question.
Works on any printer with a camera Kiln can read -- the machine's own,
or one registered against it with ``camera_snapshot_url``, which works
on every printer type including those with no camera of their own.
A machine with neither says so and stays ``unknown``.
Args:
printer_name: Which printer. Omit for the default one.
seen: Omit to fetch the picture. ``"clear"`` or ``"occupied"`` to
record what you saw in the picture you were just given.
person_says: The person's own words that the bed is clear, exactly
as they typed them. Not with ``seen``.
Returns the ``plate`` record and a ``look`` block saying whether a
frame was available and which camera it came from -- followed, when a
picture was taken, by the picture itself as image content.
| Name | Required | Description | Default |
|---|---|---|---|
| seen | No | ||
| person_says | No | ||
| printer_name | 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: it discloses that the first call records nothing, that the image is saved only locally and never logged, that a printer without a readable camera returns 'unknown', and that `person_says` may be mediated by a dialog or recorded as passed-on. It also discloses the tie-breaking policy (say 'occupied' when unsure) with the rationale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core two-step behavior and generally well organized, but it is long and repeats itself: the parameter semantics are stated in prose and then restated in an Args block, and the 'eyes are yours / wrong clear vs. wrong occupied' rationale is made twice. Most of the length is justified by genuine conditional complexity, but not all of it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return shape (a `plate` record plus a `look` block naming camera availability and source, followed by image content). Given three optional params, no annotations, and safety-critical usage, an agent has everything needed 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?
Schema coverage is 0%, so the description must compensate, and it fully does: each of the three optional parameters gets a meaning the schema lacks — `printer_name` omit-for-default, `seen` omit-to-fetch vs. the two literal values, `person_says` verbatim quoting and the constraint that it is 'Not with `seen`'.
Input schemas describe structure but not intent. Descriptions should explain 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 concrete verb+resource ('Look at the build plate through the machine's camera, and record what is there') and immediately makes explicit the unusual two-call shape of the tool: fetch a frame, then record a judgement. This is clearly distinguishable from neighbors like plate_status, printer_snapshot or analyze_print_snapshot, which do not combine capture with recording an agent-authored verdict.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when-to-use for every branch: call without `seen` to fetch, with `seen="clear"|"occupied"` to record, pass `person_says` only with the person's own flat words. It also names the upstream triggers (a refusal carrying `snapshot_path`, a print held under ALWAYS_ALLOW_LOOK_FIRST) and states the rule for which plates are settled by looking versus by a person.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_fastenerC
Get the full spec for a screw, bolt, or threaded fastener.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=lookup_fastener
| Name | Required | Description | Default |
|---|---|---|---|
| name | 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. The one genuinely behavioral disclosure is that results are tier-gated (Free = warnings only, Pro = sizing/fit, etc.), but the rest is marketing copy; nothing is said about lookup failure behavior, how loose the name match is, 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 first sentence is well front-loaded, but it is followed by a long pricing/upsell block and a tracking URL that do not help an agent decide or invoke correctly. Roughly three-quarters of the text is promotional rather than functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 lookup with no annotations and no output schema, the description should define the input key format and describe what a 'full spec' contains. Instead it spends its length on tier marketing, leaving the actual invocation contract unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 single required parameter 'name' is undocumented. The description only implies it identifies a screw/bolt/fastener and gives no expected format (e.g., 'M3x10'), which is critical for a lookup key and cannot be guessed.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ('Get the full spec for a screw, bolt, or threaded fastener'), which is unambiguous. It does not distinguish itself from hardware-adjacent siblings like recommend_hardware_pocket, plan_hardware_insertion, or recommend_hole, so an agent must infer the boundary 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?
There is no guidance on when to call this versus alternatives, no prerequisites, and no exclusions. The tier listing implies some answers are gated, but it never says what an agent should do when it needs Pro-level sizing data and the account is on Free.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maintenance_dueC
Which parts are due on which machines -- one list, worst first, across mixed makes.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | No | ||
| printer_names | No | ||
| recent_faults | 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 behavioral burden. It usefully discloses aggregation and ordering ('one list, worst first') and cross-make scope, but omits whether the operation is read-only, permissions required, side effects, and failure or empty-result 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 definition is a single front-loaded sentence with no filler, and the key output ordering is easy to spot. It is almost too compressed, but it is not padded or structurally confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with a nested object and no annotations or output schema, the description is too thin. It communicates the basic result shape but leaves input semantics, usage context, and non-happy-path behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain the three parameters. It loosely maps 'parts' and 'machines' to parts/printer_names but gives no type, content, or filtering semantics, and completely ignores the nested recent_faults object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 resource and output: parts due per machine, returned as a prioritized single list across mixed makes. It lacks an explicit verb and does not name or distinguish the close sibling get_maintenance_prediction, so it is clear but not fully 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?
It implies a maintenance-query use case but gives no explicit when-to-use guidance, prerequisites, or alternatives. With siblings such as get_maintenance_prediction and check_printer_health, the absence of routing guidance leaves the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_printableB
Turn any messy / AI-generated / organic mesh into a print-ready solid. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 2 print-ready fixes/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=make_printable
INLINE 3D STAGE: on success this tool 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 | Default: 256.0. | |
| bed_y_mm | No | Default: 256.0. | |
| bed_z_mm | No | Default: 256.0. | |
| material | No | Default: "PLA". | |
| design_id | No | Default: "". | |
| nozzle_mm | No | ||
| model_path | Yes | ||
| printer_id | No | Default: "". | |
| branch_name | No | Default: "printable". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does add useful behavioral context—free-tier quota, automatic decimation for oversized meshes on the stage, and the fact that an interactive 3D stage opens on success—but it does not clarify what happens to the input mesh, how output branches are handled, or what permissions/licensing are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description repeats the inline 3D stage concept twice: once in the opening paragraph and again in a dedicated 'INLINE 3D STAGE' section. Pricing and upgrade information further adds length without helping invocation, so the text is not maximally 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?
This is a 9-parameter mesh-modification tool with no annotations and no output schema, so the description should do more to explain the operation's result and parameter effects. Instead, it focuses heavily on the interactive stage and pricing tier while leaving unclear what the tool returns, how branch_name is used, and what 'print-ready' concretely changes.
Complex tools with many parameters or behaviors need more documentation. Simple 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 78%, so the schema already documents most parameters and the baseline is 3. The description does not add meaning for model_path, bed dimensions, material, nozzle, printer_id, design_id, or branch_name, so it neither compensates for gaps nor improves 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?
The description states a specific verb and outcome: turning a messy, AI-generated, or organic mesh into a print-ready solid. This is clear enough to distinguish the core operation, but it does not explicitly differentiate the tool from nearby siblings such as repair_mesh, validate_and_prepare_mesh, or prepare_ai_model_for_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 phrase 'messy / AI-generated / organic mesh' implies the intended input context, giving some usage guidance. However, it does not say when to choose this over sibling repair, validation, or preparation tools, nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_fair_characteristicsC
Characteristic sets and inspection results for FAIR Form 3.
Kiln Enterprise would tie the production record to the revision, surface missing approvals, and prepare the review packet. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=manage_fair_characteristics
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| method | No | Default: "". | |
| set_id | No | Default: "". | |
| values | No | ||
| char_no | No | Default: 0. | |
| tool_id | No | Default: "". | |
| design_id | No | Default: "". | |
| value_kind | No | Default: "variable". | |
| attested_by | No | Default: "". | |
| attested_on | No | Default: "". | |
| report_rows | No | ||
| report_number | No | Default: "". | |
| serial_number | No | Default: "". | |
| characteristics | No | ||
| attribute_result | No | Default: "". | |
| design_version_id | No | Default: "". | |
| general_tolerance_note | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only discloses the Enterprise entitlement gate. It does not say whether the tool mutates data, what gets created or destroyed, what permissions are needed, or what the 17 parameters control.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but two of the four sentences are marketing copy and an upgrade URL. The operational content is front-loaded in one clause and is too thin for 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?
For a 17-parameter mutation-capable tool with no annotations and no output schema, the description is drastically incomplete. It tells the agent the tool is Enterprise-gated, but omits action semantics, required workflows, and return behavior needed 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?
Schema description coverage is 76%, so the schema documents many fields, but the required 'action' parameter has no enum or description, and 'method', 'set_id', 'values', and other operational fields are unexplained in the description. The description adds no parameter meaning at all, leaving an agent unable to infer valid action 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?
It names a resource domain ('characteristic sets and inspection results for FAIR Form 3'), but the verb 'manage' is generic and the description spends most of its text on an Enterprise upsell rather than what the tool actually does. It does not distinguish itself from siblings like manage_fair_registry, manage_fair_evidence_bundle, or prepopulate_fair_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only actionable guidance is 'Requires Kiln Enterprise,' which is a prerequisite rather than a usage rule. There is no statement of when to use this tool versus the other FAIR-related tools, and no mention of exclusions or alternative paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_fair_evidence_bundleD
Portable FAIR evidence bundles for air-gapped team transfer.
Kiln Enterprise would tie the production record to the revision, surface missing approvals, and prepare the review packet. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=manage_fair_evidence_bundle
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| bundle_path | No | Default: "". | |
| evidence_case_id | No | Default: "". |
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 only that the feature is enterprise-gated; it says nothing about whether bundling mutates state, where bundle_path is written, whether an existing bundle is overwritten, or what the required action values do. The middle sentence describes what a different (paid) product *would* do rather than what this tool does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence earns its place; the remaining two sentences are an upsell pitch and a pricing URL that give the agent no operational information. The useful scope statement is front-loaded, but roughly two-thirds of the text is marketing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, a required un-enumerated `action` parameter, and near-empty parameter documentation, the description must carry the definition — and it does not. An agent cannot reliably invoke this tool without guessing valid `action` 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 required `action` parameter has no description and no enum, and the description supplies nothing to compensate — this is the single most important piece of missing information. The other two parameters (`bundle_path`, `evidence_case_id`) are described in the schema only as "Default: ''", so the description adds no semantics anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a resource ("Portable FAIR evidence bundles for air-gapped team transfer"), but the verb "manage" is never unpacked — the tool takes a required `action` parameter whose possible values are never revealed, so an agent cannot tell what operations are actually performed. Sibling FAIR tools (manage_fair_registry, manage_fair_characteristics, prepopulate_fair_draft) are not differentiated at all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only conditional guidance is "Requires Kiln Enterprise," which is a licensing gate, not a when-to-use rule. There is no indication of which situations call for this tool versus the many other FAIR-related siblings, and no statement of prerequisites for the air-gapped transfer scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_fair_registryC
Record and read the attested identities FAIR drafts consume.
Kiln Enterprise would tie the production record to the revision, surface missing approvals, and prepare the review packet. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=manage_fair_registry
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Default: "". | |
| kind | No | Default: "". | |
| action | Yes | ||
| payload | No | ||
| attested_by | No | Default: "". | |
| attested_on | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and mostly does not: it does not say whether recorded attestations are immutable, who may write, or what a call returns. The Enterprise paragraph (tying production records to revisions, surfacing missing approvals) implies the current tool does NOT do those things, which is useful but ambiguous — an agent cannot tell whether the local call is purely a read/write ledger or performs any validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence describes the tool; the remaining three are an upsell pitch and a pricing URL that consume most of the definition without helping an agent invoke it. Space that should carry behavior is spent on marketing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six parameters including a nested free-form payload, no annotations, and no output schema make this a complex tool, yet the description explains neither inputs nor results. An agent could construct the call syntactically but would be guessing at valid action values and payload 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 coverage is 67% and the documented fields only say 'Default: ""', so the description needed to compensate for key, kind, action, payload, attested_by, and attested_on. It mentions none of them, leaving the required action vocabulary and the meaning of the free-form payload object entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Record and read the attested identities FAIR drafts consume" gives a verb pair and a nominal resource, but "attested identities" is undefined jargon and the sentence never says what a "registry" entry is. Nothing distinguishes it from siblings like manage_fair_characteristics, manage_fair_evidence_bundle, or prepopulate_fair_draft, which an agent would need in order to pick the right 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 only constraint offered is "Requires Kiln Enterprise," which is a licensing prerequisite rather than guidance on when to call this vs. alternatives. There is no statement of which action values to use when, no mention of the FAIR draft workflow ordering, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_protection_outcomesC
Record and read real outcome observations for a protected board configuration (Enterprise).
Enterprise adds SSO, RBAC, and audit export. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=manage_protection_outcomes
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Default: "". | |
| notes | No | Default: "". | |
| state | No | Default: "". | |
| action | Yes | ||
| observed_on | No | Default: "". | |
| causal_status | No | Default: "reported". | |
| evidence_grade | No | Default: "unverified_report". | |
| source_event_id | No | Default: "". | |
| evidence_case_id | No | Default: "". | |
| article_reference | No | Default: "". | |
| evidence_reference | No | Default: "". | |
| observation_window | No | Default: "". | |
| execution_reference | No | Default: "". |
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 reveals the Enterprise gating, but says nothing about whether observations are mutable, what the read mode returns, whether records are append-only/immutable audit artifacts, or what the required "action" value does — notable gaps for a tool that both writes and reads outcome 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 substantive content is a single sentence, but three of the four lines are Enterprise upsell boilerplate and a pricing URL that do not help an agent invoke the tool. Front-loaded purpose is fine; the promotional tail is dead weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 13-parameter tool with no annotations and no output schema needs more than this. Most critically, the single required parameter "action" has no description, no enum, and no mention in the prose, so an agent cannot know what values to pass or what the tool will do with them.
Complex tools with many parameters or behaviors need more documentation. Simple 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 92%, so the schema already documents the field-level parameters and a baseline of 3 applies. The description adds no syntax, format, or interpretation guidance (e.g. what values evidence_grade or causal_status accept) beyond what the schema supplies.
Input schemas describe structure but not intent. Descriptions should explain non-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 pair ("record and read") is clear, but the resource — "outcome observations for a protected board configuration" — is undefined jargon that never gets explained. Against dozens of sibling tools named record_*_outcome (record_design_version_outcome, record_load_outcome, record_magnet_outcome), nothing here tells an agent why this one exists separately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires Kiln Enterprise" is an access prerequisite, not usage guidance. There is no statement of when to choose this over the other record_*_outcome tools, or how to decide between its own record and read modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_supplier_document_evidenceC
Create and maintain controlled supplier evidence (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=manage_supplier_document_evidence
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| region | No | Default: "global". | |
| purpose | No | Default: "conformal_coating". | |
| language | No | Default: "en". | |
| bom_items | No | ||
| design_id | No | Default: "". | |
| manual_id | No | Default: "". | |
| created_by | No | Default: "". | |
| issue_date | No | Default: "". | |
| source_url | No | Default: "". | |
| document_id | No | Default: "". | |
| reviewed_by | No | Default: "". | |
| product_form | No | Default: "". | |
| product_name | No | Default: "". | |
| document_text | No | Default: "". | |
| document_type | No | Default: "". | |
| supplier_name | No | Default: "". | |
| identity_spans | No | ||
| lot_identifier | No | Default: "". | |
| revision_label | No | Default: "". | |
| source_filename | No | Default: "". | |
| evidence_case_id | No | Default: "". | |
| correction_reason | No | Default: "". | |
| design_version_id | No | Default: "". | |
| review_acknowledged | No | Default: false. | |
| document_revision_id | No | Default: "". | |
| document_revision_ids | No | ||
| supersedes_revision_id | No | Default: "". | |
| currentness_attestations | 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 behavioral burden. It hints that Business adds team review and approval gates, which is useful context, but it says nothing about what review gates block, whether created evidence is immutable, what happens on correction, or what permissions are needed for a 29-parameter 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 purpose is front-loaded in the first sentence, which is good. But roughly half of the text is tier marketing and an upgrade URL that does not help an agent select or invoke the tool, so the description is not as economical as it could 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?
This is a complex, 29-parameter mutation tool with nested objects, no annotations, and no output schema. The description gives only a one-line purpose and tier constraints, leaving the action enumeration, review/approval workflow, and correction semantics entirely unexplained. It is far too thin 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 high (83%), so the baseline of 3 applies per the rubric. Still, the schema descriptions are mostly placeholder defaults ("Default: \"\""), and the description adds no meaning for the required action parameter, which has no enum or description in either place. The description does not compensate for the substantive documentation 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 names a specific verb+resource ("Create and maintain controlled supplier evidence"), which is better than a tautology. However, it never explains what counts as "supplier evidence" or how this differs from closely related siblings such as manage_fair_evidence_bundle, manage_fair_registry, or manage_protection_outcomes. An agent would need to infer the domain 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 only guidance is a plan-tier precondition ("Requires Kiln Business") and an upsell URL. There is no statement of when to use this tool versus alternatives, no exclusions, and no workflow context for the create-vs-maintain modes implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_team_memberB
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 | Default: "engineer". | |
| Yes | |||
| action | 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 behavioral burden. It discloses plan seat caps and role assignment context, but omits permissions required, whether removal is reversible, and authentication needs for this administrative mutation.
Agents need to know what a tool does to the world before calling 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 action and uses a structured Args section. It is appropriately sized, though the opening line is slightly incomplete because it excludes the list action that appears later.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameters and seat-plan context, which is useful for a multi-action admin tool. However, it lacks sibling differentiation for the overlapping add/remove/list tools and does not explain safety or reversibility for destructive actions.
Complex tools with many parameters or behaviors need more documentation. Simple 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 low, but the description compensates well: it enumerates allowed action values, explains that email is ignored for list, and lists valid role values. It does not mention the role default, which is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource (team member) and enumerates add/remove/update actions, plus a list action in the Args. However, the opening line omits the list action and does not distinguish this tool from sibling tools like add_team_member, remove_team_member, or list_team_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 action values and notes that email is ignored for list, but gives no guidance on when to use this multi-action tool versus the dedicated sibling tools. Enterprise/Business seat limits are context, not usage direction.
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.
may_i_printC
May the caller start a print on this printer right now, and on whose say-so?
| Name | Required | Description | Default |
|---|---|---|---|
| file_hash | No | Default: "". | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It suggests a read-only authorization query, but does not explicitly state that it has no side effects, whether it reserves or locks anything, what permissions are required, or what the response includes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted text. The question form is compact, though slightly less direct than a declarative statement of 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 two-parameter permission tool with no annotations and no output schema, the definition is incomplete: it does not explain what the answer returns, what 'on whose say-so' means operationally, or how file_hash affects the decision.
Complex tools with many parameters or behaviors need more documentation. 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 does not mention either parameter. printer_name has no schema description, and file_hash is only given a trivial default of "". With 50% schema coverage, the description should explain the role of file_hash in the permission decision, 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 states a specific check: whether the caller may start a print on a given printer and what authority supports that. It is clearly a permission query rather than a print command, though it does not explicitly contrast itself with siblings such as start_print or preflight_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 implies a pre-print permission check with 'right now', but gives no explicit guidance on when to call it versus start_print, preflight_check, or check_print_readiness. There are no stated exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_decoration_preset_branchesC
Merge source_branch into target_branch semantically. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=merge_decoration_preset_branches
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| merged_by | No | ||
| resolutions | No | ||
| source_branch_id | Yes | ||
| target_branch_id | Yes | ||
| ancestor_preset_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does add genuinely relevant context: on success it opens an interactive 3D stage, oversized meshes are auto-decimated, and hosts without panel support get a browser link. However, it never discloses the destructive/irreversible nature of a branch merge, conflict handling, or permission requirements, which are the traits an agent most needs 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 purpose is front-loaded, but two large blocks are promotional ('Everything in Free... Requires Kiln Pro. Upgrade: <url>') and the inline 3D stage behavior is stated twice with overlapping wording. Much of the text does not help an agent invoke 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?
For a 5-parameter mutation tool with no annotations, no output schema, a nested object parameter, and 0% schema description coverage, the description should explain conflict resolution, ancestry, and return behavior. Instead it covers only the 3D stage, leaving the core merge semantics and most parameters unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 5 parameters, including a nested 'resolutions' object, so the description must compensate. It only gestures at source and target branches (mapping to source_branch_id/target_branch_id) and says nothing about ancestor_preset_version_id, merged_by, or the structure of resolutions, leaving most parameter meaning undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a clear verb+resource: merge source_branch into target_branch. It is distinguishable from sibling merge tools only through the tool name ('decoration_preset'), not the description text, which speaks generically of 'source_branch' and 'target_branch'. The qualifier 'semantically' is left unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus merge_design_branches, merge_feature_branches, or cherry_pick_decoration_modification, and no mention of the related detect_decoration_preset_merge_conflicts tool. The 'Requires Kiln Pro' line reads as an upsell hook rather than a clear prerequisite statement, so the agent still cannot tell when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_design_branchesC
Record a merge of source into target with conflict resolution. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=merge_design_branches
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| pr_id | No | ||
| merged_by | No | ||
| resolutions | No | ||
| merge_strategy | No | Default: "semantic". | |
| source_branch_id | Yes | ||
| target_branch_id | Yes | ||
| merged_version_id | No | ||
| ancestor_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry genuinely non-obvious behavior: the tool opens an interactive 3D stage in MCP Apps hosts, attaches a browser stage link otherwise, and auto-decimates oversized meshes for the viewer. However, core mutation semantics are undisclosed — whether the target branch is modified in place, what happens when unresolved conflicts remain, whether pr_id/approval is mandatory, and critically whether the merge itself fails without Kiln Pro or only the version-preservation does (the text is inconsistent: 'Kiln Pro would preserve this version...' is counterfactual, then 'Requires Kiln Pro').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful first sentence is front-loaded, but the rest is upsell copy ('branch, restyle, compare outcomes', pricing URL, tool-named tracking link) and the inline 3D stage behavior is stated twice — once in paragraph one and again in the 'INLINE 3D STAGE' block. A large share of the text is promotional rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, 8 documented-poorly parameters, and a license gate, so the description should be doing heavy lifting; it covers the viewer side effect well but omits the merge outcome, conflict-failure behavior, and license-gate failure mode. An agent can start the call but cannot predict what it returns or how it fails.
Complex tools with many parameters or behaviors need more documentation. Simple 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 13% with 8 parameters (one nested object), so the description must compensate and it largely does not. It implies source_branch_id, target_branch_id and resolutions via 'source into target with conflict resolution', but never explains the shape or keys of 'resolutions', what values merge_strategy accepts beyond the schema's default of 'semantic', or what pr_id, merged_by, merged_version_id and ancestor_version_id are for.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: 'Record a merge of source into target with conflict resolution', and the name makes clear it is design-branch scoped rather than feature or preset branches. It never explicitly distinguishes itself from merge_feature_branches or merge_decoration_preset_branches, so differentiation is left to the naming convention rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus the sibling merge tools, no prerequisite workflow (e.g. must conflicts be detected first via detect_merge_conflicts, or must a PR be approved), and no when-not-to-use. The only conditional given is 'Requires Kiln Pro', which is a gate, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_feature_branchesC
Record a merge — a = source.head, b = target.head. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=merge_feature_branches
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| merged_by | No | ||
| resolutions | No | ||
| source_branch_id | Yes | ||
| target_branch_id | Yes | ||
| merged_feature_version_id | Yes | ||
| ancestor_feature_version_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description does add real behavioral facts: it opens an inline interactive 3D stage as a side effect, decimates oversized meshes, and requires Kiln Pro. However, it never says whether the merge mutates branch heads, what happens on conflicts, or whether the recorded merge is reversible — the core behavioral questions for a mutation tool. The pricing boilerplate ("Everything in Free, plus calibration that learns your printer...") is also incoherent for this 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 3D stage explanation is given twice — once inline and again in a dedicated "INLINE 3D STAGE" block — and a subscription-tier marketing paragraph sits between the purpose sentence and the behavioral detail. Useful signal is buried behind duplicated promotional 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 six-parameter mutation tool with no annotations and no output schema, the description omits conflict handling, return values, head-mutation semantics, and all parameter meaning. It spends its remaining space on a viewer feature and an upgrade link, leaving an agent unable 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?
Schema description coverage is 0% across six parameters including a nested `resolutions` object, so the description carries the full burden — and it explains essentially none of them. `merged_feature_version_id`, `ancestor_feature_version_id`, `merged_by`, and the `resolutions` map are never mentioned, and the git-ref shorthand for source/target is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Record a merge" restates the tool name's own verb+resource, and the only elaboration is a cryptic git-ref notation (a = source.head, b = target.head) that does not explain what a "feature branch merge" records here. It never distinguishes this from nearby siblings such as source_merge_three_way, merge_design_branches, or rebase_feature_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative routing anywhere in the description. The only conditional language is about the 3D viewer and a Pro-tier upsell, neither of which helps an agent decide between this and the three or four competing merge/conflict tools.
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 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?
With no annotations, the description carries the full burden and does a fair job: it discloses that merging is plain concatenation with no transforms, that a dict of merge statistics is returned, and that on success an interactive 3D stage opens with automatic decimation of oversized meshes — a real side effect. It is silent on overwrite behavior for output_path, error handling for missing/invalid files, and any permissions, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the alternative in the first two lines, then documents params and return value. The stage paragraph is longer than needed and partly host-dependent, but it is separated out and does not obscure the primary 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?
No output schema exists, and the description compensates by naming the return value ('Dict with merge statistics'). Given a 2-param, no-annotation tool, the main remaining gap is what happens on invalid input paths or when output already exists — an agent could still call it correctly, but failure semantics are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 document both params minimally ('List of STL file paths to merge', 'Destination path for the merged file'). It adds no format, ordering, overwrite, or path-validation semantics beyond restating the 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?
States a specific verb and resource ('Combine multiple STL files into a single mesh file') plus a scope qualifier ('simple concatenation'). It is immediately distinguishable from the many other merge_* siblings because it names the file/mesh level and the concatenation 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?
Explicitly routes the agent to merge_stl when x/y/z offsets are needed, and gives a positive use case ('composing multi-part designs into one printable file'). It lacks any negative guidance beyond the positioning case (e.g., no guidance on how many files are sane, or on mixing units), so not quite a 5.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden — and it does: it explains the batched merge algorithm, how overlapping Z ranges are ordered by tool, the T0/T1 tool-change output and its conversion to M620/M621, the collision failure mode for overlapping XY, and the keys returned. This is behavioral context beyond anything structured fields 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?
Purpose and sibling relationship are front-loaded, then the precondition is bolded, then the args block. Slightly long, and the 'Args:' list partly duplicates the example, but nearly every sentence adds operational 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 no-annotation, no-output-schema, two-parameter tool, it covers purpose, pipeline position, precondition, input shape, and the return dict keys. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema gives 'parts' no description at all (a bare anyOf of string/array) and only a stub for output_path, so the description must compensate and does: it enumerates the required fields gcode_path, tool_index, and name with a worked JSON example, plus the temp-directory default for output_path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('merge separately-sliced gcode files into one multi-tool gcode') and immediately scopes it within the pipeline, naming the downstream sibling wrap_gcode_as_3mf. An agent can distinguish it from wrap_*, compose_multicolor_3mf, and merge_stl without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly positions it as 'the key step between slicing individual parts and wrapping as a Bambu 3MF', which tells the agent both when to use it and what comes next. It also states a hard precondition (XY-disjoint parts). It stops short of naming an alternative for the overlapping-footprint case (e.g., separate_overlapping_parts), leaving that routing to inference.
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 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 | Default: "". | |
| file_paths | Yes | ||
| output_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full load, and it does well: it discloses that the tool writes an output file, returns output_path/total_triangles/bounding_box, and that success opens an interactive 3D stage with automatic decimation of oversized meshes. It omits overwrite behavior for output_path and 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?
Purpose and the sibling comparison are front-loaded in the first two paragraphs, and the parameter lines are compact. The trailing 'INLINE 3D STAGE' paragraph is longer than it needs to be and reads partly as promotion, but it conveys real 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?
Covers the operation, all three parameters, the return shape despite no output schema, and the notable viewer side effect. Remaining gaps are edge-case handling (existing output file, mismatched positions count) rather than anything that would cause a wrong call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the schema is unhelpful (positions merely says 'Default: ""'), but the description compensates by explaining file_paths is a JSON array of STL paths, output_path is the destination, and positions is an optional JSON array of {x,y,z} offsets per file. It leaves open whether the offsets array must match file_paths in length or order.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('merge multiple STL files into a single mesh') plus the distinguishing capability (positional offsets), and explicitly separates it from the sibling merge_mesh_files. An agent can tell which merge tool to pick without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when you need to position parts relative to each other') and names the alternative, merge_mesh_files, for unpositioned concatenation. It stops short of stating exclusions or prerequisites (e.g. files must already exist, formats accepted), so not quite a 5.
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%): ``analyze_printability``'s own score and
grade for ``material`` / ``printer_id`` — pass the ones you gave
``analyze_printability`` and the two match
- **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).
:param material: Material the printability factor is judged for
(default ``"pla"``).
:param printer_id: Optional printer the printability factor is
judged for.
: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 |
|---|---|---|---|
| material | No | Default: "pla". | |
| file_path | Yes | ||
| printer_id | No | Default: "". |
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 richly: it explains that CAD files deliberately withhold a letter grade, why (20% measures Kiln's own tessellation, so the same part grades differently by converter), and defines the exact/measured/about_our_copy bands with units. This is behavioral context well beyond a bare 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?
Long but front-loaded and organized under bold headers, with the mesh case before the CAD case. Most content earns its place; the final restatement about quoting 'exact' is slightly redundant with the band definitions but reinforces a key instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a moderately complex dual-mode behavior, the description fully explains the return shape (per-factor scores, 0-100 overall, letter grade for mesh; three-band report with grade: null for CAD). Nothing needed to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description compensates: file_path is shown to accept .stl/.obj/.glb and .step/.stp, material is defined as the material the printability factor is judged for (default pla), and printer_id as the optional printer for that judgment. This adds meaning beyond the terse 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?
States a specific verb and resource ('graded scorecard for a mesh, an intake report for a CAD file') and explicitly branches on file type, naming the two subjects (mesh vs cad_file). An agent can distinguish this from siblings like analyze_printability or diagnose_mesh without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for both modes and ties the printability factor to analyze_printability by instructing the caller to pass the same material/printer_id so the two match. It does not, however, state explicit when-not-to-use conditions or name a true alternative tool for a plain quality check.
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 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 | Default: "x". | |
| file_path | Yes | ||
| output_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the geometry semantics (negating coordinates, reversing triangle winding to preserve normals) and, importantly, that output_path defaults to overwriting the input file, which is the key risk an agent needs to know. It also discloses that a 3D stage panel opens on success and that oversized meshes are decimated. The gap is that the return value is only described as "Dict with mirror 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?
The core description is short, front-loaded, and each sentence carries information (mechanism, params, return). The appended stage paragraph is longer than needed and drifts toward promotional phrasing ("the PNG preview is the floor, not the whole experience"), but it does convey a genuine behavioral 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?
For a 3-parameter mesh transform with no output schema and no annotations, the description covers the operation, all parameters, the overwrite risk, and the stage side effect — enough for correct invocation. The only shortfall is the vague return-value statement, which matters somewhat 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?
Schema coverage is 67% and the schema leaves axis and output_path descriptions nearly empty, so the description adds real meaning: it enumerates the legal axis values ("x", "y", "z", default "x") — effectively supplying the missing enum — identifies file_path as an STL path, and explains that output_path defaults to overwriting the input. That is meaningful 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?
States a specific verb and resource ("Mirror (reflect) a mesh along an axis") and immediately explains the mechanism, so an agent knows exactly what operation is performed. It does not name or contrast with near-siblings such as rotate_model, rescale_model, or boolean_mesh_op, which keeps it from 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?
There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named despite many adjacent mesh-transform tools existing. Usage is only implied by the verb and the axis parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_detailsARead-only
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?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds useful context by enumerating what the call returns (description, instructions, license, tags, file count), but does not mention auth requirements for private models, rate limits, or error behaviour.
Agents need to know what a tool does to the 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 purpose sentence, then a short Args block and a Returns summary. The Google-style docstring formatting and indentation add verbosity, but every line still carries information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by summarising the return payload. For a single-parameter read tool with read-only annotations that is nearly complete; only edge cases like missing/invalid IDs or private-model access are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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% (a bare integer with no description), so the description carries the burden. It does so adequately by defining thing_id as a 'Numeric thing ID' and telling the agent where to obtain it, which is exactly the missing 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?
States a specific verb and resource: 'Get full details for a Thingiverse model.' An agent can distinguish this from sibling lookup tools (search_models, model_files, get_cached_model) because it explicitly says 'full details' and names search_models as the discovery step. It stops short of an explicit contrast with siblings, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the thing_id note '(from ``search_models`` results)' tells the agent this is a follow-up call after discovery, but there is no explicit when-to-use/when-not or routing to alternatives such as model_files for just the file list.
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``.
This is the text report from the computer the printer is attached
to. When Kiln's hosted connector (api.kiln3d.com) is also connected,
``monitor_printer`` there is the door for the inline live monitor and
camera; call that one to show the person a live panel. The report's
closing ``Live monitor:`` line says whether a panel came with THIS
result or where the live monitor is instead — repeat it as written.
: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.
:param show_panel: Open the inline live monitor panel again even
though one opened by an earlier call is still live above. Pass
only when the person asks to see the panel again; the report
itself is unchanged. Read by the inline monitor's result hook
(``kiln.local_monitor``), not here.INLINE LIVE MONITOR: in apps that draw MCP Apps panels, this tool's result also carries Kiln's inline print monitor — a live panel with progress, temperatures, and the camera while a print runs. The result's own 'Live monitor:' line says whether that panel is open here, attached but unconfirmed, or not available in this app (then it names the web monitor instead); repeat what that line says and never tell the person a panel is open on the strength of this description. The panel polls the printer itself once open, so do not call this tool again to refresh it: later checks go through printer_status or first_layer_status, and a repeat while the panel is live returns the text report with a one-line card, not a second panel. Pass show_panel=True only when the person asks to see the panel again. Free with a Kiln sign-in; the text report below is always complete on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| show_panel | No | Default: false. | |
| printer_name | No | ||
| include_snapshot | No | Default: true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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: it discloses that the report is fixed-format text from the attached computer, that brief resolution is best-effort and silently skips the 'Goal:' line on failure, that a repeat call while a panel is live returns a one-line card rather than a second panel, that the panel self-polls so this tool must not be re-called to refresh, and that the 'Live monitor:' line must be repeated verbatim rather than asserted from the description. That is exactly the kind of behavioral context an agent cannot infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and sibling routing are correctly front-loaded, but the definition repeats itself: the show_panel rule ('pass only when the person asks to see the panel again') and the 'Live monitor:' line instruction appear in both the :param list and the trailing INLINE LIVE MONITOR block. For a one-shot status read, roughly a third of the text is duplicative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool whose complexity is really about the attached live panel rather than the report: it covers all three panel states an app can be in, what to do after a panel is live, which tools to use for subsequent checks, and the sign-in/free-tier condition. An output schema exists, so return values needn't be spelled out, yet the report's contents are still summarized for planning.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% and two schema entries are nearly empty ('Default: ""', 'Default: true'), so the description must compensate — and it does, giving brief_id its provenance (saved-goal id from design_session), its effect (appends a single 'Goal:' line), and its failure mode (silently skipped). show_panel and printer_name are also explained with defaults and the 'pass only when the person asks' constraint. Minor gap: include_snapshot's capture/save semantics are mentioned but not tied to the snapshot being returned vs saved.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource — a one-shot, human-readable print status report — and immediately enumerates what it contains (progress, temps, speed, cost, ETA). It also explicitly names the two siblings it is not (monitor_print_vision, watch_print), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is stated with explicit alternatives and the condition that selects each: 'Use for quick status checks', 'For structured data + AI vision inspection, use monitor_print_vision', 'For persistent background monitoring, use watch_print'. It further adds a non-obvious routing rule: when Kiln's hosted connector is connected, monitor_printer is the door for the inline live panel that should be shown to the person.
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).
show_panel: Open the inline live monitor panel again even though
one opened by an earlier call is still live above. Pass only
when the person asks to see the panel again. Read by the
inline monitor's result hook (``kiln.local_monitor``), not here.INLINE LIVE MONITOR: in apps that draw MCP Apps panels, this tool's result also carries Kiln's inline print monitor — a live panel with progress, temperatures, and the camera while a print runs. The result's own 'Live monitor:' line says whether that panel is open here, attached but unconfirmed, or not available in this app (then it names the web monitor instead); repeat what that line says and never tell the person a panel is open on the strength of this description. The panel polls the printer itself once open, so do not call this tool again to refresh it: later checks go through printer_status or first_layer_status, and a repeat while the panel is live returns the text report with a one-line card, not a second panel. Pass show_panel=True only when the person asks to see the panel again. Free with a Kiln sign-in; the text report below is always complete on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_pause | No | ||
| show_panel | No | Default: false. | |
| failure_type | No | ||
| printer_name | No | ||
| save_snapshot | No | ||
| include_snapshot | No | Default: true. | |
| failure_confidence | 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 the return payload (webcam image base64/file plus metadata), auto-pause side effect with confidence threshold and env default, sign-in requirement, and inline monitor state/polling behavior. It also warns not to call again to refresh a live panel.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and alternatives are front-loaded, and most detail earns its place because annotations are absent and the tool has side effects. It is somewhat long and repeats the show_panel instruction, so it is not maximally 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 seven-parameter tool with no annotations and no output schema, the description covers return values, side effects, auth, and panel lifecycle. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, but the description documents all seven parameters beyond the schema: default-printer omission, snapshot capture/save behavior, failure type examples, confidence range, auto_pause default/env threshold, and show_panel semantics. This fully compensates for the low structured 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?
States a specific action and scope: taking a snapshot plus structured data for visual inspection of an in-progress print. It explicitly distinguishes itself from monitor_print and watch_print, so an agent can identify its role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (analyzing camera images for print failures) and names alternatives with conditions: monitor_print for a quick text status, watch_print for persistent background monitoring. It also gives narrow guidance on when to pass show_panel, which is not inferable elsewhere.
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.
**Only a printer Kiln drives can make this print** — today a Bambu with
an AMS. At any other printer the copies are REFUSED before slicing
with code ``MULTI_MATERIAL_NOT_DRIVEN`` (every copy would print in one
colour; the slot map below is a Bambu instruction). The refusal
carries what Kiln saw on the printer (``multi_material``) and the
composed plate (``multi_material_3mf``) for slicing elsewhere.
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: The tray each copy prints from, by the printer's own
tray id (``unit * 4 + slot`` on a chained unit, the unit id on an
AMS HT; ``ams_status`` lists each tray's ``tray_id``). E.g.
``[0, 1, 2, 3]`` for all 4 AMS Lite trays, ``[0, 5]`` for A1 and B2.
: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 | Default: "PLA". | |
| ams_slots | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| spacing_mm | No | Default: 10.0. | |
| slicer_path | No | ||
| preview_token | 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 thoroughly: it discloses the Bambu/AMS prerequisite, refusal behavior and error code, included refusal payload fields, slicer dependency, printer idle requirement, and downstream Bambu Studio behavior. This is unusually complete behavioral disclosure for a print-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?
The description is long but well-structured: purpose and destructive constraint are front-loaded, modes are clearly separated, and parameters are grouped at the end. Some phrasing is verbose and the marketing-style example is optional, but most content earns its place for a complex print 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?
Given nine parameters, no annotations, and no output schema, the description is highly complete. It covers prerequisites, failure behavior, mode selection, parameter meanings, emitted 3MF behavior, and the slicer_note handoff instruction.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 22%, but the description compensates by explaining nearly every parameter, including auto-detect behavior, AMS tray id semantics with examples, color formatting, spacing defaults, and slicer path. It omits only preview_token, leaving one of nine parameters undocumented in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a precise verb and resource: printing multiple copies of one model, each in a different AMS color. It also distinguishes the tool from ordinary multi-copy or multi-material workflows by emphasizing per-copy AMS color 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 gives clear usage conditions: it only works on a Kiln-driven printer with AMS, fails with a specific error elsewhere, requires a local slicer, and distinguishes auto-detect vs manual modes. It does not explicitly name sibling alternatives, but the operational context is strong.
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. Copies that do
not all fit the bed are refused, saying so, never sliced short.
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 | Default: 10.0. | |
| slicer_path | No | ||
| printer_name | No | ||
| preview_token | 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: it discloses placement/collision handling, that the plate is sliced as a single job, which slicer engine is chosen and why (--duplicate vs. mesh duplication fallback), and the refusal behavior for oversize batches ("refused, saying so, never sliced short"). It also makes the physical side effect explicit ("and prints") plus the idle/connected precondition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and its constraints are front-loaded in the first three paragraphs, with the engine-selection detail following. The prose is dense but every sentence adds information; only the RST double-backtick formatting is noise for an agent reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, physically-acting tool with no output schema and near-zero schema coverage, the description covers mechanism, failure mode, and environment prerequisites well. It is still silent on what the call returns (job id? status?) and on preview_token, which leaves a modest 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 only 13%, so the Args block does the heavy lifting: it explains copies' valid range (2-20), that printer_id drives auto-profile selection, spacing_mm's default, and what overrides and slicer_path are for. One schema parameter, preview_token, is never mentioned, leaving a documented-vs-undocumented 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 opening sentence gives a specific verb and resource ("Print multiple copies of a model arranged on one build plate") and the body explains the mechanism (grid arrangement, single-job slice, print). It does not differentiate itself from close siblings such as multi_color_copies or plan_multi_copy_split, so an agent must infer the boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prerequisites are stated clearly: a slicer must be installed locally and "the printer must be idle and connected," which tells the agent when the call can succeed. There is no explicit when-not guidance or named alternative for the multi-color / split-plate cases.
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.
**Only a printer Kiln drives can make this print** — today a Bambu with
an AMS. At any other printer (a Klipper MMU Kiln can read but not
route, or a single-feed machine) a multi-filament plate is REFUSED
before slicing with code ``MULTI_MATERIAL_NOT_DRIVEN``: the objects
would all come out in one filament. The refusal carries what Kiln saw
on the printer (``multi_material``) and the composed file
(``multi_material_3mf``), so the user can slice it in a slicer that
drives their unit. A single-filament plate is never refused.
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. Sets the plate for its materials: the hottest one's temperatures,
the slowest one's melt rate, the gentlest cooling
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 | Default: true. | |
| printer_id | No | ||
| slicer_path | No | ||
| objects_json | Yes | ||
| printer_name | No | ||
| preview_token | No | ||
| extra_overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the printer restriction, refusal behavior, error code, what the refusal carries, the automatic build/slice/AMS-mapping steps, and the PrusaSlicer/OrcaSlicer prerequisite. It is less explicit about confirmation/consent semantics or whether the print starts immediately, which is relevant for a physical print 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 long but appropriately structured for a complex print tool: purpose first, then critical printer restriction, example, nested object fields, automatic steps, and arguments. The later Args section partly duplicates field documentation already given, adding some redundancy, but the overall front-loading is strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with low schema coverage and no output schema, this is largely complete: it explains the nested input format, prerequisites, failure behavior, and key result fields like multi_material_3mf and slicer_note. The notable omission is preview_token, and output details are only lightly 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 description coverage is only 14%, so the description must compensate. It documents the required objects_json structure in detail (file_path, material_id, name, color, group), explains printer_name, printer_id, auto_ams, extra_overrides, and slicer_path, but does not mention the preview_token parameter at all.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: print multiple objects in different materials/colors on one build plate. It distinguishes this from single-material prints and multi-copy workflows, so an agent can tell what it is for without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit conditions: only a Kiln-driven Bambu with AMS can run it, other printers will refuse with MULTI_MATERIAL_NOT_DRIVEN, and single-filament plates are never refused. It even tells the user how to recover by slicing in another slicer. It does not name sibling tools such as multi_color_copies or compose_multicolor_3mf, so tool-selection alternatives are implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nozzle_drift_attributionC
Pro+ — attribute observed drift OR a failure hypothesis to nozzle wear.
Kiln Pro would track accumulated nozzle wear on this printer, attribute quality drift to it, and predict when maintenance is due. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=nozzle_drift_attribution
| Name | Required | Description | Default |
|---|---|---|---|
| drift_kind | No | Default: "unknown". | |
| printer_id | Yes | ||
| percent_used | No | ||
| drift_magnitude_mm | No | ||
| recent_filament_class | No | Default: "standard". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the single most important behavioral fact: the tool requires a paid tier, so the agent can expect a gated/upsell response rather than analysis. What is missing is what a non-Pro caller actually receives (error, redirect payload, partial result) and whether the tool returns attribution data at all versus a feature-preview stub.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and the purpose statement is front-loaded, so structure is reasonable. But roughly half the text is marketing and a URL, and the middle sentence is speculative ("would track") rather than informative, so several words do not earn their 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 five-parameter tool with no output schema and no annotations, the description should explain inputs, expected return, and relationship to the wear/maintenance siblings. Instead it explains tier gating three times and leaves the actual analytical contract, and the behavior in the unentitled case, undefined.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40%, and three of five parameters (printer_id, percent_used, drift_magnitude_mm) have no documentation anywhere. The description contributes nothing about parameter meaning, units, or accepted values for drift_kind and recent_filament_class, which the schema only notes as having defaults. The phrase "observed drift OR a failure hypothesis" loosely gestures at drift_kind semantics but does not clarify 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 opening line states a specific verb and resource ("attribute observed drift OR a failure hypothesis to nozzle wear"), which is more than a restatement of the name. However, the very next sentence shifts into hypothetical mood ("Kiln Pro would track...") and then into an upsell, leaving it unclear whether the tool performs any attribution at all today or merely returns a paywall. It also does not distinguish itself from closely related siblings such as nozzle_wear_status, maintenance_due, or get_maintenance_prediction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Observed drift OR a failure hypothesis" hints at two input scenarios, which is the only usage signal offered. There is no statement of when to pick this over nozzle_wear_status, get_maintenance_prediction, or auto_detect_nozzle, and no prerequisites or exclusions beyond the paywall note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nozzle_wear_statusC
Pro+ — accumulated wear status for a printer's nozzle.
Kiln Pro would track accumulated nozzle wear on this printer, attribute quality drift to it, and predict when maintenance is due. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=nozzle_wear_status
| Name | Required | Description | Default |
|---|---|---|---|
| printer_id | Yes | ||
| recent_filament | 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 behavioral burden. It usefully discloses that the feature is Pro+ and requires Kiln Pro, but it does not explain whether the tool is read-only, what happens when the user lacks Pro, what data is returned, or how wear/maintenance predictions are represented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the description is short. However, 'Pro+' and 'Requires Kiln Pro' are redundant, and the upgrade URL is promotional rather than operational, so not 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 tool with two parameters, no output schema, and no annotations, the description is incomplete. It tells the agent the feature is gated but leaves parameter meaning, return contents, and failure behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 should compensate but largely does not. It implies a printer context via 'for a printer's nozzle', which loosely maps to printer_id, but it says nothing about the recent_filament parameter or how either parameter affects the wear analysis.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 resource and concept: accumulated wear status for a printer's nozzle. It is clearly about nozzle wear rather than general printer status. However, it does not distinguish this tool from closely related siblings such as get_my_nozzle_wear_patterns, nozzle_drift_attribution, maintenance_due, or get_nozzle_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?
The only usage guidance is that it requires Kiln Pro. It gives no indication of when to use this tool instead of adjacent wear, maintenance, or nozzle-state tools, and no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_billing_portalA
Get a Stripe Billing Portal URL so a paying customer can update their card, see invoices, or cancel. Plan switches are not in the portal and never made by an agent: explain the plans, then send the person to Billing in the Kiln web app (https://app.kiln3d.com/settings/billing) to choose and confirm.
| Name | Required | Description | Default |
|---|---|---|---|
| return_url | No | Default: "https://kiln3d.com/account". | |
| license_key | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does disclose the return value (a portal URL) and the important behavioral constraint that plan changes must never be performed by an agent. It leaves out portal URL lifetime/single-use behavior and whether the customer must be authenticated to generate one, which matters for a credential-adjacent 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, front-loaded with the capability and then the hard constraint plus fallback. Every clause carries decision-relevant information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description covers purpose, action scope, and the critical prohibition on plan switching. The remaining gap is invocation detail around license_key and URL expiry, which is meaningful but secondary.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: return_url has a stated default, but license_key is completely undocumented in the schema. The description mentions neither parameter, so an agent gets no guidance on what license_key must be (the paying customer's key?) or when to override return_url.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get a Stripe Billing Portal URL) plus the concrete customer actions it enables: update card, see invoices, cancel. That is enough for an agent to distinguish it from the many printing/design siblings that dominate the tool list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 excluded case ('Plan switches are not in the portal and never made by an agent') and routes to a named alternative: explain the plans, then send the person to https://app.kiln3d.com/settings/billing. This is a real when/when-not/alternative split, not an implied one.
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``. On one machine it
says which jobs its loaded spool can take, in order; across
several machines it picks a printer for each job, preferring
colour matches and fewer spool swaps (Kiln Business,
https://kiln3d.com/pricing).
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, and it does disclose the optimization objective (prefer colour matches and fewer spool swaps) plus the per-machine ordering semantics — genuinely useful behavioral context. However, it never says whether the tool actually dispatches jobs or only returns an assignment plan, nor what happens when no printer can take a job, which are critical for a fleet-mutating-sounding 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?
Purpose is front-loaded and the docstring-style Args block is reasonably tight. The parenthetical marketing link '(Kiln Business, https://kiln3d.com/pricing)' does not earn its place in a tool schema and the leading indentation is unusual, but overall there is little wasted 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?
For a tool with no annotations, no output schema and a 0%-documented schema, the description does cover the input contract well. What is missing is the return/effect contract: whether the result is a plan or an executed dispatch, and how unassignable jobs are reported. Those gaps matter given the fleet-scale stakes.
Complex tools with many parameters or behaviors need more documentation. Simple 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 single 'jobs' param is just an array of free-form objects with additionalProperties:true), so the description does real work by naming the required dict keys file_name, material_type, required_grams and the optional color. It stops short of value formats — units for required_grams, valid material_type values, colour encoding — so it 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?
States a specific verb+resource ('Assign print jobs to printers') with the scoping constraint 'by material availability', and clarifies two operating modes (one machine vs. several machines). It does not name a distinguishing sibling such as suggest_printer_for_job or fleet_submit_job, so the agent must infer the boundary 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?
The single-vs-multi-machine framing implies when each mode applies, but there is no explicit 'use this when…/use X instead…' guidance and no prerequisites (e.g., whether printers must already be registered or locked). Usage context is implied rather than stated.
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
fewest overhangs and the most bed contact. Re-orients the mesh
and places it flat on the build plate (z_min = 0).
``printability_score`` / ``printability_grade`` are the chosen
orientation's score from ``analyze_printability`` itself, judged
for ``material`` and ``printer_id`` — pass the same ones you
gave ``analyze_printability`` and the two numbers match.
:param file_path: Path to the STL file.
:param output_path: Output path. Defaults to overwriting the input.
:param material: Material the score is judged for (default ``"pla"``).
:param printer_id: Optional printer the score is judged for.
:returns: Dict with rotation angles, overhang stats, the
printability score and grade, and new dimensions.INLINE 3D STAGE: on success this tool 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 | Default: "pla". | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses that output_path defaults to overwriting the input file (a destructive default an agent must know), that re-orientation sets the mesh flat at z_min = 0, and that oversized meshes are auto-decimated for the 3D stage. It does not state what happens to the original file when a separate output_path is given, nor whether the multi-candidate search is slow/expensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and mechanics are front-loaded in two tight sentences, which is good. However, roughly a third of the text is a promotional INLINE 3D STAGE block ('the PNG preview is the floor, not the whole experience'), and the reST :param:/:returns: lines restate content already in the schema, adding bulk without new 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?
There is no output schema, so the description compensates by enumerating the return dict (rotation angles, overhang stats, printability score and grade, new dimensions). Combined with the in-place overwrite warning and the stage/decimation note, an agent has enough to call this correctly; only failure modes and runtime cost are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% but the schema descriptions are just terse default strings, so the prose adds real meaning: file_path is the STL path, material and printer_id define what the returned score is judged against, and output_path defaults to in-place overwrite. That is a meaningful upgrade over the schema, though it never states accepted material values or printer_id 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 opens with a specific verb+resource+objective: auto-rotate a mesh to minimize overhangs and maximize bed contact, and it explains the mechanism (tests multiple candidates, picks the best). It also distinguishes itself from analyze_printability by framing that tool as the scorer whose numbers this one reproduces. It does not differentiate against near-siblings such as auto_orient_model or check_orientation, which keeps it from 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 is implied rather than stated: you gather that this is the pre-print step to run when orientation matters, and there is a useful coordination hint to pass the same material/printer_id used with analyze_printability so the scores match. There is no explicit when-not guidance, no ordering against auto_orient_model or check_orientation, and no mention of prerequisites such as a valid manifold mesh.
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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | Default: "". | |
| constraints | No | Default: "". | |
| template_id | Yes | ||
| max_variants | No | Default: 27. | |
| samples_per_param | No | Default: 3. |
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 most of it: it discloses the combinatorial sweep cost (max_variants), that OpenSCAD generation plus structural analysis runs per variant, that STLs are written to output_dir, and that a side effect occurs on success (opening Kiln's interactive 3D stage, with automatic mesh decimation). It still omits runtime expectations, auth requirements, and what happens on partial failure, so it isn't 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 core is well front-loaded: purpose, then algorithm, then when-to-use, then params, then returns. The appended 'INLINE 3D STAGE' and 'MAKE DOORS' blocks do earn some place (routing around the missing design_session and disclosing the stage side effect), but they read as bolted-on context rather than tight, essential 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?
There is no output schema, and the description compensates by enumerating the return dict (best_params, best_score, best_grade, best_stl_path, variants_tested, all_scores, summary), which is more than most definitions offer. Given a 5-parameter compute-and-write tool with no annotations, it is nearly complete, missing only cost/runtime and error-behavior 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?
The input schema descriptions are essentially empty ('Default: ""', 'Default: 27.'), so the description must compensate and does: template_id is sourced from the design template library, samples_per_param and max_variants are explained with their defaults and meaning, constraints is given a format plus a concrete JSON example, and output_dir notes it falls back to a temp dir. All five parameters gain real 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?
States a specific verb and resource: 'Find the structurally strongest version of a parametric template,' then elaborates the exact mechanism (sweep each parameter across [min,max], generate combinations via OpenSCAD, score structurally). This is clearly distinguishable from siblings like solve_template_constraints, generate_template_variations, or optimize_print_orientation, which do different 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?
Gives an explicit when-to-use trigger ('when you want to automatically find optimal dimensions for a functional part') reinforced by a concrete example about wall thickness and bracket height. It lacks any when-not guidance or named alternatives (e.g., variants-generation tools), 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.
paint_decoration_facesA
Paint exactly the faces a decoration carve created (Pro-free).
A deboss/emboss records which output triangles it created —
recess floors and side-walls — in a face-provenance sidecar
beside the decorated mesh. This tool paints THOSE faces and
nothing else, so a debossed logo with a closed outline (any
mark with enclosed regions) colors only its carved strokes:
the untouched surface island inside the outline stays the
body color, where crease-angle segmentation would have
"filled the logo in".
Use after any decoration door (``decorate_surface``,
``apply_decoration``, ``apply_decoration_preset``,
``smart_decorate``, ``batch_decorate``…) — they all record
the sidecar. For meshes with no sidecar (older files,
hand-made carves), fall back to ``segment_mesh_regions`` +
``paint_mesh_regions``.
Writes a painted 3MF (one watertight object, per-triangle
colors) via the same composer ``paint_mesh_regions`` uses,
so the output slices identically. A successful paint is
also written back into the carve's face record (color,
target, output file) so the design's provenance says
"carved, then painted" — ``paint_recorded`` in the result
reports whether that write-back landed.
Says whether its colours are on the printer, as
``colour_availability`` (absent when Kiln cannot see what is
loaded). Relay its ``say`` as written and add nothing about
filament: never suggest buying filament unless the person asks
for one or says yes to the offer in ``say``. On a yes, call
``find_closest_filaments`` with these colours and the print's
material.
:param model_path: The decorated mesh (STL/OBJ/3MF) whose
``<mesh>.decoration_faces.json`` sidecar to consume.
:param color: Hex color for the carved faces (default red).
:param base_color: Optional hex color for every other face.
Empty = uncolored (renders neutral; slicer maps it to
the base filament).
:param target: ``"all"`` carved faces (default), or
``"floors"`` / ``"walls"`` when the record carries the
split — floors are the recess bottoms (the visible mark),
walls the carved sides.
:param step_colors: Per-decoration colors for a chained
carve, e.g. ``{"0": "#F72323", "1": "#FFFFFF"}`` — keys
are step indices from the record's ``decorations`` list
(every result of this tool lists them). When given it
is the COMPLETE paint spec: only the named steps are
painted, the rest stay base — so "name red, title left
plain" is one call. Incompatible with a floors/walls
``target``; ``color`` is ignored.
:param output_path: Where to write the painted 3MF. Default:
beside the model as ``<name>_painted.3mf``.
:param material: Optional material the part will be printed in
(e.g. ``"PETG"``). A spool on record in a clearly
different material is then not named as one to load.
:param printer_id: Optional supported printer model id for
bed placement of the composed 3MF.
:returns: Dict with ``output_path``, ``painted_triangles``,
``total_triangles``, and the composer's color summary.
Refuses loudly — no painting — when the sidecar is
missing, malformed, or STALE (mesh content changed since
the decoration was recorded).
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Default: "#F72323". | |
| target | No | Default: "all". | |
| material | No | Default: "". | |
| base_color | No | Default: "". | |
| model_path | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". | |
| step_colors | 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: it discloses the 3MF write, the write-back into the carve's face record (paint_recorded), the loud refusal on missing/malformed/STALE sidecars, and the colour_availability/say relay contract. That is well beyond what a name implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior in the first sentence and organized by concern, but it runs long and the filament/'say' relay paragraph is somewhat tangential to the painting task. Dense and mostly earning its place, yet trimmable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation tool with no output schema, the description covers inputs, the return dict keys, failure modes, and side effects, leaving nothing an agent needs 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?
Schema coverage is 75% and mostly bare titles/defaults, but the description documents all eight parameters with meaning: what model_path's sidecar is, that target accepts 'all'/'floors'/'walls' (enum values absent from the schema), and that step_colors is a complete paint spec keyed by step index with a worked example. It adds substantially 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?
States a precise verb+resource and scope: paints exactly the faces a decoration carve created, nothing else. It also contrasts with the alternative behavior (crease-angle segmentation would 'fill the logo in'), so an agent can tell exactly what makes this tool distinct from segment_mesh_regions/paint_mesh_regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 upstream tools it should follow (decorate_surface, apply_decoration, apply_decoration_preset, smart_decorate, batch_decorate) and the exact fallback condition (meshes with no sidecar → segment_mesh_regions + paint_mesh_regions). Both when-to-use and when-not-to-use are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paint_mesh_regionsC
Paint mesh regions by name or id and write a painted 3MF. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
INLINE 3D STAGE: on success this tool 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 | No | Default: "". | |
| crease_deg | No | ||
| input_path | Yes | ||
| printer_id | No | Default: "". | |
| assignments | Yes | ||
| branch_name | No | Default: "painted". | |
| preview_only | No | Default: false. | |
| partition_hash | No | Default: "". | |
| min_region_area_frac | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose real side effects – it writes a painted 3MF, opens an interactive stage, and auto-decimates oversized meshes – which is genuinely useful. But it omits whether the write mutates an existing design/branch, what preview_only does, and any 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 capitalized INLINE 3D STAGE paragraph largely restates the opening sentence's parenthetical about the orbit/zoom panel and browser stage link. Two paragraphs for a two-clause behavior is poor information density, and the genuinely useful fact (auto-decimation) is buried at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 9-parameter mutation tool with a nested assignments object, no output schema, and no annotations needs far more than this. The description says nothing about the required input_path/assignments shape, what the tool returns, or how the painted output is persisted, leaving the agent under-equipped to call 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 coverage is 56% across 9 parameters, and the description only hints that assignments are keyed 'by name or id.' Nothing explains crease_deg, min_region_area_frac, preview_only, branch_name, or the nested assignments object, so it fails to compensate 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?
States a specific verb and resource: 'Paint mesh regions by name or id and write a painted 3MF.' An agent knows it paints regions and emits a 3MF. However, it never distinguishes itself from close siblings like segment_mesh_regions, paint_decoration_faces, or auto_color_by_region, so routing still requires guesswork.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. The entire second paragraph is spent on the 3D stage experience rather than on helping the agent decide between this and segment_mesh_regions or paint_decoration_faces.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
park_headA
Move the print head somewhere safe, away from the plate, and leave it there.
The retreat, as distinct from ``home_axes`` (the measurement). A park
NEVER homes Z and never heats: it raises the head the vendor's way,
homes X (an endstop -- nothing is touched), and travels to the model's
own off-plate spot -- on a Bambu, the position the machine itself
flushes at, served one plan at a time through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it works offline. On
Marlin, Klipper and RepRapFirmware the firmware's own home position IS
the park, chosen by whoever configured the machine -- and the catalogue's
motion record for the declared ``printer_model`` decides how much of it
is sent: on a machine whose Z home presses a probe or the nozzle onto
the plate (most of them), park homes X and Y only and leaves Z alone;
on the few whose Z home cannot touch the plate, the full home. With no
``printer_model`` declared, or one the catalogue does not know, park
refuses and says which key to set (code PRINTER_MODEL_REQUIRED). A
Bambu model whose spot is not served here refuses by name rather than
guessing a coordinate, and says to use the screen's jog controls, Z up
first -- never its Home button over a part.
Use this first on any machine you are nervous about: it is the safer
of the two verbs by construction, because nothing descends. Same
``plan_only`` / ``step`` options as ``home_axes`` -- run it in steps
the first time with a person beside the machine.
Args:
wait_seconds: How long to watch for a fault code afterwards on
backends that raise one (default 10).
step: Send only this step of the sequence (1-based).
plan_only: Describe the steps; send nothing.
plate_clear: A PERSON's statement that the plate is empty. Lets a
park proceed over a plate the record says holds a part, and lets
the full home (Z included) stand in for the park on a machine
whose Z home touches the plate. Written to the plate record,
as on ``home_axes``: the plate reads ``clear`` until the next
print starts. Never set it on a person's behalf.
printer_name: Which printer. Omit for the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | ||
| plan_only | No | Default: false. | |
| plate_clear | No | Default: false. | |
| printer_name | No | ||
| wait_seconds | 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 and does so in detail: park never homes Z and never heats, homes X via an endstop, and the exact sequence varies by firmware (Bambu hosted spot vs Marlin/Klipper/RepRapFirmware catalogue-driven motion record). It discloses refusal modes, the offline copy of the hosted plan, and the plate_clear record write — all things an agent could not infer 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?
It is front-loaded correctly, with purpose, sibling distinction and safety rationale first, then a structured Args block. It is on the long side, and the Bambu sentence about Kiln's hosted service, sign-in and offline caching is denser than an agent needs to invoke the tool, so a small trim would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no-required-arg mutation that has an output schema, the description covers everything material: what moves, what does not move, per-firmware branching, refusal codes, safety guardrails for plate_clear, and the step/plan_only workflow. Return values are covered by the output schema, so no gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40%, so the description must compensate, and it does. wait_seconds is scoped to fault-code watching on backends that raise one, step is defined as 1-based partial dispatch, plan_only is "describe the steps; send nothing," and plate_clear is given both its effect and a hard safety rule ("Never set it on a person's behalf"). printer_name's default-omission behavior is also spelled out.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a concrete verb, object and scope: "Move the print head somewhere safe, away from the plate, and leave it there." It then immediately distinguishes itself from the nearest sibling, home_axes, calling this "the retreat, as distinct from home_axes (the measurement)" — an agent can pick the right verb without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to prefer it ("Use this first on any machine you are nervous about: it is the safer of the two verbs by construction, because nothing descends") and names the excluded alternative (home_axes). It also states a real precondition with the correct error code (PRINTER_MODEL_REQUIRED) and a refusal mode for unserved Bambu spots, so the agent knows the boundary conditions before calling.
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. A parameter computed from others
(``inner = outer - 2*wall;``) is returned with ``derived: true``,
its ``expression`` and ``depends_on``; it moves when those
change and cannot be set directly.
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?
With no annotations, the description carries the full load and does most of it well: it discloses that only variables at the top of the file are considered, and that entries may carry units, comments, and ranges. The derived-parameter paragraph is genuinely valuable behavioral information — it discloses the derived/expression/depends_on fields and states that such values cannot be set directly. It does not say what happens on malformed or parameterless input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
What-it-does, when-to-use, and the derived-parameter caveat are front-loaded and each sentence carries information. The derived-parameter explanation runs longer than necessary, but it is the one non-obvious behavior in the tool, so 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?
With no output schema, the description must convey the return shape, and it does: values, units, descriptions, ranges, and the derived/expression/depends_on trio. Missing only error/edge-case behavior (invalid code, zero parameters) for a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required param, so the description must compensate. The Args block only restates the type ("OpenSCAD source code string") with no guidance on whether to pass the whole file, a fragment, or whether trailing modules are tolerated — enough to call it, but 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?
Specific verb+resource (parse parameter variables from OpenSCAD code) plus a precise enumeration of what is extracted: values, units, descriptions, ranges. It never names the adjacent siblings (validate_scad_parameters, analyze_scad_code, update_scad_parameter), so an agent must infer the boundary, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this after generating OpenSCAD code to discover which parameters can be adjusted" gives a clear lifecycle position and intent, implicitly contrasting with the update path. There are no explicit exclusions or named alternatives, so an agent facing validate_scad_parameters or analyze_scad_code still has to guess.
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.
What happens next is decided by the printer's own firmware, not by
Kiln, and it differs a lot between machines. Some lift the nozzle
and park the head; others leave it resting on the part. Many lower
or switch off the nozzle heater while paused, and some switch the
heaters and motors off after a timeout, after which the print may
not be able to resume. Do not tell the person the head will park or
that temperatures will hold; check ``printer_status`` instead.
One measured case:
- 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.
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. It can only help
on a printer Kiln can set temperatures on: Prusa Link offers no way
to, so on a Prusa the keep-alive does nothing.
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 | Default: true. | |
| printer_name | 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 thoroughly: firmware-dependent pause behavior, the measured Bambu A1 hotend drop, the best-effort keep-alive daemon timing, idempotent threads, Prusa Link limitations, and automatic stopping on resume or cancel are all 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 purpose is front-loaded and the structure is logical, but the description is long and includes a meta note about a previously incorrect docstring. The measurement detail is useful, though some historical commentary 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?
For a complex, firmware-sensitive operation with no annotations and no output schema, the description supplies the behavioral, parameter, limitation, and follow-up information an agent needs to invoke it safely and 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 only 50%, but the description compensates fully. keep_temps is explained as enabling/disabling the background temperature re-assertion with legacy behavior when false, and printer_name is explained as selecting the printer and owning a per-printer keep-alive thread.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — pause the currently running print job — and immediately distinguishes the operation from resume_print. An agent can tell exactly what the tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names resume_print for continuing and tells the agent to use printer_status rather than making unsupported claims about head parking or temperatures. It does not explicitly compare against cancel_print, fleet_pause, or pipeline_pause, but the pause/resume workflow is clear.
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_splitB
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 | Default: "pla". | |
| file_paths | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden; it does disclose the core behavior (each file assigned to a different printer for parallel printing). However, it never clarifies whether this only plans or actually dispatches jobs, what happens if fewer printers than files exist, or whether the split is persisted and cancelable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences plus a terse Args block; no filler. The leftover docstring 'Args:' formatting is slightly redundant with the schema but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param planning tool with no annotations and no output schema, the description should say what the resulting plan contains and how to inspect or cancel it. It omits return/next-step information entirely.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50% with file_paths undocumented; the description restates both params ('List of file paths in the assembly', material default 'pla') but adds no format, ordering, or constraint detail (e.g., must all be parts of the same assembly, allowed material 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?
States a specific verb and resource ('Split a multi-file assembly across printers') and clarifies the mechanism (one file per printer, in parallel). It does not differentiate from close siblings such as plan_multi_copy_split, derive_assembly_plan, or split_plan_status, so an agent can't tell them apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus plan_multi_copy_split or derive_assembly_plan, and no mention of the companion lifecycle tools split_plan_status/cancel_split_plan that clearly follow this call. Prerequisites (multiple printers available, fleet connectivity) are unstated.
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)
With kiln-pro installed the answer can also carry
``nozzle_wear_hypothesis`` (Kiln Pro), or below Pro
``nozzle_wear_hypothesis_gated``, as for
``analyze_print_failure_smart``.
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 carries the burden: it discloses what the plan will contain (preparation steps, parameter adjustments, risk assessment) and that output can carry a nozzle_wear_hypothesis field, with the Pro-gated variant named. It never explicitly states the operation is non-mutating (no writes/state changes), which is the one behavioral fact an agent would want to confirm before calling without 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?
Front-loaded with the purpose and the routing rule before the args, which is the right order. The trailing Args block largely restates the schema, and the nozzle_wear_hypothesis aside is dense and its relevance is not explained, so there is some 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?
With no annotations and no output schema, the description does the necessary work: it explains provenance of the required ID, describes the returned plan's components, and flags the conditional output field. The remaining gap is the content expected in printer_capabilities and safety_profile, which an agent cannot infer.
Complex tools with many parameters or behaviors need more documentation. Simple 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 for failure_id (must come from a detect_print_failure result) but the two optional dicts are only restated verbatim ('Optional printer capabilities dict', 'Optional safety profile dict') with no guidance on expected keys or effect on the plan — half the surface is still undocumented.
Input schemas describe structure but not intent. Descriptions should explain 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 ('generate a recovery plan') plus the required provenance ('for a previously detected failure'), and adds an explicit sibling disambiguation section naming plan_print_recovery. An agent can tell plan_failure_recovery from plan_print_recovery without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Which recovery tool to use' block gives the exact selection rule: printer_name + job_id → plan_print_recovery; failure_id from detect_print_failure → this tool. It also states the precondition (a prior detect_print_failure call) is mandatory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_hardware_insertionC
Plan nuts, magnets, bearings and inserts into a printed part: where, when, how.
Free door, tiered answer — Free: Safety checks — always free · Pro: The layer, the pause written for your printer, and a phone alert when it’s time · Business: + A board of every printer waiting for hands, and a record of who put what into which part · Enterprise: + Each insertion cited in the part’s First Article Inspection draft. Upgrade: https://kiln3d.com/pricing?src=agent&tool=plan_hardware_insertion
| Name | Required | Description | Default |
|---|---|---|---|
| printer | No | Default: "". | |
| hardware | No | ||
| material | No | Default: "". | |
| gcode_path | No | Default: "". | |
| model_path | Yes | ||
| write_pauses | No | Default: false. | |
| confirm_unmeasured | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it does disclose something real: the free tier returns only safety checks while paid tiers return layer/pause timing and audit records, which changes what an agent gets back. However it never says whether write_pauses mutates an existing gcode file, whether model_path must already be sliced, or what permissions are needed — the mutation semantics are left entirely implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is front-loaded correctly, but it is followed by a promotional tier breakdown and an upgrade URL that consume agent context without helping invocation. Roughly half the text is marketing copy, and the URL query string is pure noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a 7-parameter tool with no annotations and no output schema, and the required model_path is never explained. The description never states what the plan returns structurally (coordinates? a pause list? a modified gcode?), so an agent cannot judge what to do with the result or how write_pauses changes the side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, but the schema's own parameter descriptions are hollow ("Default: \"\""), so the description has to carry meaning. It does add partial mapping — the hardware types name what the `hardware` array holds, and "the pause written for your printer" hints at write_pauses plus printer/gcode_path. It says nothing about confirm_unmeasured or model_path, which is the sole required 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 opening sentence gives a specific verb and resource plus the intended effect: "Plan nuts, magnets, bearings and inserts into a printed part: where, when, how." That is clearly distinguishable from recording tools like record_hardware_insertion or geometry helpers like recommend_hardware_pocket. It stops short of naming any sibling it should not be confused with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the many closely-named siblings (recommend_hardware_pocket, check_magnet_design, record_hardware_insertion, plan_supports). The only conditional content is pricing tiers, which tells the agent about entitlement, not about task selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_kit_platesC
Pack a kit's parts onto print plates — and, with a fleet (Business), answer "which plate on which printer, finishing when.".
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=plan_kit_plates
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Default: 1.0. | |
| gap_mm | No | Default: 3.0. | |
| bed_x_mm | No | Default: 0.0. | |
| bed_y_mm | No | Default: 0.0. | |
| bed_z_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| printers | No | ||
| design_id | No | Default: "". | |
| part_names | No | ||
| part_paths | No | ||
| orientation | No | Default: "flat". | |
| part_materials | No | ||
| layer_height_mm | No | Default: 0.2. | |
| print_speed_mm_s | No | Default: 60.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden, and it discloses almost nothing: no indication of what a 'plate' output contains, whether the operation is a pure computation vs a write, whether printer assignments are persisted, or how the fleet mode behaves. The tier copy describes feature/entitlement scope, not 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?
Sentence one is front-loaded and useful. But the remaining two sentences are plan-tier advertising and an upgrade URL, which do not help an agent invoke the tool and push useful information out of the 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?
A 14-parameter tool with no annotations, no output schema, and undocumented array parameters needs the description to explain the input model and the resulting plate/assignment output. Instead it spends its length on entitlement marketing, leaving the agent under-informed about calling 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?
71% schema coverage with several undocumented arrays (printers, part_names, part_paths, part_materials) that are central to the operation. The description adds nothing about scale, gap_mm, bed dimensions, orientation, material, or how part_paths vs design_id/part_names interact — the very parameters an agent must get right.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause gives a concrete verb+resource ('pack a kit's parts onto print plates'), which is genuinely informative, but the second half shifts into fleet/upsell marketing ('which plate on which printer, finishing when') rather than describing what the tool does. It also never distinguishes itself from close siblings like arrange_parts_on_plate, auto_arrange_parts_on_plate, or plan_multi_copy_split, leaving the agent unsure which packing tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implicit context — this is the kit-level packing step, and the fleet case is called out — plus a useful prerequisite signal ('Requires Kiln Pro'). However, no explicit when-to-use vs when-not guidance is given relative to the many sibling plate-arrangement 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 | Default: "pla". | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and is insufficient. It says the tool plans and distributes copies, but does not clarify whether it only produces a plan or actually schedules/prints, what side effects it has on fleet state, what permissions are required, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose and then uses a compact Args list. It is appropriately sized and readable, with only slight redundancy between the opening two 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?
For a fleet orchestration tool with no annotations and no output schema, the description covers the basic purpose and parameters but omits important context such as the shape of the returned plan, prerequisites, printer-selection criteria, and whether the operation is purely advisory or has 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 coverage is only 33%, but the description compensates by explaining all three parameters: file_path is a G-code or model file, copies is the number of copies, and material defaults to pla. It lacks detailed constraints or limits, but adds meaningful semantics beyond 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 gives a specific verb and resource: planning parallel printing of multiple copies and distributing them across printers. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings such as multi_copy_print or multi_color_copies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 planning multi-copy distribution across a fleet, but it gives no explicit when-to-use guidance, exclusions, or alternatives. An agent can infer the planning role, but not when to choose this over direct multi-copy printing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_object_skipC
Work out which object to skip on a failing multi-object print (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=plan_object_skip
| Name | Required | Description | Default |
|---|---|---|---|
| printer_type | No | Default: "". | |
| plate_objects | Yes | ||
| failed_objects | 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 Pro-tier gate ('Requires Kiln Pro'), which is genuinely useful, but says nothing about whether the tool only computes a plan or mutates printer state, what the plan contains, or what happens if no object can be safely skipped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is front-loaded, but roughly half the text is marketing boilerplate ('Everything in Free, plus calibration that learns your printer...') and an upgrade URL that do nothing to help an agent select or invoke 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?
With no annotations, no output schema, and two of three parameters undocumented, the description should explain the plan's nature and the required inputs. Instead it spends its remaining budget on tier upsell, leaving the agent under-informed for a multi-object print operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% — plate_objects and failed_objects are undocumented in both schema and description. The description gestures at the concept ('which object to skip') but adds no shape, identity, or format detail for any parameter, so it fails to compensate 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 first sentence names a specific verb and resource ('work out which object to skip on a failing multi-object print'), so the agent knows exactly what the tool computes. It does not, however, distinguish itself from near-neighbors like skip_print_objects or plan_failure_recovery, which an agent would need in order to choose correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'on a failing multi-object print' implies the trigger condition, which is more than nothing. But there is no explicit when-not guidance and no mention of the sibling that actually performs a skip (skip_print_objects) versus this one that plans it.
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, the description carries the full burden; it does disclose internal mechanics (synthesizes a FailureReport, uses the latest checkpoint when available, runs the same planner as plan_failure_recovery), which signals it is a planning step. However, it never states whether the call mutates state, creates a recovery session, or that a follow-up like start_print_recovery/confirm_print_recovery is required — a material gap given the surrounding recovery lifecycle 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?
Front-loaded one-line purpose, then routing, then Args — a sensible ordering with no filler. Minor deduction for Sphinx markup noise (`:class:`FailureReport``, reST backticks) that adds no information for an 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?
There is no output schema and no annotations, so the description is the only source of truth; it covers inputs and tool selection well but leaves the return shape and side-effect footprint undefined. For a tool in a stateful recovery workflow, that leaves the agent guessing about whether planning alone advances anything.
Complex tools with many parameters or behaviors need more documentation. Simple 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 largely does: all three params are described, failure_type enumerates eleven valid values and states the default (communication_loss), and the checkpoint-lookup note explains how printer_name/job_id are consumed. It stops short of giving formats for job_id or printer_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?
Opens with a specific verb+resource+scope: "Plan a recovery strategy from a printer + job + failure type." It then explicitly distinguishes itself from the two nearest siblings (plan_failure_recovery, detect_print_failure), so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The "Which recovery tool to use" block gives explicit if/then routing: printer_name + job_id → this tool; failure_id from detect_print_failure → plan_failure_recovery. Selection criteria are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_supportsC
Plan the supports for one part: what the slicer should do under each overhang, and why.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=plan_supports
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "PLA". | |
| input_path | Yes | ||
| printer_id | No | ||
| layer_height | No | Default: 0.2. | |
| nozzle_diameter | No | ||
| second_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 usefully discloses that the tool is gated behind Kiln Pro and that output includes a rationale ("and why"), but it never says whether it needs an active printer profile, whether it mutates anything, how long it takes, or what the response contains. Half the text is marketing rather than 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 first sentence is tight and front-loaded, which is the right structure. However, two of the four lines are subscription upsell plus a marketing URL with tracking parameters, which pads the definition without helping an agent decide or invoke.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the definition should clarify the return shape (a structured plan? G-code? recommendations?) — it only hints at "what the slicer should do... and why." Combined with thin parameter coverage and no usage routing, an agent would struggle to call this correctly versus sibling support-estimation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%, with the two documented fields described only as defaults ("PLA", "0.2"). The description adds nothing about input_path format (mesh, 3MF, relative or absolute), what printer_id changes, how nozzle_diameter interacts with layer_height, or what second_material is for (soluble/interface supports). The undocumented majority is not compensated for anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource with scope: "Plan the supports for one part: what the slicer should do under each overhang, and why." It implies the output is a per-overhang support strategy with rationale. It does not distinguish itself from close siblings like estimate_supports or estimate_support_material, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus estimate_supports, estimate_support_material, generate_adaptive_slicing_plan, or slice_and_estimate, despite many overlapping siblings. The only conditional content is a tier gate ("Requires Kiln Pro"), which is not usage guidance about the task itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plate_statusA
What Kiln knows is on the build plate -- read-only, no printer round trip.
Kiln records the plate at the moments it can be sure of: a print Kiln
started puts a part there (``occupied``, with the file and, where Kiln
could read it, the part's height); a print seen ending leaves it there;
a PERSON says it is empty (``plate_clear=true`` on ``home_axes`` or
``park_head``, or ``kiln plate clear`` at the command line); and a LOOK
through the machine's camera settles it either way (``look_at_plate``). Anything
else -- no record, a torn record, a print started at the printer's own
screen -- reads as ``unknown``, and the answer then says whether a
camera could settle it.
Why it matters: ``home_axes`` and ``park_head`` start with the vendor's
raise and then cross the head's row a few millimetres up -- and a
collision there raises no fault. When the record names a part taller
than that raise, both refuse and say so; a ``clear`` record is what
lets them stop asking about the row. A Z home that presses the nozzle
onto the plate (the A1 mini) asks on every call regardless -- the
record cannot see a print started from the printer's own screen, and
that press is the one motion a stale record must never answer for.
An ``occupied`` record says a part WAS there. ``recorded_ago`` says
how long ago, and every refusal that rests on it carries a look at the
plate where the machine has a camera -- so look (``look_at_plate``)
rather than take an old record's word that the part is still there.
There is deliberately no tool that marks the plate clear from nothing:
that is a statement someone has to make, at the machine, at the command
line, by looking through the camera and saying what they see, or -- a
person in a chat -- in their own words, which ``look_at_plate`` records
as theirs (``person_says``) and labels as passed on when it could not
ask them itself.
Args:
printer_name: Which printer. Omit for the default one.
Returns ``plate`` with ``status`` (``unknown`` / ``occupied`` /
``clear``), ``source``, ``since``, ``job`` (``file``, ``footprint_mm``,
``max_z_mm``, ``printer_id``), ``from_camera`` and ``looked_by`` when a
look wrote it, ``recorded_ago`` (how old the record is, in words), and a
one-line ``description``; plus ``camera``, whether this machine has one
that could settle an unknown plate.
| Name | Required | Description | Default |
|---|---|---|---|
| printer_name | 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 and does: it declares read-only / no round trip, explains the unknown fallback for absent or torn records and prints started at the printer's own screen, and discloses staleness via recorded_ago and the camera flag. It even explains downstream behavioral consequences (home_axes/park_head refusing on a tall part).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the 'Why it matters' block is a long mechanical digression about head-row collisions and A1 mini Z homing that mostly justifies the tool rather than helping an agent invoke it. The Returns block also restates what the output schema already provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with an output schema, nothing an agent needs is missing: record provenance, staleness, the unknown path, and camera availability are all addressed. The extra return-value narration is redundant against the output schema but not harmful to 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 must compensate, and the Args block does: 'Which printer. Omit for the default one' supplies the default-on-omission semantics the schema lacks. With only one optional parameter there is little more to say, so this is close to fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb+resource (reads what Kiln knows is on the build plate) plus its scope (read-only, no printer round trip). It also distinguishes the tool from the sibling that would give ground truth by naming look_at_plate explicitly and contrasting a cached record against a fresh look.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 spells out the conditions that produce each status (print started by Kiln, print seen ending, a person asserting empty, a camera look) and, crucially, routes the agent to look_at_plate rather than trusting a stale 'occupied' record. It does not open with an explicit 'use this when' statement, so selection guidance is embedded in narrative rather than front-loaded.
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.
The thin-wall floor follows the nozzle: two lines of it, so 0.8 mm for
a 0.4 mm nozzle and 1.2 mm for a 0.6. The answer says which nozzle it
was judged for and where that size came from.
:param file_path: Path to mesh file (.stl, .obj, .glb, or .3mf).
:param min_wall_mm: Minimum printable wall thickness. Leave it out to
use two lines of the nozzle.
:param max_bridge_mm: Maximum unsupported bridge length (default 15).
:param max_overhang_deg: Maximum overhang angle before failure (default 55).
:param printer_id: The printer the part is for. Left out, the only
printer Kiln knows of stands in.
:param nozzle_mm: The nozzle fitted, when you know it. Left out, the
nozzle on record for the printer, then the printer's own setting,
then its stock size.
:returns: Dict with verdict, risk score, failure list, the wall floor
used and the nozzle it was judged for.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| nozzle_mm | No | ||
| printer_id | No | ||
| min_wall_mm | No | ||
| max_bridge_mm | No | Default: 15.0. | |
| max_overhang_deg | No | Default: 55.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and largely does: it discloses defaults (15 mm bridges, 55 deg overhang), the two-nozzle-line wall floor logic, and the ordered fallback chain for nozzle resolution (explicit nozzle -> printer record -> printer setting -> stock size). It omits that the tool is purely analytic/non-mutating and says nothing about cost or runtime on large meshes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and analyzed failure classes are front-loaded, then return shape, then parameters. The nozzle paragraph is slightly padded and partly restates the nozzle_mm param entry, but every sentence still carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the returned dict (verdict, risk score, failure list, wall floor used, nozzle judged for). Still missing are the possible verdict values and how thresholds interact with the selected printer's profile, which an agent would want before relying on 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 coverage is only 33% (just the two numeric defaults), so the description must compensate and does: all six parameters are explained, including what to omit (min_wall_mm, printer_id, nozzle_mm) and precisely what happens when they are omitted. The resolution ordering for nozzle_mm is the kind of semantics the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (predict 3D-printing failure modes from mesh geometry) and enumerates exactly which failure classes are checked plus what comes back (risk score 0-100, per-failure details, fix suggestions). It does not, however, distinguish itself from close siblings such as analyze_printability, check_print_readiness, or predict_print_settings, so an agent must infer which analysis tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'predict' and the pre-print context, and default behaviors for thresholds are given. There is no explicit when-to-use/when-not statement and no named alternative among the several overlapping analysis siblings.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety/behavior burden and does well: it discloses the exact-hash-first, geometry-second, material-defaults-last lookup chain and warns that omitting geometric_signature_v2 can silently average predictions over a different design. It does not state read-only semantics, determinism, or what happens when even material defaults are unavailable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence, the fallback behavior follows, and the Args block maps each parameter. No sentence is redundant; even the long v2 warning is essential because it prevents a silent correctness failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema or annotations, so the description should arguably explain the return shape, confidence, and read-only nature. It covers inputs and lookup logic thoroughly enough to call correctly, but omits what the prediction returns and whether it is purely a read operation, leaving a modest 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 only 13%, so the description must compensate and it does: all 8 parameters are described, including units (mm^2, mm^3), the 0.0-1.0 complexity range, and the provenance of geometric_signature_v2 from fingerprint_model. The warning about omitting v2 adds critical meaning absent from 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 a specific verb and resource: 'Predict optimal print settings from historical DNA data.' It also explains the lookup hierarchy, which separates it from generic settings tools. However, it never names or contrasts a specific sibling (e.g., infer_print_settings, get_optimal_settings), so an agent has no explicit routing cue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: call this when you have a file hash and geometric signature and want predicted settings. The fallback chain describes internal behavior, not when to choose this tool over infer_print_settings, recommend_settings, or get_optimal_settings. No exclusions or prerequisites are stated.
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
- Multi-material: what unit the printer carries (AMS, a Klipper MMU)
and, with ``file_path``, whether the file's filaments are loaded.
Advisory for a unit Kiln drives (the print gate decides at start);
a FAILURE when a multi-filament file needs more colours than a
unit Kiln does not drive has loaded — that print comes out wrong
and nothing downstream stops it. Absent for a single-feed printer;
a read that failed is reported as such, never as "no unit".
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 | Default: false. | |
| expected_material | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it distinguishes advisory vs hard FAILURE for multi-material checks, explains the default-printer behavior of printer_name, and states the result includes a `ready` boolean with per-check breakdowns. It never explicitly confirms the tool is read-only/no side effects on printer state, which is the one behavioral trait left 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 core purpose and check list are front-loaded and scannable. Some prose is loose — the multi-material paragraph is dense, and the aside about the default printer being 'what this did before it could be aimed' is unnecessary history — but nothing critical is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-param, no-output-schema, no-annotation tool, the description covers purpose, per-check semantics, parameter behavior, failure modes, and the shape of the return value (`ready` plus breakdowns). Nothing an agent needs to invoke or interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only accept_paused has a description), so the description must compensate — and it does, documenting all five parameters with meaning, defaults, and interactions (e.g., accept_paused tied to resume_from_paused, printer_name scoping temperature ceilings and material profile to the named machine).
Input schemas describe structure but not intent. Descriptions should explain 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 ('Run pre-print safety checks to verify the printer is ready') and then enumerates the exact checks performed, including which are optional. An agent can distinguish this from siblings like check_print_readiness or may_i_print because the check list is concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'Call this before start_print() to catch problems early,' and each optional parameter is qualified with the condition that activates it (file_path for pre-upload validation, remote_file to verify presence, accept_paused for resume 3MFs via start_print). When-to-use is stated, not implied.
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 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 | Default: "PLA". | |
| input_path | Yes | ||
| printer_id | No | Default: "". | |
| target_height_mm | No | Default: 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does so well: it discloses the validation pipeline, the conservative unit-correction rule, simplification and hollowing recommendations, re-validation, and the inline 3D stage behavior on success. It does not explicitly state whether the input file is overwritten or a new file is produced, nor how failures are reported, leaving some mutation behavior unspecified.
Agents need to know what a tool does to the world before calling 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 uses a structured pipeline that makes the sequence easy to follow. It is somewhat long and includes motivational detail about specific generators plus a separate inline-stage paragraph, but most of the content earns its place for a complex preparation 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?
Despite no annotations and no output schema, the description explains the return value shape, supported file formats, validation pipeline, unit-correction constraints, parameter behavior, and inline stage behavior. An agent has enough context to invoke the tool correctly and understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75%, so the baseline is 3, but the description adds meaningful semantics for all parameters: input_path is the AI-generated model file, target_height_mm is an instruction with special behavior at 0, printer_id enables bed-fit checking, and material drives material checks with a PLA default. It goes beyond the schema's sparse descriptions, especially for target_height_mm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: prepare AI-generated models for printing by fixing unit mix-ups. It clearly differentiates the tool from generic scaling or validation siblings by explaining that it corrects real unit conversions and never invents a reasonable target size. The supported formats and pipeline further sharpen its identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description scopes usage to AI-generated models with unit mix-ups and explains how target_height_mm changes behavior: if 0, only a unit mistake is fixed; otherwise the requested height is honored. It references validate_and_prepare as a baseline step but does not explicitly name alternatives like rescale_model or scale_mesh_to_fit, so some selection guidance is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepopulate_fair_draftC
Pre-populate an AS9102 FAIR draft from a Kiln evidence case.
Kiln Enterprise would tie the production record to the revision, surface missing approvals, and prepare the review packet. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=prepopulate_fair_draft
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | ||
| organization | No | ||
| use_registry | No | Default: true. | |
| order_context | No | ||
| part_identity | No | ||
| export_formats | No | ||
| fai_declaration | No | ||
| output_form_set | No | Default: "9102C". | |
| evidence_case_id | Yes | ||
| form2_row_inputs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full behavioral burden and does not meet it. It discloses a plan gate (Kiln Enterprise) and lists what Enterprise "would" add, but never states what actually happens on invocation without Enterprise, whether anything is persisted or written, or what the caller receives back.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in the first sentence and the text is short. However, two of four sentences are promotional upsell content (a pricing URL and a "Kiln Enterprise would..." pitch) that consume space without helping an agent decide or invoke.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a 10-parameter generation tool with nested objects, no annotations, and no output schema, so the description should be doing substantial work. Instead it omits invocation behavior, return semantics, and nearly all parameter meaning, leaving the agent unable to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% across 10 parameters, several of them nested objects, so the description must compensate and does not. The phrase "from a Kiln evidence case" loosely maps to the required evidence_case_id, but unit, organization, order_context, part_identity, export_formats, fai_declaration, output_form_set, and form2_row_inputs are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Pre-populate") and resource ("AS9102 FAIR draft") and names the source it draws from ("a Kiln evidence case"). This is enough to distinguish it from the other FAIR-oriented siblings such as manage_fair_evidence_bundle or manage_fair_registry, though it never names those alternatives 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?
"Requires Kiln Enterprise" is a prerequisite statement, not usage guidance, and it is entangled with an upsell pitch rather than telling the agent when this tool is the right call. There is no when-to-use, when-not-to-use, or alternative-routing information, which matters given the many FAIR/draft siblings available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_decorated_meshB
Render a 3D preview of a mid-print decorated part (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=preview_decorated_mesh
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| color | No | Default: "#FFFFFF". | |
| width | No | Default: 800. | |
| height | No | Default: 600. | |
| depth_mm | No | Default: 0.8. | |
| decoration | No | Default: "kiln". | |
| output_dir | No | Default: "". | |
| session_id | No | Default: "". | |
| image_scale | No | Default: 0.6. | |
| engine_output_dir | No | Default: "". | |
| source_gcode_path | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does valuable work disclosing that the tool opens an interactive viewer panel/link in the host and that oversized meshes are decimated automatically (a non-obvious transformation of the input). But it says nothing about what happens on Pro-license failure, whether files are written to disk, or how the PNG preview is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The inline-3D-stage behavior is described twice (once in the opening sentence, again in an all-caps paragraph) and the middle block is pure upsell — 'Everything in Free, plus calibration that learns your printer... Upgrade: <URL>'. Roughly half the text is promotional rather than operationally useful, and the duplicated paragraph pushes the useful detail to the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Ten optional parameters, no annotations, no output schema — the description should therefore clarify input requirements and return shape, and it does neither. It never explains what source_gcode_path or output_dir must contain to produce a preview, nor what a successful call returns (a path? an image? just the stage), which is the central ambiguity 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?
Schema coverage is 100%, so the baseline is 3, but the schema entries are bare 'Default: X' stubs with no semantic meaning. The description adds nothing for any of the 10 parameters, so opaque ones like source_gcode_path, engine_output_dir, decoration, and image_scale remain unexplained by either 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 first sentence states a specific verb and resource: 'Render a 3D preview of a mid-print decorated part.' That distinguishes it from generic renderers in the sibling list such as render_model_preview and visualize_model, though it never names those siblings explicitly to sharpen the boundary. The purpose is unmistakable, but the '(Pro)' tag and marketing copy dilute the opening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'mid-print decorated part' implies the usage context, and 'Requires Kiln Pro' is a real precondition an agent needs. However, there is no explicit when-to-use/when-not guidance and no mention of how this differs from preview_texture_2d, render_model_preview, or decorate_during_print, all of which an agent could plausibly pick instead.
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.
preview_overage_chargeB
What a number of printers would cost in extra-printer charges on your plan. Free on every plan.
| Name | Required | Description | Default |
|---|---|---|---|
| active_printer_count | 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 does disclose a meaningful behavior — extra-printer charges are free on every plan, so the previewed amount is effectively zero — but does not state that the call is read-only, has no side effects, or what the returned value looks like. Partial disclosure nets a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the core purpose is front-loaded before the 'Free on every plan' note. Slightly terse rather than padded, 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?
For a single-parameter, no-output-schema preview tool this is close to adequate, but with no annotations and no return-value information the agent cannot tell what the response contains (currency, breakdown) or confirm it is a safe read. The 'free on every plan' line is also ambiguous about whether the tool is useful at all.
Complex tools with many parameters or behaviors need more documentation. 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 is one parameter (active_printer_count) with 0% schema description coverage, so the description must compensate. 'A number of printers' loosely maps to the parameter but adds no unit, range, or semantics (e.g., whether it counts currently active vs. proposed printers) beyond the 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?
The description states a specific computed quantity — the extra-printer cost for a given number of printers on the caller's plan — which is enough to distinguish it from generic cost tools like estimate_cost. It never names a verb (preview/estimate) and gives no sibling differentiation, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this over the many other cost-estimation siblings (estimate_cost, project_cost_summary, print_cost_intelligence), and no prerequisites or exclusions. The only usage hint is implicit in 'would cost'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_texture_2dC
Render a flat 2D preview of a texture as a PNG image.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Default: 42. | |
| size | No | Default: 512. | |
| scale | No | Default: 1.0. | |
| style | No | Default: "posterized". | |
| preset | No | ||
| texture | No | ||
| image_path | No | ||
| num_colors | No | Default: 4. | |
| output_path | No | Default: "". | |
| tile_size_mm | No | Default: 40.0. | |
| color_palette | 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, yet it only says the tool renders a PNG. It does not say whether it writes a file, where output goes by default, whether input texture/image is required, whether it is read-only, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient, though its extreme brevity contributes to under-specification for an 11-parameter rendering 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 an 11-parameter tool with no annotations and no output schema, one sentence is not enough. It does not explain parameter behavior, input requirements, output location, or how this preview differs from other rendering/texturing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 11 parameters and only 64% schema description coverage, with several parameters having no descriptions at all. The tool description adds no meaning for texture, preset, image_path, output_path, color_palette, or the rendering controls, so it does not compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: "Render a flat 2D preview of a texture as a PNG image." It clearly distinguishes this as a 2D texture preview and states the output format, though it does not name sibling alternatives such as apply_image_texture or render_model_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?
The description implies the tool is for previewing a texture, but it gives no explicit when-to-use guidance, no exclusions, and no alternatives among the many texture and preview-related sibling tools. An agent must infer usage from the tool name and one-sentence purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_cost_intelligenceC
What a print's filament changes cost and how to cut them, and the cost with a reprint priced in.
| Name | Required | Description | Default |
|---|---|---|---|
| filaments | No | ||
| file_name | No | Default: "". | |
| file_path | No | Default: "". | |
| printer_id | No | Default: "". | |
| gcode_gz_b64 | No | Default: "". | |
| total_cost_usd | No | Default: 0.0. | |
| estimated_time_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden, yet it does not say whether this is a pure read/calculation or mutates state, where pricing data comes from, or how the optional gcode/file inputs affect the result. It gestures at output content (cost breakdown and savings) but not at the behavior an agent needs to trust a 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?
It is one short sentence with no filler, but the front-loaded clause is syntactically broken, forcing the reader to reparse it; brevity here costs comprehension rather than buying it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A seven-parameter cost-analysis tool with no annotations and no output schema needs the description to explain inputs, cost source, and return shape. Instead it supplies one ambiguous clause, leaving the agent unable to know which inputs are needed or how results are framed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters, none required, and the schema descriptions are placeholders ('Default: ""', 'Default: 0.0') rather than meaning. The most important parameter, `filaments`, is an untyped array with no item schema and no description, and the description says nothing about it or about how gcode_gz_b64 vs. estimated_time_seconds is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence implies a cost-analysis tool that reports the cost impact of filament changes plus savings advice and reprint-inclusive cost, but the grammar ('What a print's filament changes cost') muddles the verb. It never disambiguates from the many cost siblings in the catalog (estimate_cost, estimate_material_cost, estimate_print_cost_from_mesh, project_cost_summary, batch_estimate_plate_part_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?
There is no statement of when to call this versus the other cost estimators, no prerequisites (printer, filament list, gcode vs. file path), and no exclusions. The only hint at usage is the implicit 'how to cut them' recommendation angle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_benchA
Help Kiln get to know your printer in a few minutes: a guided session, one ask at a time.
Kiln judges where a second part can go on an occupied plate from a
record of how each printer moves its head on its own. Where that
record has a blank -- a pause, cancel or end nobody has described, a
head nobody has measured -- Kiln assumes the worst. This session
fills the blanks for THIS printer: it prints a coin-sized square,
pauses, resumes, cancels and ends it, and watches where the head goes.
A Klipper or Marlin printer says where its head is, so nothing about
the moves is asked; a closed-firmware printer is asked which numbered
zone the head stopped in (a picture is included) and about how high it
lifted. Numbers only ever leave the machine, and only while telemetry
is on. Runout is never tested.
Call it with no ``answer`` to start or resume. Every reply carries
``ask`` (one sentence -- relay it word for word), ``images`` (what each
picture is; the pictures themselves follow the reply as images, in the
same order -- show them), ``options`` when the answer is a choice, and ``waiting`` with
``check_again_in_seconds`` when Kiln is watching the print and there is
nothing to ask yet. Hand the person's answer back as ``answer``. The
test print is a real print: when the reply says so, show the file with
``visualize_model``, get a token with ``issue_preview_token`` and start
it with ``run_quick_print`` -- the normal approval dialog shows, once.
``restart=True`` throws the session away and begins again.
Args:
printer_name: Which printer. Omit for the default one.
answer: The person's answer to the previous ask, verbatim.
restart: Begin again from the first ask.
Returns the next ask, or ``done`` with what Kiln learned, the payoff
line, and what it still does not know.
| Name | Required | Description | Default |
|---|---|---|---|
| answer | No | ||
| restart | No | Default: false. | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it discloses that the test print is a real print, that an approval dialog appears once, that telemetry controls whether numbers leave the machine, that runout is never tested, and that restart discards the 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 front-loaded with the session's purpose and then walks through the interactive flow, return shape, and real-print implications. It is somewhat long and narrative, but most sentences add operational value for a complex multi-step 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 complex interactive tool with no output schema and no annotations, the description covers the workflow, parameter handling, real-print behavior, firmware-dependent asks, telemetry constraints, and the shape of replies including ask, images, options, waiting, and done.
Complex tools with many parameters or behaviors need more documentation. Simple 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 low at 33%, but the description compensates fully by defining printer_name, answer, and restart. It explains that omitting printer_name selects the default, that answer must be the person's previous answer verbatim, and that restart starts over from the first ask.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter 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 guided printer-profiling session, including the test square, pause/resume/cancel/end sequence, and head-position observation. It is distinct from generic print/calibration tools by describing its interactive, firmware-aware workflow, though it does not explicitly name alternatives such as run_calibrate or run_benchmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear operational guidance: call with no answer to start or resume, pass the person's answer verbatim, and use restart=True to begin again. It also says when to invoke run_quick_print during the session, but it does not explicitly state when not to use this tool versus other calibration/benchmark tools.
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. A camera the
user registered for the printer (``register_printer`` with
``camera_snapshot_url`` / ``camera_stream_url``) is used instead of the
printer's own; ``camera_source`` in the reply says which one answered.
: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?
With no annotations provided, the description does substantial work: it explains automatic protocol handling for Bambu A1/P1, OctoPrint/Moonraker, and Bambu X1 cameras, describes registered-camera precedence, and clarifies that camera_source in the reply identifies the source. It leaves out failure modes and permission requirements, but covers the key 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 front-loaded with the core action and stays reasonably compact. The protocol list and Sphinx-style parameter notes are useful but slightly verbose, keeping it just below maximally 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 tool with no annotations and no output schema, the description gives enough context to call it correctly: protocol support, camera-source precedence, save behavior, and fallback return format are all covered. It stops short of describing exact response structure or error behavior, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full parameter burden. It does: printer_name is explained as the target printer with omission meaning the default, and save_path is explained as optional with the fallback being a base64-encoded image in the response.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Capture a webcam snapshot from the printer.' It is immediately clear what the tool does, though it does not explicitly contrast with nearby tools such as webcam_stream or 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 only usage guidance is that printer_name can be omitted for the default printer. There is no explicit guidance on when to choose this snapshot tool versus siblings like webcam_stream, list_snapshots, or analyze_print_snapshot.
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 | Default: "full". | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does so well: it discloses the returned structure, the lite re-trimming behavior (capabilities omitted, printer trimmed), and that both levels carry every warning. It never explicitly states read-only/safety, but 'Get' strongly implies 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?
Front-loads the purpose and a scannable return-value breakdown before the arg notes. The closing paragraph about the retired print_status_lite and former key-alias lists is explanatory but slightly self-indulgent for a definition that must help selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 steps in with the return shape and the polling inspection levels. It is nearly complete, lacking only an explicit statement of read-only safety and any error/edge-case 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 coverage is only 50% and the schema itself says nothing but 'Default: full', so the description compensates fully — printer_name defaults to the default printer when omitted, and detail is defined with its two values (full/lite) and their concrete effects on the payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and enumerates the resources returned (state, temperatures, job progress, capabilities). It also implicitly distinguishes itself from the retired print_status_lite sibling, so an agent can tell what it does and what it replaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this as the first call to understand what the printer is doing" gives explicit entry-point guidance, and the detail=lite branch names the polling scenario it is for. It stops short of naming which sibling to use for continuous monitoring versus one-shot inspection.
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?
With no annotations, the description carries the burden and does disclose important behavior: data stays local, nothing leaves the machine, and the result includes health score, failure-rate trends, duration trends, recurring failure modes, and material reliability. It does not explicitly state read-only/non-destructive status, but the analysis framing and local-data statement strongly 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 short and front-loaded: it states what the tool does, then privacy behavior, then return values, then parameters. No sentence is wasted, and the Args section is useful because the schema has no parameter 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?
For a two-parameter analysis tool with no output schema and no annotations, the description is largely complete: it explains the data source, summarizes return contents, and documents both parameters. Minor gaps remain around read-only guarantees and exact interpretation of metrics, but the essentials for correct invocation 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?
Schema description coverage is 0%, so the description must compensate. It gives the purpose of printer_name and adds a useful default for lookback_days ('default 30 days'), but printer_name is only restated and neither parameter's accepted format or null behavior is clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Analyze') and resource ('local print history trends for a printer'), making the purpose clear. It does not explicitly differentiate itself from nearby siblings such as printer_stats, printer_usage_summary, or failure_history, but the 'trends' framing gives a recognizable 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 never says when to prefer this tool over alternatives like printer_stats, printer_usage_summary, or get_printer_insights. Usage is only implied by the word 'trends', leaving the agent to infer conditions and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
printer_usage_summaryB
How many printers are registered with this Kiln, and what they add to your bill on your plan, at the prices on kiln3d.com/pricing. Free on every plan.
Counts the machines registered here, so ask it on the computer your printers are attached to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden. It implies a read-only count and adds useful context that it is free on every plan and scoped to the local machine, but it never states that nothing is mutated, whether remote/cloud printers are excluded, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded and easy to parse, but the pricing-site URL and the repeated 'Free on every plan' sentence add marketing noise that does not help an agent invoke the tool. Awkward line wrapping also fragments the two useful facts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 parameters, the description should say roughly what comes back (a count, per-printer breakdown, cost figure). It communicates scope and cost intent but leaves the return shape entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline of 4 applies; there is nothing to disambiguate. The description correctly supplies no parameter discussion, though it could have noted the implicit local-machine context dependency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it counts the printers registered with this Kiln and reports what they add to the bill. That is concrete and distinguishable in substance, but the description never names the near-identical sibling `usage_summary` (nor `project_cost_summary`), so an agent must infer the boundary 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?
One genuine usage directive is given: run it on the computer the printers are attached to, implying a local-machine scope. Otherwise there is no when-to-use/when-not guidance and no mention of the alternative usage/cost tools that an agent would need in order to choose correctly.
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).
The response declares its own SCOPE. These are the prints THIS
machine recorded — another computer running Kiln keeps its own
history — and ``scope.local.total_records`` gives the store's full
matching count when ``limit`` truncated the page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 20. | |
| status | No | ||
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses that the history is machine-local and that scope.local.total_records reports the full matching count when limit truncates results, but it does not cover permissions, read-only safety, ordering, or return-record structure.
Agents need to know what a tool does to the world before calling 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 structured into an Args section and a scope note. It is appropriately sized, though the scope paragraph is slightly more verbose than 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?
For a three-parameter read tool with no output schema and no annotations, the description covers the essential filters, default limit, local scope, and pagination count. It leaves return-record fields implicit, but provides enough 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 description coverage is low at 33%, so the description has to compensate. It does so by documenting all three parameters, including the omission behavior for printer_name and the accepted status values "completed" and "failed", which are not enumerated 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 states a clear verb and resource: it gets recent print history with success/failure tracking. It also defines the local-machine scope, which distinguishes it from histories recorded by other Kiln installations, though it does not name any sibling tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use the filters but gives no guidance on when to choose this tool over alternatives such as get_model_print_history, failure_history, or job_history. Usage is only implied by the tool name and parameter list.
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: The tray per extruder by the printer's tray id
(e.g. ``[0]`` for slot A1, ``[5]`` for B2; see ``ams_status``).
: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 | Default: "auto". | |
| bed_type | No | Default: "auto". | |
| file_path | Yes | ||
| flow_cali | No | Default: true. | |
| ams_mapping | No | ||
| object_name | Yes | ||
| bed_leveling | No | Default: true. | |
| plate_number | No | Default: 1. | |
| printer_name | No | ||
| preview_token | No | ||
| vibration_cali | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and mostly does: it discloses that this is a three-step mutating pipeline, that start_print runs its own preflight safety check, and that upload and start are both aimed at the same printer. It does not warn that the call launches an irreversible physical print, nor state auth/online-printer prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then a numbered pipeline, then usage notes, then parameters. Nothing is redundant with the schema in a wasteful way and each section serves a distinct decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-output-schema tool this covers almost everything an agent needs, including the expected return shape (extraction info plus print start status). The gaps are minor: the undocumented preview_token and no explicit statement of printer-reachability prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 55%, but the description compensates well: it explains case-insensitive partial name matching for object_name, 1-based plate_number, AMS tray-id semantics for ams_mapping, allowed values for use_ams and bed_type, and printer_name fallback behavior. Only preview_token is left undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain 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 precise verb and resource — extract a single object from a multi-object .gcode.3mf and print it — and immediately distinguishes itself from the component tools (extract_plate_object, upload_file, start_print) by declaring itself a compound workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: use this for the whole pipeline in one call, and use list_plate_objects first to preview candidates. It implicitly routes granular flows to the three named component tools but never explicitly says when not to use this compound form.
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 | Default: "recommended". | |
| order_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description bears the full behavioral burden. "Start processing" implies a state-changing action, but it says nothing about cost implications, irreversibility, auth requirements, or what happens to an existing order. For a mutation tool with zero annotation coverage, this 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?
Two tight sentences, action statement front-loaded and parameters immediately after. The docstring-style "Args:" formatting is slightly mechanical but adds 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?
With no annotations and no output schema, the description should cover the confirmation/processing consequences and return behavior, but it stops at parameter listing. An agent knows what to pass but not what committing to this call means.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% and no enum is declared in the schema, yet the description enumerates the valid option values ("local", "fulfillment", "recommended") and explains that order_id is the ID returned by create_print_service_order. That is genuine meaning added beyond the structured 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 gives a specific verb and resource ("Confirm a print service order and start processing"), but it clashes with the tool name print_service_quote, which reads like a read-only price-quote tool. With siblings like fulfillment_quote and get_fulfillment_quote_cached nearby, that mismatch can mislead an agent about what this tool actually does, so it sits at merely adequate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implies a workflow by saying order_id comes from create_print_service_order, which gives an agent a clear prerequisite. However, it never says when to use this instead of the quote/status/cancel siblings, and offers no exclusions or alternatives.
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?
Despite having no annotations, the description discloses key behavioral facts: it delegates, it now returns printer_status's nested printer/job shape rather than the old flat completion_pct/hotend_temp keys, and it exists only for compatibility. This is exactly the kind of non-obvious behavioral context 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 deprecation warning is front-loaded in the first line, which is the right priority. The rename backstory ('two tools describing one nozzle temperature with two different words...') is interesting but slightly longer than necessary for an agent selecting a 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?
With no output schema, the description compensates by describing the return shape (nested printer/job blocks) and the old flat keys it no longer emits. Combined with the delegation note and single optional parameter, an agent has everything needed to call and interpret 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 coverage is 0%, so the description carries the parameter burden. It explains that printer_name is the target printer and that omitting it selects the default printer, which adds meaningful defaulting semantics beyond the bare string type. It could still state the expected name format, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific behavior (deprecated shim that delegates to printer_status(detail="lite")) and names the exact replacement tool. It is distinguishable from the sibling printer_status because it explicitly identifies itself as the legacy alias.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 directive: call printer_status(detail="lite") instead, and explains the only reason to use this one (backward compatibility for existing callers). When-to-use and when-not-to-use are both unambiguous.
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.
promote_kit_pieceC
Promote one kit piece to its OWN standalone design — lineage intact.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=promote_kit_piece
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Default: "". | |
| kit_id | No | Default: "". | |
| design_id | Yes | ||
| piece_label | No | Default: "". | |
| new_design_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It adds useful context that lineage remains intact and that Kiln Pro is required, but it does not say what happens to the original kit piece, whether the operation is reversible, what permissions are needed, or what errors may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in a strong first sentence, but the rest of the description is largely plan marketing and an upgrade URL rather than tool-selection guidance. That material does not earn its place in a concise tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a mutation tool with no annotations, no output schema, five parameters, and only partial schema description coverage. The description should do more to explain side effects, preconditions beyond licensing, and how the inputs map to the promoted piece and new design.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 60%, and the required fields design_id and new_design_id have no descriptions in the schema. The description hints that one input identifies the kit piece and another identifies the new standalone design, but it does not clarify the roles of kit_id, piece_label, or 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 first sentence gives a specific verb, resource, and outcome: promoting one kit piece into its own standalone design while preserving lineage. It is clear what the tool does, though it does not explicitly distinguish itself from nearby kit-related siblings such as plan_kit_plates or advise_kit_scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 a licensing prerequisite, 'Requires Kiln Pro,' but gives no guidance on when to use this tool versus alternatives or when not to use it. The implied use case is only inferable from the tool name and first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_design_changeB
Propose a branch's changes for review before merging.
Kiln Pro would open the change as a reviewable pull request — the proposed diff, comments, and a record of what merged and why. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=propose_design_change
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| brief_id | No | Default: "". | |
| design_id | Yes | ||
| description | No | Default: "". | |
| author_user_id | No | ||
| review_artifact | No | ||
| reviewer_user_id | No | ||
| source_branch_id | Yes | ||
| target_branch_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 behavioral burden. It discloses that the tool would open a pull request, what that artifact contains, and that Kiln Pro is required, but it does not cover permissions, idempotency, side effects on branches, or failure 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 short and front-loads the core action before the Kiln Pro requirement and upgrade link. There is minor redundancy between 'Kiln Pro would open...' and 'Requires Kiln Pro,' but it remains 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 mutation-like tool with 9 parameters, nested review_artifact, no annotations, no output schema, and low schema coverage, the description is too thin. It explains the high-level outcome and Pro gating but leaves critical invocation details and parameter semantics undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 9 parameters and schema description coverage is only 22%, so the description must compensate but adds almost no parameter meaning. It mentions 'branch's changes' generically but does not explain title, design_id, source_branch_id, target_branch_id, reviewer_user_id, review_artifact, or other 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 states a specific verb and resource: proposing a branch's changes for review before merging. It further clarifies that this opens a reviewable pull request with diff, comments, and merge record, which distinguishes it from direct merge or review 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?
It gives a clear usage condition ('before merging') and a prerequisite ('Requires Kiln Pro'), but does not explicitly compare alternatives such as merge_design_branches or review_design_pull_request. The when-to-use context is implied rather than fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_sourcing_remediationC
Close the loop on a flagged part: propose what to do about it.
Free door, tiered answer — Free: — · Pro: — · Business: — · Enterprise: ✓. Upgrade: https://kiln3d.com/pricing?src=agent&tool=propose_sourcing_remediation
| Name | Required | Description | Default |
|---|---|---|---|
| component | Yes | ||
| design_role | 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 behavioral burden. It discloses tier gating (Enterprise only) but omits permissions, side effects, whether a proposal is created or persisted, and any authorization requirements for a tool named around proposing remediation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful purpose sentence is front-loaded and brief. The tiering line adds some availability context, but the upgrade URL is promotional content that does not help an agent select or invoke the tool, consuming space without earning it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 0% schema description coverage on two complex object parameters, the description is insufficient for confident invocation. It identifies the general domain but does not supply the parameter, return, or behavioral detail that should compensate for the missing structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, with two nested object parameters (component and design_role) lacking any documented meaning. The description does not mention either parameter or explain what data they should contain, leaving the agent unable to infer correct input 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 states a verb and resource: propose what to do about a flagged part. However, 'what to do about it' is vague and does not specify sourcing remediation or distinguish this tool from sourcing-related siblings such as assess_bom_sourcing_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 gives no explicit when-to-use guidance, prerequisites, or alternatives. It only implies the tool applies to a 'flagged part,' which is minimal context without any routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prune_design_render_cacheC
Remove cached PNGs older than max_age_days.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=prune_design_render_cache
| Name | Required | Description | Default |
|---|---|---|---|
| max_age_days | No | Default: 30. |
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 disclose the important behavioral fact, that only cached PNGs (not designs or source files) are deleted, and that deletion is age-scoped, but it omits whether the operation is irreversible, whether it requires Pro entitlement (the upsell text hints at gating without clarifying), and what the call returns.
Agents need to know what a tool does to the 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 of the four sentences are marketing copy about Kiln Pro features, calibration, and an upgrade URL, none of which helps an agent select or invoke a cache-pruning tool. The one useful sentence is correctly front-loaded, but the rest is pure noise that competes for attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation with a fully documented schema and no output schema, the essential fact (what is deleted and the age cutoff) is present. What is missing is irreversibility/entitlement disclosure, and the promotional block actively adds ambiguity rather than filling that 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 100% and the schema already documents max_age_days with its default of 30. The description restates the parameter as the age threshold, adding no format or boundary detail (minimum, units, behavior at 0), which is the baseline expectation when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: remove cached PNGs, with a scope qualifier (older than max_age_days). No sibling in the very large sibling list appears to do the same thing, but the description never names a related tool (e.g. list_cached_models, delete_cached_model) to confirm the distinction, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this, when not to, or what the consequence of omitting max_age_days is, even though the parameter is optional and defaults to 30. The remaining sentences are a pricing upsell rather than guidance, so the agent gets no routing or prerequisite information.
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 | Default: "cc-by". | |
| category | Yes | ||
| file_path | Yes | ||
| description | Yes | ||
| include_certificate | No | Default: true. | |
| target_marketplaces | No | ||
| include_print_settings | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses validation, optional certificate generation from print history, and external upload to marketplaces, but omits auth requirements, idempotency/overwrite behavior, failure semantics, and public-visibility 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 purpose and behavioral summary come first, followed by a compact Args block. It is appropriately sized for nine parameters, though the docstring formatting is 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?
For a nine-parameter, externally consequential mutation with no annotations and no output schema, the definition covers purpose and most parameter semantics but leaves out permissions, error behavior, and what the caller gets back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description meaningfully compensates: it specifies accepted file formats (STL, 3MF, OBJ), enumerates valid license values, gives category examples, and states the default marketplace list. Minor gaps remain for title/description/tags 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 first sentence states a specific verb and resource: 'Publish a 3D model to one or more marketplaces.' It is clearly distinct from siblings such as list_published_models, marketplace_status, and model_revenue, which inspect rather than publish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action itself, but there is no explicit guidance on when to prefer this over sibling tools like contribute_community_print or publish_print_twin, and no stated prerequisites (account connection, model readiness).
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?
With no annotations, the description carries the full burden and does so: it discloses the source path (~/.kiln/monitor_twin), gzip upload, short-lived artifact token, per-fetch IDOR/tenant checks, and that nothing is uploaded except via this explicit call. It also states what happens when no retained file exists instead of guessing.
Agents need to know what a tool does to the 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 front-loaded with purpose first, then context, refusal behavior, Args, and Returns. It is somewhat verbose — the docstring Args/Returns block partly restates what the parameter/return shape conveys — but no sentence is wasted and structure is 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?
No output schema exists, but the description documents the success and failure response shapes ({success, artifact_token, stl_url|gcode_url, file_name, expires_in} vs {success, code, message}). Combined with the single-param explanation, an agent has everything needed to call it correctly or decide not to.
Complex tools with many parameters or behaviors need more documentation. Simple 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, and it does by explaining printer_name selects which printer's active print to publish and that omitting it targets the single/default printer. That is meaningfully more than the bare 'Printer Name' title 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?
States a specific verb (upload/publish) and resource (current print's sliced file / print twin) plus its consumer (web Monitor showing the object and layer scrubbing). This is clearly distinguishable from siblings like list_snapshots or issue_preview_token.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the web Monitor invokes it through the Kiln bridge during a print and that 'there is normally no reason to call it by hand', which is a clear when/when-not signal. It also names the failure case (pre-sliced uploads, jobs started at the printer screen) that yields an honest refusal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pull_reflog_from_cloudC
Read entries from the cloud reflog — shows what teammates did from their machines.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=pull_reflog_from_cloud
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 100. | |
| branch_id | No | ||
| artifact_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and largely fails it. 'Read' implies a safe read-only operation, but nothing is said about authentication, rate limits, pagination, or return shape. The 'Requires Kiln Pro' line is a licensing upsell and does not clarify the tool's runtime behavior, and the unrelated feature list ('calibration that learns your printer, mid-print edits...') is noise rather than 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 first sentence is well front-loaded and would stand alone as a fine description. It is then followed by three lines of irrelevant promotional content and a pricing URL, which waste tokens and risk confusing the agent about what the tool actually does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, three parameters, and only 33% schema coverage, the description needs to work harder. Instead it covers only the basic purpose and substitutes marketing text where behavioral and parameter context should be, leaving the definition materially 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 only 33% — limit is documented (default 100) while branch_id and artifact_type have no description in either schema or tool description. The description adds zero meaning to any parameter, so an agent is left guessing at the semantics of branch_id and artifact_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 opening clause is specific: 'Read entries from the cloud reflog — shows what teammates did from their machines.' It names a clear verb (read), resource (cloud reflog), and scope (teammate activity). It stops short of distinguishing itself from near-siblings like show_reflog, get_reflog_entry, and push_reflog_to_cloud, but the core 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?
There is no when-to-use guidance, no prerequisites, and no named alternative to route between pull_reflog_from_cloud and the closely related reflog tools. The remaining text is pricing/upsell copy that offers no invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purge_filamentA
Heat the nozzle and extrude a short length — the clog test.
Reports what the printer could honestly say, not that a command was
sent: ``extrusion_verified`` is ``False`` with ``error_hint`` when the
firmware refused the move (cold-extrusion guard, Klipper
``can_extrude=false``) or raised an extrusion fault during or right
after the purge (Bambu HMS codes, decoded to plain language);
``None`` when the move was accepted and the machine reports no flow
signal — every backend without a flow sensor — in which case look at
the nozzle for a clean stream. It is never ``True`` on a purge alone.
Refused while printing (paused is fine), below 170 °C, above the
printer's safety ceiling, outside the loaded spool's own temperature
window, and beyond 150 mm.
The answer always says where the purge went. Where the declared
model's own purge position is served one plan at a time through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it works offline — the head is parked over the purge chute before the
heater is touched, the machine's own tail snap and shake follow the
extrude, and ``purge_station.status`` is ``"parked"``. Otherwise it is
``"in_place"`` with the reason (a paused print, or no served position
for the model) and the head's coordinates where the printer reports
any; no coordinate is ever inferred, and no model borrows a sibling's.
A pad wipe is a separate door: ``wipe_nozzle``.
Args:
length_mm: Extrusion length, 1–150 mm (default 30).
material: e.g. ``"PLA"`` — picks a temperature when none is given.
temperature: Hotend target in °C. Omit to use the middle of the
spool's (AMS) or material's window.
slot: AMS tray whose temperature window applies (Bambu). Omit to
use the tray currently feeding the nozzle.
wait_seconds: How long after the purge to watch for a fault code
on Bambu (default 10). Bounded the same way as
``load_filament``'s.
keep_hot: Leave the heater ON afterwards, for a caller about to do
something else hot. Off by default: every op ends with the
heater off and says so; where the machine's own cool-down is
served, the part fan goes on and Kiln turns it off on its own
once the nozzle reads the hand-off temperature -- the answer
does not wait for that, and ``printer_status`` shows it.
printer_name: Which printer. Omit for the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | ||
| keep_hot | No | Default: false. | |
| material | No | ||
| length_mm | No | Default: 30.0. | |
| temperature | No | ||
| printer_name | No | ||
| wait_seconds | 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 and does: it defines extrusion_verified as False/None and never True, explains what error_hint means per backend, documents the purge-station parking behavior, and states that every operation ends with the heater off unless keep_hot is set. That is exactly the kind of behavior an agent cannot infer 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 purpose and return semantics are front-loaded, but the purge-position paragraph is a single convoluted sentence that buries its point (“parked” vs “in_place”) in subordinate clauses, and the hosted-service aside adds length without changing how the agent calls 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?
With seven parameters, no output schema, and no annotations, the description covers safety gating, return-value meaning, purge-station reporting, cooldown hand-off, and where the print must not be running. Nothing an agent needs to call it or interpret the response is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 29%, yet the Args block documents all seven parameters: ranges for length_mm, temperature selection logic for material and slot, the AMS tray default, what wait_seconds bounds are measured against, and the keep_hot/cooldown interaction. This fully compensates 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?
Opens with a concrete verb and resource: "Heat the nozzle and extrude a short length — the clog test." That single line separates it from load_filament (feeding filament) and wipe_nozzle (pad cleaning), both of which are named nearby in the fleet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 preconditions and refusal cases (not while printing, paused is fine, 170 °C floor, safety ceiling, spool window, 150 mm cap) and routes pad cleaning to wipe_nozzle. It never states the positive case against load_filament, but the scope is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_palettes_to_cloudC
Push locally saved custom palettes to your cloud account.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=push_palettes_to_cloud
| 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 disclosure burden. It reveals only that this is an upload-style mutation gated on a paid tier; it says nothing about overwrite/conflict behavior for palettes already in the cloud, authentication requirements, or failure modes. Half the text is a pricing advertisement for the wider product rather than behavioral information about 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?
Only the first sentence earns its place. The 'Everything in Free, plus calibration...' sentence and the upgrade URL are marketing copy that consumes more space than the actual functional description and dilute the front-loaded 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 parameterless, no-return-value tool this is close to adequate: an agent knows it uploads local palettes and needs a Pro tier. Still missing is what happens when the same palette already exists remotely, and the upsell text crowds out that 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 input schema has zero parameters at 100% coverage, so there is nothing for the description to document. Baseline 4 applies; no parameter meaning is missing or misstated.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource (push locally saved custom palettes to a cloud account), which is unambiguous on its own. It does not differentiate itself from adjacent tools such as save_custom_palette, cloud_sync_now, or cloud_push_preset_branch, and the remaining sentences describe the product tier rather than the 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?
'Requires Kiln Pro' is a useful precondition, but there is no statement of when to call this versus list_custom_palettes, save_custom_palette, or the cloud_sync_* family. No exclusions, no mention of what state the local palettes must be in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_reflog_to_cloudC
Mirror local reflog entries up to the tenant's cloud reflog.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=push_reflog_to_cloud
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 500. | |
| artifact_type | 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 does disclose the sync direction (local to cloud) and the tier gate, which are the two traits an agent most needs. It says nothing about conflict handling, whether existing cloud entries are overwritten or appended, or auth/credential requirements, so a mutation of unknown safety profile remains underspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly two-thirds of the text is pricing/upsell copy (feature list, "Requires Kiln Pro", upgrade URL) that does not help an agent invoke the tool and actively competes with the one sentence that does. The useful content is a single front-loaded sentence; the rest should be replaced with parameter and conflict 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?
A 2-parameter write-direction sync tool with no annotations and no output schema needs the description to cover overwrite semantics, partial-failure behavior, and what the parameters mean. None of that is present; the space is spent on tier advertising instead.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: `limit` carries a bare "Default: 500" and `artifact_type` is entirely undocumented in the schema. The description adds no meaning to either parameter, so the agent has no basis for choosing an artifact_type value or understanding what limit bounds.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource (mirror local reflog entries up to the tenant's cloud reflog) with an explicit direction, which is what an agent needs. It never names the obvious sibling pull_reflog_from_cloud, so differentiation is left implicit, and the following marketing sentences muddy the read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is a genuine prerequisite disclosed ("Requires Kiln Pro") that an agent should check before calling, which is real usage value. However, there is no statement of when to use this versus pull_reflog_from_cloud or the other reflog tools, and no exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_per_machine_offsetC
Return the calibration offset for a specific feature.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=query_per_machine_offset
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| printer_id | Yes | ||
| feature_class | Yes | ||
| nominal_size_mm | 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 does add one genuinely useful behavioral fact (the offset comes from a calibration profile measured from this printer's real prints and is applied when exact dimensions matter), but it never says what happens when Kiln Pro is absent (error vs. zero offset vs. fallback), nor the shape/units of the returned offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is front-loaded and precise, and the Kiln Pro requirement is worth keeping. The middle sentence is marketing narrative and the trailing pricing URL is agent-irrelevant payload that dilutes the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A four-parameter, fully-undocumented query tool with no annotations and no output schema needs the description to explain parameter meanings and return shape; instead it spends its budget on upsell copy. An agent cannot reliably construct a correct call from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all four parameters are required, so the description must compensate — it does not. Only "specific feature" loosely gestures at feature_class; printer_id, material, and nominal_size_mm (including its unit expectations and valid ranges) are completely unexplained in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ("Return the calibration offset for a specific feature"), so the agent knows this is a read of a per-feature calibration value. It does not differentiate from close siblings such as get_calibration_freshness, assess_calibration_status, or compute_iso_fit, so the agent must infer where this fits in the calibration family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires Kiln Pro" plus an upgrade link is an entitlement gate, not usage guidance — it tells the agent nothing about when to prefer this over get_calibration_freshness or explain_calibration_for_design. No when-not conditions, no preconditions about having measured data, no alternatives named.
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, recent jobs, and
``watch_alerts``: watched prints that have stalled or stopped answering
and need a person (they stay active until the printer ends them or
someone cancels).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It adds genuine behavioral context by explaining that watch_alerts entries stay active until the printer ends them or someone cancels — a non-obvious lifecycle detail. However, it says nothing about side-effect-free reads, permissions, or freshness/refresh semantics.
Agents need to know what a tool does to the 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, followed by the return breakdown. The watch_alerts parenthetical is dense but each clause adds real information, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no annotations and no output schema, the description compensates by enumerating the return fields, which is exactly what an agent needs. The only shortfall is the absence of routing guidance against related queue/status tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to explain and the description correctly does not invent 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?
States a specific verb+resource ('Get an overview of the print job queue') and enumerates the returned content: status counts, next job, recent jobs, and watch_alerts. This distinguishes it from a generic status tool, but it does not name any sibling (e.g. job_status, fleet_job_status) to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no mention of alternatives such as job_status, job_history, or fleet_job_status. The intended usage is only weakly implied by the word 'overview'; no prerequisites or exclusions are given.
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 in mm. Leave unset for the
nozzle Kiln has for ``printer`` (or the only printer it knows
of), else 0.4; the reply's ``nozzle`` says which.
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 | Default: "balanced". | |
| printer | No | ||
| regions | No | ||
| material | Yes | ||
| model_name | No | Default: "". | |
| 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 must carry the full behavioral burden. It explains the convenience nature and mentions one output field (nozzle), but does not disclose whether the tool is read-only, whether plan generation has side effects, or what the output plan contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, followed by a practical usage note. The Args section is necessary given low schema coverage, though there is minor redundancy between the opening sentence and the convenience explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 seven-parameter tool with no annotations or output schema, the description does enough to support invocation but is incomplete about return values and side effects. The absence of an output schema means the description should do more to explain what the generated plan includes beyond the single nozzle field.
Complex tools with many parameters or behaviors need more documentation. Simple 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 low (29%), and the description compensates by documenting all seven arguments: material examples, model height, optional model name, nozzle fallback behavior, mode values, optional printer, and default region behavior. It still leaves the structure of region dicts and printer identifier format somewhat open.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 combined action: analyzing geometry and generating an adaptive slicing plan. It distinguishes itself as a convenience alternative to multiple tool calls, but does not name the sibling tools it replaces (e.g., analyze_model_geometry or 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?
It clearly says to use this when you have basic model info and want a quick adaptive plan without multiple calls. It does not explicitly state when not to use it or name the individual alternatives to choose instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_design_sidecarC
Read provenance data from the sidecar next to an STL or recipe file.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=read_design_sidecar
| Name | Required | Description | Default |
|---|---|---|---|
| stl_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 behavioral burden. It implies a read operation and identifies the sidecar location, but does not explain permissions, missing-sidecar behavior, parsing behavior, output format, or other operational 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 useful purpose statement is front-loaded, but it is followed by two promotional sentences about Kiln Pro and an upgrade URL. Those sentences do not help an agent invoke the tool and substantially dilute an otherwise short definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no annotations, no output schema, and an undocumented parameter, the description is incomplete. It identifies the resource and sidecar location but leaves out the usage, parameter, and behavioral context needed for reliable 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%, and the sole parameter stl_path is undocumented. The description vaguely implies the path points to an STL or recipe file next to the sidecar, but does not clarify path format, accepted file types, or whether the parameter should target the model file rather than the sidecar itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: reading provenance data from a sidecar next to an STL or recipe file. That is clear and distinguishable from most siblings, though it does not explicitly name alternatives or explain where it fits among provenance-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 no when-to-use guidance, no when-not-to-use guidance, and no alternatives such as get_provenance_history or verify_provenance_integrity. The only practical prerequisite mentioned is 'Requires Kiln Pro', which does not help the agent choose the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_material_datasheetC
Get the extraction rules + field catalog (and fingerprint your text).
Kiln Business would verify the quoted datasheet values, build a structured material profile, and keep it in your ingested-materials library. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=read_material_datasheet
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden, and it does disclose one genuinely useful trait: a Kiln Business tier gate. However it leaves the side-effect profile ambiguous — the name says 'read' but 'fingerprint your text' implies state being written or recorded, and nothing states idempotency, caching, or what happens to the submitted text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the remaining three lines are commercial copy — a product pitch, a tier notice, and a URL — that do not help the agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, and a nearly undocumented parameter, the description should explain what comes back (rules shape, catalog fields, fingerprint value) and whether calling it mutates anything. It instead spends half its length on an upgrade link, leaving an agent unable to predict 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 coverage is nominally 100%, but the single parameter's schema description is only 'Default: ""', which conveys nothing, so the description must compensate. The parenthetical 'fingerprint your text' hints that the text is the material being fingerprinted, but adds no format, length, or source guidance; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence gives a specific verb+resource: fetch extraction rules and a field catalog, plus fingerprinting the supplied text. But it never reconciles that with the tool name (read_material_datasheet) or with the nearest siblings ingest_material_datasheet and list_ingested_materials, so the agent cannot tell which one starts an ingestion flow versus merely fetching rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no mention of a prerequisite ingestion step, of when to call this versus ingest_material_datasheet, or of what to do with the returned rules. The only conditional is the tier requirement, which is about eligibility rather than usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebase_design_branchC
Rebase a design branch's divergent versions onto another. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rebase_design_branch
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| operator | No | ||
| onto_branch_id | Yes | ||
| source_branch_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 it does add two real facts: the Kiln Pro entitlement requirement and a side effect (opening an interactive 3D stage, with automatic mesh decimation). However, for a rebase — an operation that rewrites branch history and can produce conflicts — it says nothing about what happens on conflict, whether the source branch's prior head is recoverable, or what the tool returns 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 front-loaded sentence is good, but the INLINE 3D STAGE paragraph restates the stage behavior already given in sentence one, and a three-line pricing/upgrade block sits mid-description. Roughly half the text is marketing repetition rather than operational 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 3-parameter, no-annotation, no-output-schema mutation of branch history, the agent still lacks conflict behavior, recoverability, return shape, and any parameter documentation. The description spends its remaining space on the upsell and the stage, so the operationally important gaps go unfilled.
Complex tools with many parameters or behaviors need more documentation. Simple 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 largely does not. 'Rebase ... onto another' weakly implies the source/onto pairing, but the third parameter, 'operator', is never mentioned and none of the three parameters' formats or constraints are clarified.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource — rebase a design branch's divergent versions onto another (branch) — which is recognizable as a history-replay operation. It does not, however, distinguish itself from close siblings like merge_design_branches, rebase_feature_branch, or source_merge_three_way, so an agent cannot tell from the text alone when rebase is preferred over merge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus merging, cherry-picking, or compare_branches, and no prerequisites beyond a paywall notice. The only conditional content ('Kiln Pro would preserve this version so you can branch, restyle, compare outcomes') is an upsell, not invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebase_feature_branchC
Rebase a feature branch. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rebase_feature_branch
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| operator | No | ||
| onto_branch_id | Yes | ||
| source_branch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose a real side effect: the tool opens an inline 3D stage, decimates oversized meshes, and attaches a browser link on hosted sessions. That is genuine behavioral context. However, it never states what rebase does to branch history, how conflicts are surfaced, or that it rewrites commits — the core behavioral facts for this operation are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded, but it is followed by a large block of tier/upsell boilerplate and an INLINE 3D STAGE section that is mostly marketing. Much of this bulk does not earn its place for an agent deciding how to invoke a rebase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Three parameters with zero schema descriptions, no annotations, and no output schema means the description carries the full burden, and it does not deliver: parameter meanings, conflict behavior, and the result shape are all missing while space is spent on upgrade messaging.
Complex tools with many parameters or behaviors need more documentation. Simple 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% across three parameters, yet the description never explains source_branch_id versus onto_branch_id, nor what the undocumented 'operator' parameter does. The 'onto' target is not mentioned at all, so the description fails to compensate 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 opening sentence 'Rebase a feature branch' gives a specific verb and resource that an agent can act on. It does not distinguish itself from the obvious siblings rebase_design_branch, rebase_preset_branch, or merge_feature_branches, so the agent must infer which branch type applies from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to rebase versus merge, no mention of preconditions (clean working state, conflict handling), and no reference to alternatives such as merge_feature_branches or detect_feature_merge_conflicts. The only 'guidance' present is a paywall notice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rebase_preset_branchC
Rebase a decoration preset branch. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rebase_preset_branch
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| operator | No | ||
| onto_branch_id | Yes | ||
| source_branch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description does disclose some real behavior: a Kiln Pro entitlement gate, the automatic inline 3D stage, and automatic decimation of oversized meshes. However, it says nothing about the core mutation — whether rebase rewrites branch history, how conflicts are reported, or whether it is destructive — which is the highest-risk unknown for a rebase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only one sentence serves the purpose; the rest is a pricing upsell and two near-duplicate paragraphs about the inline 3D stage that restate the same thing (panel in MCP Apps hosts, browser link otherwise). The actionable content is buried and diluted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A three-parameter history-rewriting operation with no annotations and no output schema needs far more: parameter meaning, conflict/failure behavior, and what state results. The description spends its budget on viewer features and Pro marketing instead.
Complex tools with many parameters or behaviors need more documentation. Simple 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 there are three parameters (source_branch_id, onto_branch_id, operator), yet the description never mentions any of them. It neither explains the source/onto relationship nor the role of 'operator', so the agent must guess.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('Rebase a decoration preset branch'), which is enough to distinguish it from rebase_design_branch and rebase_feature_branch in the sibling list. It does not explain what rebasing actually does to the branch, but the operation is identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 rebase versus when to use merge_decoration_preset_branches, cherry_pick_decoration_modification, or cloud_pull_preset_branch. No prerequisites, ordering constraints, or conflict conditions are stated.
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 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| recipe_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 behavioral burden and does so thoroughly: it explains mode selection, parameter application reporting, artifact output type based on printer registration, preview rendering behavior, and inline 3D stage activation. It also warns that unsupported edits are reported rather than silently dropped.
Agents need to know what a tool does to the world before calling 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 action statement and uses structured bullets for modes and parameters. It is fairly long and includes some environment-specific notes, but most details are relevant to correct invocation and output handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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, lack of annotations, and lack of an output schema, the description is complete: it explains both modes, return structure, artifact type, preview behavior, and parameter effects. An agent has enough information to call it correctly and 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?
Schema description coverage is 50%, but the description fully compensates by explaining recipe_path as either a design directory or recipe file, and by detailing brief_id semantics: when supplied it is recorded on the recipe for provenance; when omitted the existing goal is preserved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 action and resource: 'Re-execute the full build pipeline from a saved design recipe.' It then distinguishes two modes, parametric and mesh, and names sibling tools it relates to, such as update_scad_parameter, rescale_model, 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?
It gives explicit conditions and alternatives: use parametric rebuild when the recipe has OpenSCAD source, use mesh rebuild when it does not, change parameters via update_scad_parameter rather than scaling, and perform mesh edits with rescale_model or thicken_mesh_walls before rebuilding. It also clarifies the local make loop in relation to compile_scad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recategorize_artifactC
Move a miscategorized artifact into the right category — "actually, this is a decoration / a reusable part".
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recategorize_artifact
| Name | Required | Description | Default |
|---|---|---|---|
| sign | No | Default: false. | |
| notes | No | Default: "". | |
| new_id | No | ||
| new_name | No | ||
| signed_by | No | ||
| source_id | Yes | ||
| source_kind | Yes | ||
| target_kind | 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 never says whether the move is destructive, whether the source artifact is copied or renamed in place, whether existing references/IDs break, or what happens to the untouched parameters — and over half the text is tier/upsell boilerplate unrelated to 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 first sentence is well front-loaded, but the following two sentences plus an upgrade URL are pure promotional content with zero operational value, consuming roughly two-thirds of the 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?
For a mutation tool with no annotations, no output schema, and 6 of 8 parameters undocumented, the description should disclose far more about effects and identity handling. It offers only the tier gate and upgrade link, leaving the agent without enough to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eight parameters with only 25% schema description coverage, and the description adds no meaning for source_id, source_kind, target_kind, new_id, new_name, or signed_by. The category framing faintly implies what source_kind/target_kind are, but new_id/new_name/signed_by remain entirely unspecified in both schema and 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 opening sentence gives a concrete verb and object ('Move a miscategorized artifact'), and the concrete examples ('this is a decoration / a reusable part') make the source_kind-to-target_kind reclassification unambiguous. It does not name a nearby sibling such as promote_kit_piece or transfer_artifact_between_orgs to disambiguate, but the core action 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?
There is no statement of when to reclassify versus when to use promote_kit_piece, import_model_parts, or transfer_artifact_between_orgs, nor any prerequisites such as whether the artifact must be unlocked or in a branch. The only constraint offered, 'Requires Kiln Pro', is framed as marketing rather than operational guidance.
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 | Default: 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the event source, default/max limit, and broad event categories, but omits important traits such as ordering, freshness, pagination, authentication needs, and 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 purpose is front-loaded, and the Args and Returns sections make the definition easy to scan. The text is appropriately sized with no wasted sentences; 'and more' is a minor vagueness but not a structural problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 read tool with no output schema and no annotations, the description covers the essential invocation details and return categories. It is slightly incomplete because it does not describe the event object shape or ordering/pagination behavior, which would help an agent interpret results without an 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 description coverage is only 50%: the type parameter has no schema description and limit only states the default. The description compensates fully by explaining the type prefix matching behavior with examples and by adding the max limit of 100 and the omit-for-all-events 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 states a specific verb and resource: retrieving recent events from the Kiln event bus, and it adds useful scope via the event categories returned. It does not explicitly distinguish this tool from potentially related siblings such as print_history or get_session_log, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no alternative tool is named. The parameter semantics explain filtering, but the description does not tell an agent when this event-bus query is preferable to other monitoring or history tools.
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 | Default: "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 whole burden. It does disclose the computation inputs and the shape of the result (a concrete brim width, optional raft, slicer_overrides), which is useful. However, it never states that the tool is read-only / does not modify the mesh, whether it performs expensive slicing, or any timing/caching behavior — meaningful gaps for a no-annotation 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 first line front-loads purpose, scope, and inputs, and the second paragraph adds the analysis and return-value detail. The Args block largely duplicates the schema, which is mild redundancy rather than bloat, so structure remains 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?
With no output schema, the description correctly fills that gap by explaining the return value (slicer_overrides and how to consume it). It also explains the three parameters adequately. It leaves minor unknowns — required-parameter emphasis, units/precision of brim width, and read-only guarantee — but is otherwise sufficient for correct 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 only 33% (only 'material' has a description, and merely 'Default: "PLA"'), so the description must compensate — and it largely does, documenting model_path as an STL/OBJ mesh, material as filament type affecting warp risk, and printer_id as an optional model ID used to detect bed-slinger printers. It omits that model_path is the sole required parameter and gives no accepted path form, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recommend brim/raft settings') plus the inputs that drive it (geometry + material), and names the concrete artifact it produces (brim width, optional raft, slicer_overrides). An agent can distinguish this from generic siblings like recommend_settings or get_optimal_settings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear situational context (analyzes bed contact area, warp tendency, printer type before slicing) and an explicit downstream handoff: the returned slicer_overrides are 'ready to pass to slice_model or slice_and_print'. It stops short of stating when NOT to use it or naming alternative tools (e.g. recommend_settings, get_optimal_settings), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_adhesiveB
Which adhesive joins these two printed plastics — ranked, with prep + cure schedule.
Kiln Pro would rank suitable bonding paths and prepare the surface-preparation and cure steps for the stated conditions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_adhesive
| Name | Required | Description | Default |
|---|---|---|---|
| flexible | No | Default: false. | |
| reusable | No | Default: false. | |
| show_math | No | Default: false. | |
| material_a | Yes | ||
| material_b | No | Default: "". | |
| uv_exposure | No | Default: false. | |
| food_contact | No | Default: false. | |
| load_bearing | No | Default: false. | |
| biocompatible | No | Default: false. | |
| heat_available | No | Default: false. | |
| water_exposure | No | Default: "". | |
| vacuum_outgassing | No | Default: false. | |
| cure_time_available | No | Default: "any". | |
| temperature_exposure | No | Default: "indoor". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses that Kiln Pro is required and that results are ranked bonding paths with surface-prep and cure steps, but it does not state whether the operation is read-only/non-destructive, what happens on unsupported material pairs, or any output/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 short and front-loads the core purpose. The second sentence largely restates the first, and the upgrade URL is promotional rather than operational, but the definition remains 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 14-parameter tool with no annotations and no output schema, the description gives only a high-level return shape: ranked bonding paths plus prep/cure schedule. It covers the entitlement requirement but leaves gaps around optional material_b behavior, how the condition booleans affect ranking, and result/error 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 high at 93%, so the schema already carries the baseline parameter documentation. The description only adds framing around 'these two printed plastics' and 'stated conditions'; it does not explain the many condition flags such as uv_exposure, food_contact, load_bearing, or cure_time_available beyond the schema 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 states a specific recommendation task: selecting an adhesive for two printed plastics, with ranked options and prep/cure guidance. It is clear about the resource and output, but it does not explicitly distinguish itself from nearby siblings such as recommend_joint_strategy, recommend_adhesion_settings, or get_material_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 use case is implied by 'Which adhesive joins these two printed plastics,' and 'Requires Kiln Pro' adds an entitlement prerequisite. However, it does not say when to use this tool versus related recommendation or material-substitute tools, nor does it provide exclusions.
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 | Default: 300. | |
| printer_has_enclosure | No | Default: false. | |
| printer_has_direct_drive | No | Default: true. |
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 does well: it discloses the return shape (top pick plus reasoning, warnings, alternatives) and the material-coupled prerequisites (enclosure needed for ABS/ASA/Nylon/PC, direct drive for TPU). It does not state that the call is read-only/non-mutating or mention any cost/latency, but the advisory framing makes the safety profile self-evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then the routing guidance, then parameters. Nearly every sentence earns its place, though the Args block partially restates the schema titles and 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?
No output schema exists, yet the description explains the return payload, and with only one required parameter and three optional hardware flags, the supplied context is sufficient to invoke the tool correctly. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the Args section goes beyond the schema by attaching concrete meaning to each parameter: an example requirement string, which material families each boolean unlocks, and what the hotend temperature gates. Only max_hotend_temp_c gets thin treatment (units restated, no explanation of which materials depend on 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?
States a specific verb and resource ('recommend material for engineering/functional parts') and scopes it with the domains it covers (strength, heat, environment). The description also spells out what the tool produces ('top recommendation with reasoning, warnings, and alternatives'), so an agent knows both the action and the deliverable without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes an explicit routing block naming the two sibling tools and the condition that selects each: this tool for engineering specs, recommend_material for quick intent-based picks, suggest_material_for_order for service orders. This is the strongest form of when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_design_reinforcementsB
Recommend specific reinforcements for an STL mesh.
Analyzes geometry to find structural risks, then generates actionable
recommendations with **specific locations** and what each one does for the part:
- **gusset**: triangular support at cantilever bases
- **fillet**: smooth transitions at stress concentrations
- **thicken_wall**: add material at thin necks
- **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 | Default: 4.0. |
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 does disclose meaningful behavior — that it analyzes geometry and emits recommendations with coordinates and a suggested Kiln tool — but never states whether the STL is modified, whether this is read-only, or what the analysis cost/limits are.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a scannable bullet list of reinforcement types. The trailing ':param'/':returns' Sphinx docstring lines are mildly redundant boilerplate but convey the return shape, so waste is limited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the return shape ('Dict with reinforcements list') and describes what each recommendation contains. It is still thin on prerequisites — no mention of mesh quality requirements, unit assumptions for coordinates, or whether it writes anything — for a tool whose sibling can actually mutate the design.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: min_cross_section_mm2 has only a 'Default: 4.0' note, and the description adds real meaning ('Minimum safe cross-section area'), while file_path is self-evident and needs no elaboration. This compensates marginally for the coverage gap but adds no format or validation detail beyond what the schema implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Recommend specific reinforcements for an STL mesh') and explains the mechanism: geometry analysis followed by actionable recommendations with coordinates and the downstream Kiln tool to call. It implicitly separates itself from sibling 'apply_design_reinforcements' by framing the output as recommendations, but it never names the sibling or says explicitly that it does not apply the changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the workflow ('analyzes geometry ... then generates recommendations'), which suggests calling this before an apply step. There is no explicit when-to-use, when-not-to-use, or named alternative such as analyze_structural_risks or apply_design_reinforcements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_hardware_pocketC
Size the pocket for a piece of hardware in a 3D-printed part, and grade one drawn.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_hardware_pocket
| Name | Required | Description | Default |
|---|---|---|---|
| how | No | Default: "". | |
| count | No | Default: 1. | |
| entry | No | Default: "". | |
| load_n | No | ||
| roof_mm | No | ||
| wall_mm | No | ||
| floor_mm | No | ||
| hardware | Yes | ||
| material | No | Default: "PLA". | |
| printers | No | ||
| torque_nm | No | ||
| infill_pct | No | ||
| cad_size_mm | No | ||
| environment | No | Default: "". | |
| cad_depth_mm | No | ||
| through_hole | No | Default: false. | |
| measured_size_mm | No | ||
| screw_through_mm | No | ||
| application_class | No | Default: "consumer_product". | |
| measured_height_mm | No | ||
| cad_slot_thickness_mm | No | ||
| measured_hole_shrink_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does add one genuinely useful behavioral fact: the answer is tier-gated, and the free tier returns warnings only while paid tiers return sizing and fit. What it never discloses is whether the call mutates anything, what permissions are needed, or how the 22 inputs affect the answer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and fine, but roughly half the text is a promotional tier ladder plus an upgrade URL, which spends space on sales copy instead of on the 22 undocumented 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?
A 22-parameter engineering tool with no annotations and no output schema needs a far richer description. The agent learns neither the meaning of the measurement and load inputs, nor what the graded result contains, nor how warnings differ from sizing output in practice.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 32% across 22 parameters, so the description must carry the explanation — and it contributes nothing. Opaque names like cad_size_mm, measured_hole_shrink_mm, load_n, torque_nm, and application_class go entirely unexplained; only 'hardware' is loosely implied by the prose.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause gives a specific verb and resource: size the pocket for a piece of hardware in a 3D-printed part. The trailing 'and grade one drawn' is ambiguous (grade a drawn pocket? a drawing?) and nothing distinguishes it from close siblings like recommend_hole, design_hole_for_product, or plan_hardware_insertion, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus recommend_hole, recommend_magnet_for_product, or plan_hardware_insertion, and no prerequisites. The only routing information is commercial (which tier unlocks which answer), not functional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_holeC
Tell me what size hole to drill for something to fit through.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_hole
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | Default: "normal". | |
| material | No | Default: "PLA". | |
| print_axis | No | Default: "xy". | |
| printer_id | No | Default: "". | |
| screw_name | No | Default: "". | |
| thing_type | No | Default: "generic". | |
| hole_purpose | No | Default: "clearance". | |
| hole_depth_mm | No | Default: 0.0. | |
| blind_or_through | No | Default: "through". | |
| edge_distance_mm | No | Default: 0.0. | |
| thing_diameter_mm | No | Default: 0.0. | |
| wall_thickness_mm | No | Default: 0.0. |
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 disclose one genuinely important behavior: the answer is tier-gated, with Free returning warnings only and Pro/Business/Enterprise adding sizing, per-machine fit, QC plans and supplier vetting. That is useful output-shape information, but permissions, determinism, units, and what happens with all-default (0.0) inputs are all undisclosed, and the rest of the text is pricing promotion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence purpose is front-loaded and clear, but roughly two-thirds of the body is a four-tier upsell with a tracking URL. The tier information earns partial credit as behavioral disclosure; the pricing copy and link do not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter engineering tool with no output schema and no annotations, the description says nothing about input dependencies, units, whether any parameter is effectively required (all default to empty or 0.0), or the shape of the result. The only context provided is commercial, leaving an agent under-equipped 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?
All 12 parameters have schema descriptions, so the baseline is 3, but those descriptions are only 'Default: X' strings, and the tool description adds nothing about what material, fit, print_axis, hole_purpose, blind_or_through, or the mm measurements actually control or which combinations matter. The description never compensates for the shallow schema text.
Input schemas describe structure but not intent. Descriptions should explain non-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 concrete verb+resource: recommend a drilled hole size so a given object fits through. It is readable and specific, but it never distinguishes itself from close siblings such as compute_iso_fit, recommend_running_clearance, or design_hole_for_product, so an agent cannot route between them from this text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use / when-not-to-use guidance and no named alternatives, despite many overlapping hole/fit tools in the sibling list. The only usage-adjacent signal is the implicit tier gate (free returns warnings, Pro returns sizing), which tells an agent what it may get back but not when to call this over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_joint_strategyB
Tell me what kind of fastener / joint to use for a 3D-printed part.
Kiln Pro would compute the load verdict — factor of safety and derate chain included — and recommend the bracing and joints to carry it. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_joint_strategy
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "PLA". | |
| substrate | No | Default: "plastic_print". | |
| print_axis | No | Default: "". | |
| printer_id | No | Default: "". | |
| fastener_size | No | Default: "". | |
| cycled_assembly | No | Default: false. | |
| structural_load | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that Kiln Pro computes a load verdict with factor of safety and derate chain, recommends bracing and joints, and requires Kiln Pro, but it omits side effects, permissions, and whether the call is purely 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 first sentence front-loads the purpose, followed by useful behavioral context and the Kiln Pro prerequisite. The upgrade URL is promotional but short, and the overall description is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 seven optional parameters, no output schema, and no annotations, the description gives some return context such as load verdict and bracing/joints. However, it leaves input semantics and output shape underspecified for reliable 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 100%, so the baseline is 3 even though the schema descriptions are mostly defaults. The description adds no parameter-level meaning, such as how material, print_axis, cycled_assembly, or structural_load shape the recommendation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: recommend a fastener or joint for a 3D-printed part. The purpose is clear, but it does not differentiate itself from siblings such as get_joint_recommendation or lookup_fastener.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or comparison to alternatives. 'Requires Kiln Pro' is a prerequisite, not a routing rule, so an agent cannot tell when this tool is preferable to sibling joint or fastener tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_magnet_for_productB
Recommend a magnet strategy for a printed product, with tier-gated depth.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_magnet_for_product
| Name | Required | Description | Default |
|---|---|---|---|
| use_case | Yes | ||
| load_mode | No | Default: "pull". | |
| show_math | No | Default: false. | |
| commercial | No | Default: false. | |
| compliance | No | Default: false. | |
| max_temp_c | No | ||
| environment | No | Default: "indoor". | |
| body_adjacent | No | Default: false. | |
| print_material | No | Default: "". | |
| strong_magnets | No | Default: true. | |
| supplier_packet | No | Default: false. | |
| target_material | No | Default: "". | |
| child_accessible | No | Default: false. | |
| multiple_magnets | No | Default: false. | |
| current_supply_chain | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It usefully discloses tier-gated output depth and that warnings are always free, but it does not state whether the tool is read-only, what tier/auth is needed to call it, or whether it changes any 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 purpose is front-loaded, followed by a compact tier breakdown and upgrade link. The tracking URL is extraneous to invocation, but the description remains short 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?
It explains the tiered recommendation depth, which is useful because no output schema exists. However, for a 15-parameter tool it never explains how key inputs like commercial, compliance, or child_accessible affect the answer, leaving some gaps despite good schema 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 87%, so the schema already documents most parameters and a baseline of 3 is appropriate. The description adds no parameter-specific meaning for use_case, load_mode, max_temp_c, or the other 12 inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Recommend a magnet strategy for a printed product,' and notes tier-gated depth. It does not explicitly distinguish this from nearby magnet tools like check_magnet_design or generate_magnet_qc_plan, but the recommendation intent 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 tier breakdown gives context about output depth, but there is no explicit when-to-use/when-not guidance or alternatives among the many magnet-related siblings. An agent must infer that this is the pre-design recommender rather than validation, QC, or supplier-vetting tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_materialARead-only
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 | Default: "". | |
| on_hand_only | No | Default: false. | |
| has_enclosure | No | Default: false. | |
| has_heated_bed | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the read-only, closed-world safety profile; the description adds substantive behavior an agent could not get elsewhere: nozzle-wear warnings from nozzle state, the availability block semantics, tier-gating (fleet-wide on_hand sweep is a Business feature), and the guarantee that results never silently widen to the catalog while still naming a better unowned material.
Agents need to know what a tool does to the 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 a scannable routing table and Args list. It is verbose in places — the on_hand_only behavior is re-explained across two long paragraphs and includes a pricing URL — but almost every sentence carries operational detail rather than 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?
With no output schema, the description compensates by describing the response shape (machine named, availability block, needs-purchase labeling, alternate-material note). Combined with tier limits, defaults, and routing, an agent has everything needed to call and interpret 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 67% and the description meaningfully extends it: printer_id's effect on nozzle-state evaluation and response labeling, on_hand_only's exact candidate set (recorded spools + loaded materials, shelf vs loaded semantics), and budget as a per-kg cap. has_enclosure/has_heated_bed are only covered by the opening phrase 'considers enclosure, bed, budget', which is thinner than the rest.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Recommend material from intent + printer capabilities') and immediately scopes it (enclosure, bed, budget). The explicit routing table names the sibling tools (recommend_design_material, suggest_material_for_order, find_printers_with_material, get_fleet_material_summary) so an agent can distinguish this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Which material tool to use' block gives explicit when-to-use routing to four alternatives plus a self-referencing variant for on_hand_only. It also states conditions (mixed fleet, one printer, ordering vs designing), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_running_clearanceC
What gap to MODEL between two printed parts that must move.
Kiln Pro would calculate the compensated feature, then check its surrounding wall, edge distance, and engagement constraints. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_running_clearance
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| brief | No | ||
| mating | Yes | ||
| material | No | Default: "PLA". | |
| nominal_mm | No | ||
| printer_id | No | ||
| same_print | No | Default: true. | |
| pressure_angle_deg | No | Default: 20.0. |
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 disclose the Kiln Pro entitlement requirement, which is real behavioral value, but it never states what the tool actually returns, whether it errors or returns an upsell when unsubscribed, or whether the 'would calculate' framing means the tool does nothing but advertise. That ambiguity is a meaningful transparency 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?
Purpose leads, but one of four sentences is a bare pricing URL, and the middle sentence adds hedged rather than actionable detail. Not bloated, but not 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 an 8-parameter, gated tool with no output schema and no annotations, the description leaves critical gaps: parameter meaning, return shape, and post-upgrade behavior. The user would have to discover invocation semantics by trial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eight parameters at 50% schema coverage, and the description mentions none of them — not even the required 'mating' argument, nor how mode/material/nominal_mm/pressure_angle_deg affect the recommendation. The description does nothing to compensate for the undocumented half of 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 first sentence gestures at the resource (clearance gap between two moving printed parts), but the phrasing is framed as a question ('What gap to MODEL') rather than a clear verb, and the second sentence describes what Kiln Pro 'would calculate' rather than what this tool does. An agent can infer this relates to running-fit clearance, but genuine sibling differentiation (vs. check_assembly_clearances, recommend_hole, compute_iso_fit) is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites beyond the gating notice, and no alternatives named among the many clearance/fit-related siblings. The agent is left to guess whether this is the right clearance tool.
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?
With no annotations provided, the description carries the full burden and does well: it explains the data source, return content (aggregated recommendations plus raw settings), conditional kiln-pro overlay behavior, the extra calibration_used/rationale fields, and that recommendations are advisory and do not override safety limits. It stops short of declaring read-only status or error/no-data behavior, keeping it at a 4.
Agents need to know what a tool does to the world before calling 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, followed by return details, conditional kiln-pro behavior, a safety caveat, and Args documentation. The kiln-pro paragraph is long but explains important conditional output, so most sentences earn their place; only minor trimming would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no annotations, the description is largely complete: it covers the data source, return shape, conditional calibration overlay, advisory nature, and parameter meanings. It omits edge cases such as what happens when no historical successes match, leaving a 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?
Schema description coverage is 0%, so the description must compensate. Its Args section documents all three parameters with concrete examples (printer_name like "voron-350", material_type like "PLA"/"PETG", file_hash for exact matching) and the opening sentence clarifies that filters can be combined with and/or. It could explicitly state that all parameters are optional, but the added meaning is substantial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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: recommend print settings based on historical successful outcomes, sourced from a learning database. It does not explicitly distinguish this tool from likely siblings such as get_optimal_settings, predict_print_settings, or infer_print_settings, so it earns a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful by explaining that it queries historical successful prints, but it never explicitly says when to use it instead of related tools like get_optimal_settings or predict_print_settings. The advisory/safety note adds useful context but is not a usage-routing guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_static_dissipative_materialB
Which static-dissipative material for this job -- or whether the one you named fits.
Free door, tiered answer — Free: Safety basics — always free · Pro: Safety basics · Business: Grade selection & sourcing for your printer · Enterprise: + Audit-ready ESD program support. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recommend_static_dissipative_material
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| printer_id | No | Default: "". | |
| application | No | Default: "". | |
| max_service_temp_c | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden and mostly does not. It does disclose that answers are tier-gated (Free = safety basics only, deeper grade/sourcing and audit support require paid tiers), which is a genuine behavioral trait an agent needs. Beyond that it says nothing about read-only nature, side effects, or response shape, and the tier text reads as marketing rather than operational 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 lead sentence is crisp and front-loaded and the tier line does carry functional information about answer depth. However the pricing URL and tier upsell consume roughly half the text for what is essentially one useful fact (answers are gated by plan).
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, yet the description never indicates what a recommendation looks like, whether it returns ranked candidates or a yes/no on the supplied material, or how the four inputs combine. For a four-parameter advisory tool with zero structured support, that 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 nominally 75%, but the property descriptions are only 'Default: ""', so the schema conveys little semantics. The description's 'the one you named fits' mildly signals that `material` is optional input for the validation mode, but printer_id, application and max_service_temp_c get no explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain 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 concrete verb+resource: pick a static-dissipative material for a job, or check whether a named one fits. That distinguishes it from generic siblings like recommend_material or get_material_properties, though the dual mode (recommend vs. validate) is only implied by a dash clause rather than spelled 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?
'or whether the one you named fits' hints at a second invocation mode (pass an existing material), which is real usage guidance inferred from the sentence. But it never says when to choose this over the many neighbouring material tools (recommend_material, get_best_material_substitute, check_material_match, recommend_design_material), nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_text_sizeD
One-stop text-sizing helper for product decoration.
| Name | Required | Description | Default |
|---|---|---|---|
| face_name | Yes | ||
| char_count | Yes | ||
| product_type | Yes | ||
| face_fill_pct | No | Default: 0.8. | |
| face_width_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about how sizing is computed, what units are returned, whether face geometry is required, or what the defaults mean. A single marketing sentence is far below the minimum for a five-parameter calculation tool with no annotations or output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted clauses, so it is concise and front-loaded. However, the brevity is under-specification rather than efficiency, and 'one-stop' is promotional filler that does not earn 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 tool with five parameters, 40% schema coverage, no annotations, and no output schema, the description is essentially absent. An agent cannot tell what a valid call looks like, what the result represents, or how to interpret face_fill_pct and face_width_mm.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40%, and the description adds no parameter-level meaning at all. It does not explain product_type, face_name, char_count, face_fill_pct, or face_width_mm, leaving required inputs and the two optional numeric defaults undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it is a 'text-sizing helper for product decoration,' which vaguely restates the tool name without specifying that it returns a recommended text size from product type, face name, and character count. It does not distinguish this from siblings like get_face_emboss_depth, describe_face, or list_decoratable_faces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives, no prerequisites, and no exclusions. The phrase 'one-stop' implies broad applicability but gives the agent no routing signal among the many decoration and face-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_bond_outcomeC
Record whether a glued joint held or failed — so Kiln learns over time.
Kiln Pro would rank suitable bonding paths and prepare the surface-preparation and cure steps for the stated conditions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_bond_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| result | Yes | ||
| adhesive | Yes | ||
| design_id | No | Default: "". | |
| material_a | Yes | ||
| material_b | No | Default: "". | |
| printer_id | No | Default: "default". | |
| environment | No | Default: "". | |
| failure_mode | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add genuine behavioral context: this is a persistent write feeding a learning loop ('so Kiln learns over time') and it is gated behind Kiln Pro. However it never states what happens on a non-Pro call, whether repeat submissions for the same design are deduplicated, or what a successful call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but two of the four remaining lines are marketing copy and an upgrade URL that do not help invoke the tool. The upsell is disproportionate to the one sentence of real substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter write tool with no annotations and no output schema, the description says nothing about the parameters, the accepted result values, the feedback loop's outputs, or error behavior. It is far short of what an agent needs to call this 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?
Nine parameters with only 67% schema coverage, and the coverage that exists is inert boilerplate ('Default: ""'). The description names no parameter at all, and critically leaves 'result' — the most important field — with no enum or accepted values, so an agent cannot know whether to pass 'held', 'failed', or something else.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource — record whether a glued joint held or failed — which is concrete enough to act on. It does not distinguish itself from near-identical siblings such as record_hardware_outcome, record_load_outcome, record_magnet_outcome, or record_chemical_outcome, so the agent gets no help choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is the prerequisite 'Requires Kiln Pro', which is a gating note rather than when-to-use guidance. Nothing says when to call this versus recommend_adhesive, recommend_joint_strategy, or get_joint_recommendation, nor how often to log an outcome.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_calibration_correctionC
Record an explicit correction event linking two observations.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_calibration_correction
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Default: "user_explicit". | |
| annotation | No | Default: "". | |
| confidence_adjustment | No | Default: 0.0. | |
| original_observation_id | Yes | ||
| corrected_by_observation_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the Kiln Pro entitlement requirement, which is real behavioral context, but says nothing about side effects: whether the correction alters the calibration profile, how confidence_adjustment is applied, or whether the event is reversible/auditable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only the first sentence does tool-description work; the remaining three sentences are a Kiln Pro upsell and a pricing URL. Roughly half the text is marketing rather than invocation guidance, which is not concise for an agent-facing definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A five-parameter mutation tool with no annotations and no output schema needs more: what the call returns, whether the linked observations must already exist, and what effect the correction has on subsequent calibration queries. The description covers purpose and entitlement only.
Complex tools with many parameters or behaviors need more documentation. Simple 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 80%, so the schema already documents all five parameters including defaults. 'Linking two observations' loosely maps to original_observation_id and corrected_by_observation_id but adds no semantics about what 'reason', 'annotation', or 'confidence_adjustment' mean in practice. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Record an explicit correction event') and adds the key relational detail that it links two observations. It doesn't differentiate from near-siblings like apply_calibration_recommendations, revert_calibration_recommendations, or ingest_measurement, and 'correction event' is left undefined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a correction should be recorded versus using ingest_measurement or apply_calibration_recommendations, and no statement of prerequisites beyond the paywall note. The one usable signal — 'Requires Kiln Pro' — is a licensing gate, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_chemical_outcomeC
Record how a printed part actually held up to a chemical -- so Kiln learns.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_chemical_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| result | Yes | ||
| reagent | Yes | ||
| duration | No | Default: "". | |
| material | Yes | ||
| design_id | No | Default: "". | |
| printer_id | No | Default: "default". | |
| environment | No | Default: "". |
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 write nature ('Record') and a real gating constraint ('Requires Kiln Business'), which is genuine behavioral context. However it says nothing about what gets persisted, idempotency, permissions beyond tier, or what the result value should represent, leaving major 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 purpose sentence is front-loaded and effective, but the remaining lines are promotional upsell ('Business adds team review, approval gates, and 3 printers (grow to 50)') that do not help the agent invoke the tool and dilute the signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description covers purpose and tier only. It omits parameter meaning, expected input formats, and behavioral consequences, leaving the agent under-equipped 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?
Schema coverage is 63%, and crucially the three required parameters (material, reagent, result) have no schema descriptions at all; the description adds no meaning for any of them. It does not explain what format 'result' should take or what 'reagent' means, so it fails to compensate for the 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 first sentence states a clear verb+resource: recording how a printed part held up to a chemical, with the 'so Kiln learns' framing signalling a feedback/outcome tool. It does not differentiate itself from close siblings like record_skin_contact_outcome, record_load_outcome, or check_chemical_resistance, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The tier gating ('Requires Kiln Business') is a prerequisite, not usage guidance, and nothing tells the agent how this relates to check_chemical_resistance or the other record_*_outcome tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_cutter_replacementC
Record a filament-cutter blade swap -- the whole operation, one call.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| blade_side | No | Default: "". | |
| printer_id | Yes | ||
| replaced_at | No | Default: "". | |
| printer_model | No | Default: "". | |
| reason_detail | No | Default: "". | |
| client_event_id | No | Default: "". | |
| cuts_before_kiln | No | ||
| previous_cut_count | 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 behavioral burden. It implies a single write operation capturing the entire swap, but does not disclose permissions, side effects, idempotency, whether it updates printer state or only logs history, or what the response contains. For a mutation tool with nine parameters, 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 a single front-loaded sentence with no filler. It is appropriately brief for the stated purpose, though its brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no output schema, nine parameters, and only 56% schema description coverage, the definition is not complete enough for an agent to call the tool confidently. Missing information includes parameter semantics, side effects, expected response, and guidance on how this differs from related maintenance or cutter-status tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 56%, and the description adds no parameter-level meaning beyond what the schema provides. Required fields like reason and printer_id are not explained, and optional fields such as blade_side, replaced_at, cuts_before_kiln, previous_cut_count, and client_event_id have no semantic guidance in either the description or 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 a specific verb and resource: record a filament-cutter blade swap. It also indicates scope with 'the whole operation, one call,' making the tool's intent clear. However, it does not explicitly differentiate this logger from nearby tools such as cutter_wear_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?
There is no explicit guidance on when to use this tool versus alternatives, nor are prerequisites or exclusions stated. The phrase 'one call' hints at consolidation, but an agent must infer that this is for logging a completed blade replacement rather than checking wear or recording partial events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_decoration_preset_outcomeC
Record a print outcome against a specific preset version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_decoration_preset_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| outcome | Yes | ||
| mesh_path | No | ||
| print_job_id | Yes | ||
| quality_score | No | ||
| adhesion_quality | No | ||
| preset_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose one useful trait — that the tool 'Requires Kiln Pro' — but says nothing about permissions, side effects, whether the outcome is immutable, how quality_score/adhesion_quality are validated, or what happens on conflict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but three of the four lines are marketing copy ('Everything in Free...', 'Requires Kiln Pro', upgrade URL) that consumes space without aiding invocation. Signal-to-noise is poor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the definition is inadequate. The agent lacks parameter formats, success/failure semantics, and tier-gating consequences beyond the bare 'Requires Kiln Pro' note.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, and the description adds no meaning for any of them. Fields like outcome, quality_score, adhesion_quality, and mesh_path have no stated format, allowed values, or relationship to preset_version_id, so the agent must guess entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'Record a print outcome against a specific preset version.' An agent can tell it is a write tool tied to a preset version. However, it does not distinguish itself from near-siblings such as record_decoration_success, record_print_outcome, or record_design_version_outcome, leaving ambiguity about which recorder to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no exclusions are given. The remaining lines are a Pro-tier upsell rather than routing information, so the agent gets no signal on when this tool is appropriate versus the many other outcome-recording tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_decoration_successA
Record a successful print with a saved decoration (Kiln Pro).
After a decoration prints well, call this with the settings that
worked. ``apply_decoration`` then replays them on that material.
:param name: Decoration name or slug.
:param material: Material used (e.g. ``"PLA"``, ``"PETG"``).
:param depth_mm: Depth in mm that printed well.
:param mode: ``"emboss"`` or ``"deboss"``.
:param image_style: Image style that worked (e.g. ``"coin"``).
:param source_job_id: The print's job id when known: the same
print reported twice (here and through
``record_print_outcome``) counts once.
:returns: Dict with the updated decoration.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "emboss". | |
| name | Yes | ||
| depth_mm | Yes | ||
| material | Yes | ||
| image_style | No | Default: "auto". | |
| source_job_id | No | Default: "". |
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 genuinely useful behavior: the source_job_id dedupe rule against record_print_outcome, and that the return is the updated decoration. It does not state whether the decoration must already exist or what permissions are needed, leaving a modest gap for a record/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?
Front-loaded one-line summary followed by a workflow sentence, then terse per-parameter notes. The Sphinx docstring markup is slightly noisy, but every line carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers the trigger, the meaning of each input including the tricky source_job_id, and the return shape ('Dict with the updated decoration'). An agent has enough to call it correctly; only preconditions around the existing decoration are unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%, and the description compensates for all six parameters: material examples ('PLA', 'PETG'), the mode domain ('emboss'/'deboss'), image_style example ('coin'), and the dedupe semantics of source_job_id, which the schema does not convey. It adds real meaning beyond the schema, though units/validation for depth_mm remain unstated.
Input schemas describe structure but not intent. Descriptions should explain 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+resource ('Record a successful print with a saved decoration') with named scope (Kiln Pro) and an explicit statement of the downstream consumer, apply_decoration. An agent can distinguish it from apply_decoration and record_print_outcome without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the trigger condition plainly: 'After a decoration prints well, call this with the settings that worked.' It also disambiguates against the overlapping record_print_outcome path by stating the same print reported twice counts once. No explicit when-not guidance, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_design_version_outcomeC
Record whether a print succeeded or failed for a design version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_design_version_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| success | Yes | ||
| material | Yes | ||
| design_id | No | ||
| mesh_path | No | ||
| printer_id | Yes | ||
| version_id | Yes | ||
| warp_severity | No | Default: 0.0. | |
| adhesion_issues | No | Default: false. | |
| material_cost_usd | No | Default: 0.0. | |
| vision_confidence | No | ||
| previous_version_id | No | ||
| print_time_actual_s | No | Default: 0.0. | |
| electricity_cost_usd | No | Default: 0.0. | |
| predicted_adhesion_risk | 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, yet it says nothing about write semantics, idempotency, whether this feeds calibration/learning models, or what happens to the 11 optional diagnostic fields. The bulk of the text is a Kiln Pro upsell with an upgrade URL, which hints at a subscription gate but never states clearly whether this call will fail without Pro or merely enables extra features.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is correctly front-loaded, but roughly two-thirds of the description is marketing copy and an upgrade link that does not help an agent select or invoke the tool. That is wasted space in a definition that already under-documents its 15 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?
For a 15-parameter mutation with no annotations and no output schema, the description should explain required inputs, the printer/material relationship, and what recording actually triggers. It covers none of that, so an agent has to fall back entirely on a thin, partially documented 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 description coverage is only 40% across 15 parameters, so the description needed to compensate and does not. Beyond loosely mapping to the required `success` boolean, it never explains scales or meaning for warp_severity, vision_confidence, predicted_adhesion_risk, material, or the cost/time fields, leaving an agent to guess at units and conventions.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: record whether a print succeeded or failed for a design version. That is clear enough to act on, but it never distinguishes this tool from close siblings such as record_print_outcome, record_decoration_success, or record_decoration_preset_outcome, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus record_print_outcome or the other outcome-recording siblings, no preconditions (does the version need to exist, must the print be complete?), and no mention of the tier requirement being a real gate. The only 'guidance' is implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_esd_measurementC
Log a measured surface resistance for a printed dissipative part.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_esd_measurement
| Name | Required | Description | Default |
|---|---|---|---|
| ohms | Yes | ||
| notes | No | Default: "". | |
| method | No | Default: "". | |
| surface | No | Default: "contact". | |
| material | Yes | ||
| design_id | No | Default: "". | |
| printer_id | No | Default: "". | |
| nozzle_temp_c | 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 what is a write operation. It mentions a plan-tier prerequisite and vaguely alludes to 'team review, approval gates', but never says whether a logged record is immediately persisted, queued for approval, validated against a resistance threshold, or what error surfaces on a non-Business account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded in the first sentence, but two of the four lines are plan-upsell boilerplate including a tracking URL with utm parameters that carries no operational value for the 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?
An 8-parameter write tool with no annotations, no output schema, and undocumented required fields cannot be called confidently from this description alone. It omits what success returns, how approval gates affect the write, and any unit or range for the core 'ohms' 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?
Schema description coverage is only 63%, and both required parameters ('material', 'ohms') have no schema description at all. The prose hints at 'surface resistance' and 'surface' but adds no units, expected range, valid values for 'method'/'surface', or meaning for design_id/printer_id/nozzle_temp_c, so it fails to compensate 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 first sentence gives a specific verb and resource ('Log a measured surface resistance for a printed dissipative part'), which is unambiguous about the operation. It does not distinguish itself from nearby record_* tools (record_chemical_outcome, record_load_outcome, ingest_measurement) that could plausibly swallow a measurement, so sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Business' is a genuine gating condition that tells the agent whether the call is even permitted, which is useful. However, there is no statement of when to use this versus ingest_measurement or record_calibration_correction, and no guidance on when a measurement should not be logged (e.g. duplicate entries).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_extrusion_eventC
Pro+ — record a sensor-side extrusion-deviation event.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_extrusion_event
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No | Default: "medium". | |
| event_type | No | Default: "under_extrusion". | |
| printer_id | 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 and largely fails it. It does not say whether the event is appended to a persistent log, whether duplicates are allowed, whether it is idempotent, what side effects occur downstream (e.g. calibration learning), or what permission/isolation applies to the printer_id.
Agents need to know what a tool does to the 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 of four sentences are a Free-vs-Pro feature pitch and a pricing URL, which do not help the agent invoke the tool and bury the single useful clause. The content is also back-to-front relative to its importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style recording tool with no annotations and no output schema, the description should disclose what gets persisted and what is returned. Instead it spends its length on subscription marketing, so an agent cannot predict the effect of calling 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 coverage is 67%, and the schema itself only supplies defaults ('medium', 'under_extrusion') without enumerating valid values. The description adds nothing about the severity scale, allowed event_type values, or printer_id scope, leaving the agent to guess the accepted vocabulary.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause 'record a sensor-side extrusion-deviation event' is a specific verb+resource and would stand alone as a clear purpose. However, it is prefixed by a tier label ('Pro+') that reads as a conditional, and nothing distinguishes it from adjacent outcome-recording siblings (record_print_outcome, record_calibration_correction, record_hardware_insertion).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only conditional given is 'Requires Kiln Pro', which is an entitlement gate, not usage guidance. There is no statement of when to log an event versus fixing it, when to prefer a diagnostic tool, or when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_filament_colourC
Tell Kiln what colour a filament really printed, so its colour suggestions show your result.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_filament_colour
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes | ||
| note | No | Default: "". | |
| brand | Yes | ||
| colour | Yes | ||
| material | Yes | ||
| printer_id | No | Default: "". | |
| observed_by | Yes | ||
| observed_hex | 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 behavioral burden. It does disclose the Kiln Pro entitlement requirement and hints that the record affects colour suggestions, but it says nothing about write-side effects, permissions, validation of observed values, reversibility, or response 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 useful purpose statement is front-loaded in one sentence, but the next two paragraphs are purely subscription promotion and do not help an agent decide how to invoke the tool. Roughly two-thirds of the description is noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter mutation-like tool with no annotations and no output schema, the description is far too thin. It conveys the basic intent and entitlement requirement but leaves key parameter semantics, usage context, and behavioral effects undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% across eight parameters, so the description needed to compensate. It only vaguely gestures at the colour being recorded and explains nothing about brand, line, material, observed_hex format, observed_by, printer_id, or note.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb and resource: recording the actual printed colour of a filament so Kiln can improve its colour suggestions. It does not name or distinguish any sibling tools, and the remaining two paragraphs are promotional rather than clarifying 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 implies that this is used after printing to feed back an observed colour, but it gives no explicit when-to-use guidance, prerequisites, or alternatives. There are many sibling tools related to recording outcomes and colour matching, yet none are referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_hardware_insertionC
Record what went into which part, when and by whom (Business).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_hardware_insertion
| Name | Required | Description | Default |
|---|---|---|---|
| lot | No | Default: "". | |
| note | No | Default: "". | |
| stop | No | ||
| serial | No | Default: "". | |
| hardware | No | Default: "". | |
| operator | No | Default: "". | |
| design_id | No | Default: "". | |
| photo_path | No | Default: "". | |
| version_id | No | Default: "". | |
| printer_name | No | Default: "". |
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 implies a write/record operation and notes the Business requirement, but does not describe side effects, approval-gate behavior, authentication expectations, or what happens when fields are omitted. The mention of team review and approval gates reads as a feature upsell rather than concrete 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 purpose sentence is front-loaded, which helps, but the following sentences are promotional plan details and an upgrade URL rather than invocation guidance. Several sentences do not earn their place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10 parameters, no annotations, and no output schema, so the description should carry more behavioral and workflow context. Instead it spends most of its words on Business-tier marketing and omits return behavior, side effects, and when this recording step belongs in the broader hardware-insertion 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 high (90%), so the baseline is 3. The description's phrase "what went into which part, when and by whom" loosely maps to hardware, design/version, stop, and operator fields, but it adds no explicit parameter guidance beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a rough verb and resource: recording what hardware went into which part, when, and by whom. However, the resource is described only vaguely as "what went into which part," and the tool is not distinguished from siblings such as plan_hardware_insertion or record_hardware_outcome. The rest of the description shifts into plan marketing rather than clarifying 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?
It states a licensing prerequisite ("Requires Kiln Business") but gives no guidance on when to use this tool instead of planning or outcome-recording siblings. An agent is left to infer the workflow context and prerequisites on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_hardware_outcomeC
Record how a piece of hardware in a printed part came out (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_hardware_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | Default: "". | |
| how | No | Default: "after_print". | |
| stop | No | ||
| entry | No | Default: "". | |
| grade | No | Default: "". | |
| layer | No | ||
| notes | No | Default: "". | |
| result | Yes | ||
| seat_id | No | Default: "". | |
| cover_mm | No | ||
| hardware | Yes | ||
| material | No | Default: "". | |
| design_id | No | Default: "". | |
| predicted | No | Default: "". | |
| printer_id | No | Default: "". | |
| version_id | No | Default: "". | |
| environment | No | Default: "". | |
| printer_model | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only the Pro-tier gate. For a write tool it says nothing about validation of `hardware`/`result`, whether records are immutable, what side effects occur, or whether the call can fail on missing design/printer 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?
Three of four sentences are product marketing and an upgrade URL with tracking parameters ('?src=agent&tool=record_hardware_outcome'). This is agent-facing bloat that consumes attention without conveying invocation 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?
An 18-parameter mutation tool with no annotations and no output schema needs a substantially richer description; this one covers only the tier requirement and a sales pitch. An agent cannot confidently determine required inputs beyond the schema's two required fields or predict the call's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eighteen parameters with 72% schema description coverage, and the description contributes zero parameter meaning — nothing about what `result`, `fit`, `grade`, `predicted`, or `how` should contain. With coverage below the 80% threshold, the description is expected to compensate and instead adds nothing.
Input schemas describe structure but not intent. Descriptions should explain non-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 does name a verb and resource: 'Record how a piece of hardware in a printed part came out.' That is a recognizable purpose, but 'came out' is colloquial and the definition never distinguishes this from the many near-identical siblings (record_hardware_insertion, record_print_outcome, record_magnet_outcome, record_load_outcome). An agent must guess which outcome-recording tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usable guidance is the prerequisite 'Requires Kiln Pro.' There is no statement of when to call this versus record_hardware_insertion or any other outcome recorder, and no mention of preconditions, timing, or what data must exist first. The remaining text is a tier/upgrade pitch, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_load_outcomeC
Report how a printed part did under a load it carried in real use.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| load_n | No | ||
| result | Yes | ||
| verdict | No | Default: "". | |
| hardware | No | ||
| material | Yes | ||
| design_id | No | Default: "". | |
| printer_id | No | Default: "". | |
| version_id | No | Default: "". | |
| environment | No | Default: "". | |
| conditioning | No | Default: "". | |
| printer_model | No | Default: "". | |
| load_knowledge | No | Default: "estimated". | |
| days_in_service | Yes | ||
| stress_fraction | No | ||
| service_temperature_c | No | ||
| temperature_knowledge | No | Default: "estimated". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a write/record action but does not state that data is persisted, whether it feeds a learning/calibration loop, whether re-submission is allowed, or what identifying keys (design_id, version_id, printer_id are all optional) are needed to associate the outcome.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy, which reads cleanly. For a tool with 17 parameters it is arguably too terse, but as a structural matter nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with no annotations, no output schema and incomplete schema descriptions, one sentence is far too thin. The description says nothing about the required trio (material, result, days_in_service), the estimated-vs-measured distinction implied by load_knowledge/temperature_knowledge, or the write semantics an agent needs before calling 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 description coverage is only 59%, and the description adds no parameter meaning at all. Several parameters that are clearly semantically loaded (load_knowledge and temperature_knowledge defaulting to 'estimated', verdict, stress_fraction, conditioning, hardware) have no explanation in either the schema or the description, so the agent must guess at formats and valid 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 names a specific verb (report/record) and resource (how a printed part performed under a real-world load), so an agent can tell this is a field-outcome capture tool rather than an analysis tool like assess_load_bearing. It does not, however, distinguish itself from closely related recorders such as record_print_outcome or record_hardware_outcome, so sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says what is recorded but never when to call it, e.g. after real service use versus during testing, nor what alternatives exist (record_print_outcome, record_hardware_outcome, ingest_measurement). The 'in real use' phrase hints at a context but is not an explicit usage condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_magnet_outcomeC
Record whether a magnet actually held (Pro). Prefer record_hardware_outcome.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_magnet_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| family | Yes | ||
| result | Yes | ||
| design_id | No | Default: "". | |
| load_mode | No | Default: "". | |
| printer_id | No | Default: "". | |
| environment | No | Default: "". | |
| retention_method | 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 reveals only the Pro-gating constraint ('Requires Kiln Pro'); it does not say whether this is a write that updates calibration/learning state, whether records are idempotent or overwritable, or what the call returns. Most of the remaining text is a pricing upsell rather than 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 actionable content is the first line, which is front-loaded well. But two of the four sentences are a marketing blurb and a tracking URL that duplicate the '(Pro)' marker, and 'Requires Kiln Pro' restates what the title already signalled - substantial waste in a short 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?
For an unannotated 8-parameter write tool with no output schema, the description should explain the record's effect and the key inputs. Instead it stops at a one-line purpose plus an upsell, leaving an agent unable to tell what a successful call does to calibration data or what values are valid.
Complex tools with many parameters or behaviors need more documentation. Simple 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 63% and three required parameters (family, result, retention_method) have no schema descriptions at all. The description adds no meaning to any parameter - no allowed values for result, no explanation of retention_method or how load_mode/printer_id scope the record - so it fails to compensate for the mid-level 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 first sentence gives a specific verb and resource ('Record whether a magnet actually held') and names the sibling it should be displaced by ('Prefer record_hardware_outcome'), so the agent can route without opening the schema. It falls short of 5 because the purpose statement is scoped only by '(Pro)' and never says what 'outcome' values or records actually capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Prefer record_hardware_outcome' is an explicit alternative and implies this tool is the magnet-specific fallback. However, it never states the condition under which this tool IS the right choice (versus the general hardware recorder), so a strict when/when-not is not present.
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 | Default: "B". | |
| overhang_ratio | Yes | ||
| triangle_count | Yes | ||
| complexity_score | Yes | ||
| surface_area_mm2 | Yes | ||
| print_time_seconds | No | Default: 0. | |
| geometric_signature | Yes | ||
| geometric_signature_v2 | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load. It usefully discloses that the data is saved for cross-user learning and explains the lasting consequence of omitting geometric_signature_v2: the row is stored with only the older key and can never be separated from a sharing design later. However, it does not describe permissions, idempotency/duplicate handling, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and prerequisite are front-loaded, and the Args block is justified by 15 parameters. It is somewhat long and docstring-like, but nearly every line adds needed parameter meaning; the important geometric_signature_v2 warning is buried at the end rather than surfaced early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 15-parameter mutation tool with no annotations and no output schema, the description covers the core purpose, prerequisite, parameter semantics, and the key data-integrity consequence. It is still missing return behavior, overwrite/duplicate semantics, and authorization expectations, which leaves some operational 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 only 20%, so the description has to compensate, and it mostly does: it documents all 15 parameters with meanings, examples, ranges, defaults, and the outcome values "success", "failed", and "partial". The settings dict remains underspecified, and a few fingerprint fields are only vaguely described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Record a print outcome with full model DNA" and explains it saves the model fingerprint with print settings and outcome for cross-user learning. It is clearly distinguishable from general outcome recording, though it does not explicitly contrast its closest sibling, record_print_outcome.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a clear prerequisite: use fingerprint_model first to compute the fingerprint fields. It does not state when to prefer this over record_print_outcome or other recording tools, so it lacks explicit alternative guidance, but the usage context is otherwise clear.
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 | Default: false. | |
| auto_recorded | No | Default: false. | |
| 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, the description carries the full behavioral burden and does so well: it discloses safety validation and rejection of unsafe temperatures, decoration counter side effects, confidence-gated auto-classification storage, resolution of pending rows, and precedence of the most recent call. The print_error explanation also carefully separates firmware evidence from failure_mode verdicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is long but structured with front-loaded purpose, bold behavioral sections, and a detailed Args block; for a 17-parameter tool with low schema coverage, that length is mostly justified. Some prose, especially the extended print_error philosophy, is more verbose than strictly 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 complexity, absent output schema, and lack of annotations, the description is complete enough for correct invocation: it covers safety limits, side effects, backfill behavior, confidence thresholds, defaults, and the special case of resolving a pending row in place. No critical agent-facing detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 12%, but the Args section compensates thoroughly for all 17 parameters, including allowed outcome/quality values, example failure modes, expected settings/environment keys, auto-resolution behavior for printer/file/material, defaults for determined_by and auto flags, and side effects tied to decoration_slug. This adds 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 states a specific verb and resource — record a print outcome — and clarifies that this is agent-curated learning data, separate from auto-populated print history. It does not explicitly distinguish itself from nearby sibling tools such as record_decoration_preset_outcome or analyze_print_failure, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: manual records relay user-reported outcomes, auto_recorded tags auto-fired outcomes, and callers can refine by calling again with the same job_id. It lacks explicit when-not-to-use guidance or named alternative tools, which keeps it at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_proven_recipeC
Record a design version's recipe as proven after a print (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_proven_recipe
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| success | No | Default: true. | |
| version | No | ||
| material | No | ||
| design_id | Yes | ||
| parameters | No | ||
| printer_name | No | ||
| product_type | Yes | ||
| filament_line | No | ||
| decoration_type | 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 the full behavioral burden and largely fails: it does not say whether an existing proven recipe is overwritten, what happens if the referenced print failed, whether the version must exist, or what side effects occur. The remaining text is marketing copy about Pro features rather than operational 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 core action is front-loaded in sentence one, which is efficient. But the middle sentence ('Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations') is pure tier marketing that does not help an agent invoke the tool, and the upgrade URL is only marginally 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?
This is an 11-parameter mutation tool with no annotations, no output schema, and very low schema description coverage — the description should be doing substantially more. Aside from flagging the Pro requirement, it leaves the agent without enough information to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 18% (notes and success carry trivial 'Default:' strings), so with 11 parameters the description needed to compensate and does not. It adds no meaning for design_id, version, decoration_type, product_type, parameters, printer_name, material, filament_line, or nozzle_diameter_mm beyond what the bare schema names suggest.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource — recording a design version's recipe as proven after a print — which an agent can distinguish from the sibling list_proven_recipes. It does not explicitly name alternatives, but the action and object are 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 phrase 'after a print' implies the trigger condition, giving a baseline when-to-use signal. However, it never states exclusions or points to related tools like record_print_outcome, record_design_version_outcome, or list_proven_recipes, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_recovery_checkB
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 | Default: "". | |
| 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 behavioral burden. It says nothing about whether the call mutates persistent state, what happens if session_id is unknown, whether checks are idempotent, or what errors/permissions apply. For a write tool with zero annotation coverage this 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?
Front-loaded purpose sentence followed by a compact Args breakdown, with no filler. The Args section is mildly redundant with the schema but is a reasonable readability aid given the weak 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?
For a mutation tool with no annotations and no output schema, the description covers the basics of what to record but omits return behavior, failure modes, and how this check relates to the broader recovery state machine. 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?
Schema description coverage is only 33% (notes carries just a 'Default' hint), so the description must compensate, and it does: it explains session_id as the monitored session, passed as the check outcome, and notes as optional commentary. All three parameters gain 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?
States a specific verb (Record) and resource (post-recovery monitoring check result), and the second sentence clarifies the domain context. It does not, however, differentiate itself from siblings like get_recovery_session_status or confirm_print_recovery, so an agent must infer its slot in the recovery workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description situates the tool after recovery execution ('After recovery execution, monitoring checks verify the print is proceeding correctly'), which implies when to use it. But it names no alternatives and gives no explicit when-not condition against the many other recovery-session tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_revenueB
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 | Default: "USD". | |
| model_id | Yes | ||
| amount_usd | Yes | ||
| description | No | Default: "". | |
| marketplace | Yes | ||
| transaction_type | No | Default: "sale". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for a write operation: it says nothing about required permissions/scopes, idempotency, duplicate handling, or what the call returns. Critically, it never explains how the currency parameter relates to amount_usd (which is described as USD), leaving a real ambiguity in a financial mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose sentence is front-loaded and the Args block is compact, with every parameter line adding information not already in the schema. Minor redundancy in restating currency's default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter financial mutation with no annotations and no output schema, the description omits permissions, response shape, idempotency, and the currency-vs-USD amount semantics. An agent can construct the call but not predict its 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 coverage is only 50% and the three required parameters have no schema descriptions, so the description does meaningful work: model_id is a file hash or listing ID, marketplace is a name with an example, and transaction_type values are enumerated. Only the amount_usd/currency interaction remains unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Record a revenue event,' and enumerates the exact event types it covers (sale, royalty, tip, refund). It does not explicitly distinguish itself from siblings like model_revenue or revenue_dashboard, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical event types imply what qualifies as a revenue event, but there is no statement of when to use this vs. model_revenue (a read tool) or revenue_dashboard, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_skin_contact_outcomeC
Log what happened when someone actually wore or handled a printed part.
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=record_skin_contact_outcome
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Default: "". | |
| outcome | Yes | ||
| exposure | Yes | ||
| material | Yes | ||
| design_id | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and only says the tool requires Kiln Business and that Business adds team review and approval gates. It does not explain whether this logging action itself is review-gated, what record it creates, what happens on failure, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in one useful sentence, but the Business-plan marketing text and upgrade link consume space without helping an agent invoke the tool correctly. It is short, but not 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?
With no annotations, no output schema, and only partial schema descriptions, the definition is incomplete for a write/logging tool. It should clarify gating, required field formats, and expected result, but instead focuses on plan promotion.
Complex tools with many parameters or behaviors need more documentation. 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 five parameters with only 40% description coverage, and the description provides no meaning for material, exposure, outcome, notes, or design_id. Required fields like outcome and exposure are undefined in both the description and schema, so the description does not compensate for the low 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 gives a specific verb and resource: logging an outcome for a printed part that was worn or handled. It is clear what the tool does, though it does not differentiate itself from nearby skin-contact tools such as check_skin_contact_suitability or check_skin_contact_declaration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implies the tool should be used after actual skin contact with a printed part has occurred. It does not state when not to use it, nor does it point to alternatives or prerequisites beyond the Business plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_power_loss_printA
One-call power-loss recovery for the printer that lost power (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recover_power_loss_print
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| probe_xy | No | ||
| failure_id | No | Default: "". | |
| gcode_path | No | Default: "". | |
| output_dir | No | Default: "". | |
| run_actions | No | Default: "". | |
| failed_layer | No | Default: 0. | |
| printer_name | No | Default: "". | |
| material_type | No | Default: "PLA". | |
| bare_confirmed | No | Default: false. | |
| moonraker_config | No | ||
| prime_extrusion_mm | No | Default: 0.0. | |
| probe_clearance_mm | No | Default: 5.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses that the tool may ask the computer to act on the printer (upload, start, pause, resume, set speed), that it first only returns intended actions and reasons, and that run_actions with the actions_digest is required to execute them. The main weakness is the misleading 'One-call' framing against a two-phase confirmation flow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the critical two-phase behavior is stated, but a full sentence of Free/Pro marketing and an upgrade URL occupies space before the safety-relevant action semantics. The description is not excessively long, but it is not as lean 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?
For a 12-parameter tool with no annotations and no output schema, the description covers the core action-confirmation behavior and Pro gating, which is the most important context. It still leaves an agent without guidance on how to identify the failed print, which recovery inputs matter, or what the final execution returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the baseline is 3. The description adds useful meaning for run_actions by explaining the actions_digest confirmation flow, but it does not explain the roles of failure_id, gcode_path, printer_name, probe_xy, or moonraker_config beyond their schema presence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: power-loss recovery for a printer that lost power. It is clear enough to identify the tool's job, but it does not distinguish it from the many sibling recovery tools such as check_power_loss_recovery, start_print_recovery, or auto_recover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'for the printer that lost power' and by the Kiln Pro requirement, but the description gives no explicit when-to-use versus alternatives guidance. With many recovery-related siblings available, an agent must infer why this tool should be chosen over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_texture_detailA
DEPRECATED — renamed keep_painted_detail; call that. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 textures/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=recover_texture_detail
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| invert | No | Default: false. | |
| depth_mm | No | Default: 0.6. | |
| design_id | No | Default: "". | |
| model_path | Yes | ||
| output_path | No | Default: "". | |
| target_edge_mm | No | Default: 1.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the free-tier cap of 3 textures/month, the Pro tier, that an inline orbit/zoom stage is opened on the result, and that oversized meshes are decimated for the stage. It stops short of stating auth requirements or what the returned artifact is beyond the PNG preview floor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The deprecation notice is correctly front-loaded, but the INLINE 3D STAGE paragraph repeats the same fact (inline viewer, orbit/zoom, browser stage link) already stated in the first sentence. Two of the four paragraphs restate stage behavior, which is wasted space on a tool the agent should not call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 deprecated alias, the essential decision — don't use it, use keep_painted_detail — is fully covered, along with tier limits and the stage side effect. However, there is no output schema and the description never says what the tool actually produces or how it differs from the successor beyond the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83% and the description adds no parameter-level information (depth_mm, target_edge_mm, invert, output_path all undocumented in prose). Baseline 3 applies since the schema already describes most parameters, though the semantic meaning of 'invert' and 'target_edge_mm' remains 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's primary message is a deprecation redirect: 'renamed keep_painted_detail; call that.' It never states what the underlying operation does (recovering/keeping painted surface detail), so an agent learns only that this is superseded and that it opens an inline 3D stage. The successor name is concrete, but the tool's own purpose is left implicit in the 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?
It gives an explicit when-not-to-use ('DEPRECATED') plus the exact alternative to call ('keep_painted_detail'), which is a real sibling tool. An agent has no ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_3mf_thumbnailC
Swap the embedded thumbnails in a 3MF for renders of a decorated STL so the Bambu screen shows the decoration (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=regenerate_3mf_thumbnail
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Default: "#FFFFFF". | |
| output_path | No | Default: "". | |
| three_mf_path | Yes | ||
| decorated_stl_path | 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 does usefully disclose the Pro license gate and the observable effect (screen preview shows decoration), but it never says whether the input 3MF is modified in place or written to output_path, whether the operation is destructive, or how it fails on a 3MF with no existing thumbnail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is well-formed and front-loaded, but roughly half the text is upgrade marketing ('Everything in Free, plus calibration that learns your printer...' and the pricing URL). The fact that the tool requires Pro is worth one short clause; the rest does not earn its place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations and no output schema, so the description must cover the mutation semantics and return behavior itself, and it does neither — an agent cannot tell whether a file is produced at output_path, whether success returns a path, or what the thumbnail size/format constraints are. Only the Pro gating 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?
At 50% schema coverage the description needs to compensate, and it does not. It maps loosely to the two required paths (a 3MF, a decorated STL) but adds no format, resolution, or sizing semantics, and the two optional parameters (color, output_path) are never mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource (swap embedded thumbnails in a 3MF) and states the outcome (Bambu screen shows the decoration), which is far more informative than a bare name restatement. It does not, however, distinguish itself from nearby 3MF-writing siblings such as wrap_gcode_as_3mf, compose_multicolor_3mf, or embed_manual_in_3mf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the stated outcome: use it when you want the printer's on-screen preview to reflect the decoration. There is no explicit when-not guidance, no mention of prerequisites beyond the Pro tier, and no routing to any alternative tool for 3MF manipulation.
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: The printer's credential: an API key (OctoPrint, Prusa
Link, a Moonraker or Creality printer with its login turned
on), a Bambu Lab printer's LAN access code, or a Duet's
machine password. For OctoPrint it can be left out: Kiln asks
OctoPrint for a key and the reply (code ``AWAITING_APPROVAL``)
carries ``approve_url``, a page where the person clicks Allow.
Give them that link, then call again with the same arguments;
the request stays open for ten minutes.
serial: A Bambu Lab printer's serial number (``discover_printers``
reads it off the network).
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.
camera_snapshot_url: A camera YOU point at the bed — an http(s)
URL that answers with one image (a webcam's snapshot endpoint,
an IP camera's still URL). Any printer type; used instead of
the printer's own camera by ``printer_snapshot``,
``monitor_print`` and every other frame reader.
camera_stream_url: The same camera as a live feed — MJPEG over
http(s), or an rtsp(s) stream (a frame is cut with ffmpeg).
Either URL alone is enough. A stream URL may embed a
password; it is stored with the printer's other credentials
and never repeated in a reply or a log. Frames from your
camera are what Kiln looks at; they do not switch on the
printer's own failure detection, which runs on the printer
against its own cameras.
When something this kind of printer needs is missing, the refusal
names it and says where the person finds it; ``discover_printers``
says the same for each printer it finds, before anything is asked.
Once the address has answered, Kiln reads the id the machine reports
for itself (a Prusa Link printer's serial, a Duet board's unique id,
the host serial Moonraker reports) and saves it with the printer, so a
later registration under this name at a new address is matched to the
same machine -- or refused as a different one -- by that id rather
than by the address. The reply's ``machine_identity`` carries what
was read; a read that fails is noted in ``warnings`` and never fails
the registration.
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 | Default: true. | |
| baudrate | No | ||
| verify_ssl | No | Default: true. | |
| printer_type | Yes | ||
| printer_model | No | ||
| camera_stream_url | No | ||
| verify_connection | No | Default: true. | |
| camera_snapshot_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden and does so thoroughly: registration is free at all tiers while parallel use is gated at print start, the reply may note a concurrency limit, api_key may be omitted for OctoPrint with an approve_url flow, secrets in camera_stream_url are stored and never echoed, and machine identity reads that fail surface in warnings without failing the call. This is richer than most annotation sets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the Args block is efficient, but several paragraphs (the tier/pricing recital, the aside about what Kiln's camera does not enable) are commercial context rather than invocation guidance and inflate the text well beyond what an agent needs to call it correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations and no output schema, the description still covers prerequisites (credentials, USB port paths), the asynchronous approval loop, persistence semantics, identity reconciliation on re-registration, and the reply fields machine_identity and warnings. Nothing material is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% (mostly bare titles), so the description must compensate and it does: it enumerates the eight printer_type values plus the 'serial' alias for usb, explains host as a port path for USB printers, differentiates the four credential flavors for api_key, and clarifies baudrate, verify_ssl's Bambu pin-mode mapping, persist, and the two camera URLs. Every non-obvious parameter gains 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?
Opens with a specific verb and resource: registering a new printer in the fleet. It also implicitly contrasts with discover_printers (which reads machines off the network) and names the downstream tools that target a registered printer, so an agent can place it in the workflow without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete conditions: call this to add a machine, call again with the same arguments after the OctoPrint AWAITING_APPROVAL hop (ten-minute window), and use discover_printers to learn what a detected printer still needs. It lacks explicit 'do not use this if already registered under another name' style exclusions, so it falls short of a full 5.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and usefully discloses that the endpoint receives POST requests, that omitting events subscribes to all events, and that secret enables HMAC-SHA256 signing. It does not mention authentication requirements, idempotency, duplicate handling, or side effects beyond registration.
Agents need to know what a tool does to the world before calling 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 action, followed by structured Args and return details, then sibling pointers. 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?
The description covers the operation, all parameters, the return value, and related sibling tools, which is substantial given there is no output schema. It is slightly incomplete for a mutation tool with no annotations because it omits auth requirements and duplicate-registration 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 only 25%, but the description compensates fully by documenting all four parameters: URL purpose and HTTPS requirement, optional event types with an example and default-all behavior, optional secret semantics, and description label 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 states a specific verb and resource: register a webhook endpoint to receive Kiln event notifications. It clearly distinguishes this from sibling tools by naming list_webhooks and delete_webhook as related lifecycle 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 gives clear context by pointing to list_webhooks for viewing endpoints and delete_webhook for removal. However, it does not explicitly state when not to register a webhook, such as when an endpoint already exists or when duplicate registrations are disallowed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_printer_lockB
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 | Default: "agent". | |
| printer_name | 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 this is a release/mutation and that the holder must match the acquire call, but it omits important behavior such as what happens if the lock does not exist, what happens on a holder mismatch, permission requirements, and 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?
The description is short and front-loads the core action. The Args section is minimal and the parameter notes are terse, but there is no wasted 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?
For a lock-mutating tool with no annotations and no output schema, the description is too thin. It gives the basic purpose and one precondition, but does not cover failure modes, permission/auth requirements, idempotency, or the relationship to acquire_printer_lock and hand_back_printer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%. The description names both parameters and adds a meaningful constraint for holder ('must match acquire'), which goes beyond the schema. However, printer_name is described only as 'Printer to unlock' and the holder default of 'agent' is not explained, so parameter semantics remain incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Release an exclusive lock on a printer.' That clearly distinguishes the operation from acquiring a lock. However, it does not explicitly differentiate the tool from nearby siblings such as hand_back_printer, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that holder 'must match acquire' implies this tool is used after acquire_printer_lock, giving some lifecycle context. But there is no explicit guidance on when to use this tool versus alternatives, nor any warning about when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_approval_gateB
Remove an approval gate. Merges on the target branch return to unprotected. Business+ tier.
Kiln Business would open the change for team review, apply your approval gates, and record who signed off. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=remove_approval_gate
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | Yes | ||
| branch_name | Yes | ||
| artifact_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the safety profile, and it does disclose the key effect: merges become unprotected. However it omits whether removal is reversible, what permissions beyond tier are needed, and whether existing sign-off records are destroyed. The upsell paragraph adds words without adding 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 behavioral content is correctly front-loaded in the first two sentences, but the tier requirement is stated twice ('Business+ tier' and 'Requires Kiln Business') and a marketing paragraph plus upgrade URL pad the definition without aiding invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a mutation tool with no annotations, no output schema, and undocumented parameters. The description conveys the effect but not the prerequisites of state, the legal artifact types, or the failure modes an agent needs before calling 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 coverage is 0% for all three required parameters. The description only obliquely gestures at branch_name via 'the target branch' and says nothing about artifact_type (what values are legal) or artifact_id, so most of the parameter surface remains unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource ('Remove an approval gate') and the second states the concrete consequence: merges on the target branch return to unprotected. That distinguishes it from set_approval_gate and list_approval_gates, though the description never names those siblings 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?
A prerequisite is given ('Requires Kiln Business'), which is genuinely actionable, but there is no guidance on when to remove a gate versus listing or re-setting one, and no note on whether the gate must exist first or on what happens to in-flight merges.
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 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 | Default: "". | |
| keep_largest | No | Default: true. | |
| min_triangle_pct | No | Default: 1.0. |
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 and does disclose the most important trait: output_path defaults to overwriting the input file, which is a destructive in-place edit an agent must know about. It also states the algorithm (connected-component detection plus size threshold) and that it returns removal statistics. It stops short of saying whether the original is recoverable or what happens if no small components 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 functional portion is tight and front-loaded, but the trailing INLINE 3D STAGE paragraph is long, promotional in tone ('the PNG preview is the floor, not the whole experience'), and mostly tangential to calling the tool correctly. It dilutes an otherwise efficient definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 does enough: it explains the mutation, the default overwrite destination, the two size-selection modes, and that statistics come back. Missing are failure conditions (non-manifold input, single-component meshes) and confirmation of whether removal is logged or reversible.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% but the schema descriptions are only bare defaults, so the description has room to add value — and it does define min_triangle_pct's role and the fallback interaction with keep_largest=False. However file_path and output_path get only a one-line restatement, and the relationship between the two threshold modes is left partly implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — it identifies connected components in a mesh and deletes the small ones — and gives an example (support pillars, internal fragments). It is clear what the tool does, but it never contrasts itself with near-neighbours such as split_mesh_by_component, repair_mesh, or simplify_mesh_model, so an agent must infer the 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?
It supplies a scenario (downloaded and marketplace models with floating geometry), which implies when to reach for it, but there is no explicit when-not and no named alternative. For a mesh-cleanup family with many overlapping siblings, that leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_spoolA
Remove a filament spool from inventory.
When the person says a spool is used up, finished or gone, remove it
here (``list_spools`` gives its id) so Kiln stops treating it as
filament they have. If they have more or less left than Kiln shows,
correct the figure with ``add_spool(spool_id=..., remaining_grams=...)``
instead. A used-up spool is not a reason to suggest buying filament:
say nothing about that unless the person asks.
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 carries the full burden. It does disclose the state effect ("so Kiln stops treating it as filament they have"), which is genuine behavioral context, but it never says whether the removal is reversible, whether consumption history is retained, or what permissions/side effects apply to a destructive inventory mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action and routing rule are front-loaded in the opening sentences. The trailing guidance about not suggesting filament purchases is useful agent policy but is tangential to tool invocation and slightly dilutes a compact definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation with no output schema and no annotations, the description covers purpose, trigger, alternative, and the resulting state change. The remaining gap is the reversibility/undo story, which an agent may genuinely need before deleting an inventory record.
Complex tools with many parameters or behaviors need more documentation. Simple 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 carries only a bare 'Spool Id' title, so the description's line "The spool's unique identifier" plus the pointer to list_spools as the id source materially compensates. It stops short of stating format or whether archival ids remain valid, keeping it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Remove a filament spool from inventory") and immediately contrasts it with the two siblings an agent might confuse it with: list_spools (for the id) and add_spool with remaining_grams (for corrections). An agent can pick the right tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use trigger ("When the person says a spool is used up, finished or gone") plus an explicit when-not-to and the named alternative with its parameter form. It even resolves a downstream behavioral decision (do not pitch filament purchases).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_team_memberB
Remove a tenant from a team. Their personal org membership is unaffected; only team-targeted scope grants stop applying to them.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=remove_team_member
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | ||
| tenant_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 usefully discloses what changes (team-targeted scope grants stop applying) and what does not (personal org membership), but it omits permissions, reversibility, required role, and error behavior for a mutation 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 core action and scope caveat are front-loaded, but the description is padded with promotional copy about Kiln Business and an upgrade link. The plan requirement is relevant, but the marketing sentence does not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations or output schema, the description covers the intended effect and plan gating, but it lacks role/auth requirements, parameter semantics, reversibility, and failure behavior. It is minimally usable 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%, and the description never explains team_id or tenant_id beyond the nouns 'team' and 'tenant'. It does not state where these identifiers come from, their format, or any constraints, so it fails to compensate for the undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Remove a tenant from a team.' It also clarifies an important scope distinction, that personal org membership is unaffected, but it does not explicitly differentiate this tool from siblings such as manage_team_member, add_team_member, or revoke_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?
Usage is implied by the description of what stops applying, but there is no explicit guidance on when to choose this tool versus alternatives like manage_team_member or revoke_scope. No when-not conditions or prerequisites are stated beyond the plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_decoration_presetC
Rename a decoration preset — update the display name across every saved version without touching content or history.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rename_decoration_preset
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| preset_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the operation affects the display name across every saved version while leaving content and history untouched, and it states that Kiln Pro is required. However, it does not describe permissions, reversibility, failure behavior, or whether other names or references are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in one clear sentence. However, the following sentences are largely promotional tier/upgrade text and an upgrade URL, which dilute conciseness for an invocation-focused definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 two-parameter mutation with no annotations, no output schema, and 0% schema description coverage. The description covers purpose and change scope but leaves parameter semantics, expected return behavior, and operational constraints undocumented, so it is not complete enough for reliable 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 should compensate for undocumented parameters. It implies new_name via "display name" but does not explain preset_id format, constraints, or validation rules for either 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 a specific verb and resource: "Rename a decoration preset." It also clarifies scope by saying the display name is updated across every saved version without touching content or history. It does not explicitly differentiate itself from siblings such as rename_feature or rename_design, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus similar rename tools or when not to use it. The intended usage is implied by the rename action, but there are no alternatives, exclusions, or contextual triggers beyond the tier requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_designA
Rename a design — change its id and display name across every version while keeping branches, outcomes, and parent_version chains intact.
| Name | Required | Description | Default |
|---|---|---|---|
| new_design_id | Yes | ||
| old_design_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 does add real value by stating that branches, outcomes and parent_version chains survive the rename. It omits the traits that matter most for an id change: irreversibility, whether the old id breaks existing references, and required authorization. Also slightly ambiguous about how 'display name' relates to the two id 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?
One sentence, front-loaded with the action, followed by the invariance guarantees. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter rename with no annotations or output schema, the crucial unknown is what survives the operation, and the description answers that directly (branches, outcomes, parent_version chains intact). Remaining gaps—return value, permissions—are minor for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple 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 neither parameter has a description, but old_design_id/new_design_id are largely self-explanatory and the description clarifies the direction of the change (old → new) and that all versions are rewritten. It adds no format constraints, validation rules, or explanation of the 'display name' aspect that has no corresponding 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?
States a specific verb (rename) and resource (design) plus the blast radius: both the id and display name change across every version. That implicitly separates it from rename_design_branch, rename_feature and rename_decoration_preset, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when this should be used versus alternatives such as rename_design_branch or archiving/recreating, and gives no preconditions (lock state, permissions, whether other users' references must be migrated first). Usage must be inferred entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_design_branchC
Rename a branch. New name must be unique per design (excluding retired branches).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rename_design_branch
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| branch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context. It usefully discloses that the new name must be unique per design and that retired branches are excluded, but it omits permissions, side effects, and whether renaming affects references.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful description is front-loaded in one sentence, but it is followed by unrelated plan/upsell marketing content that does not help an agent invoke the tool. That promotional text is waste and degrades the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations or output schema, the description is incomplete: it lacks branch_id semantics, permissions, and behavioral effects. The trailing sales pitch further distracts from what an 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 coverage is 0%, so the description must explain both parameters. It adds a uniqueness rule for new_name but says nothing about branch_id, leaving half the parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: renaming a branch. It does not explicitly say 'design branch' or distinguish this from sibling tools such as rename_feature, but the uniqueness constraint tied to a design adds useful 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?
It gives a uniqueness condition but no guidance on when to use this tool versus siblings like rename_design or rename_feature. No prerequisites or exclusions beyond retired branches are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_featureC
Rename a mechanical feature — update the display name across every saved version without touching content or history.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rename_feature
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| feature_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose useful effects: the display name changes across every saved version, and content/history are untouched, plus a Kiln Pro requirement. However, it omits permissions, reversibility, conflict behavior, and return semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the rest is promotional plan text and an upgrade URL that consumes space without helping an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter rename tool, the description covers the core action and key side effect. But with no annotations and 0% schema description coverage, it should do more to explain parameter expectations and call 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 must compensate. It implies that new_name is a display name and feature_id identifies the feature, but it gives no format, validation, or constraint details for either 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 gives a specific verb and resource: rename a mechanical feature and update its display name. It also clarifies the scope across saved versions, but it does not explicitly differentiate itself from sibling rename tools such as rename_design or rename_design_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended action is clear from the first sentence, but there is no explicit guidance on when to use this tool versus alternatives. The remaining text is plan/upsell messaging rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_design_meshC
Force a render of a single mesh through the cache.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=render_design_mesh
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Default: "". | |
| angles | No | ||
| mesh_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 hints at cache behavior with 'through the cache' and mentions 'Requires Kiln Pro,' but it does not disclose side effects, whether the render is synchronous, what happens to existing cached results, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful first sentence is front-loaded, but it is followed by unrelated subscription marketing and an upgrade URL. Those lines do not help select or invoke the tool and make the description unnecessarily 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 tool has three parameters, only partial schema coverage, no annotations, and no output schema. The description omits parameter meanings, return behavior, and sibling alternatives, so it is not complete enough for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description adds no meaning for any parameter. The required mesh_path and the angles parameter are undocumented, and 'color' is only given a default value in the schema. The description does not compensate for the low 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 first sentence gives a specific verb and resource: 'Force a render of a single mesh through the cache.' That is clear enough to distinguish rendering from unrelated sibling tools. However, it does not differentiate this from sibling render/visualization tools such as render_model_preview or visualize_model, and the rest of the description is unrelated plan marketing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 like render_model_preview, visualize_model, or preview_decorated_mesh. The only context is the word 'Force' and the Kiln Pro entitlement note, which does not tell an agent when this specific render path is appropriate.
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.
INSPECTION-ONLY UNLESS THE STAGE DREW IT: the result's ``renderer`` says which look these pixels are. ``stage`` (the stage photographed) and ``stage_paint`` (the stage's look painted) are accepted by ``issue_preview_token(door="png")`` for print sign-off; a raw ``openscad`` render is not — it has no plate and none of the stage's lighting, and a person once approved the wrong colours from one. Use it to inspect, and sign off from the stage, the viewer link, or a stage still.
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 | Default: "". | |
| width | No | Default: 800. | |
| height | No | Default: 600. | |
| file_path | 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 well: it discloses the deprecation status, that the output carries a `renderer` field identifying which look produced the pixels, which renderers are valid for print sign-off, and an anecdote about a wrong-colour approval that explains the risk. It does not say whether a file is written to disk, where the image goes, or whether the call is expensive, so it stops short of full behavioral coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded well with the deprecation and alternative, but it says the same thing twice ('use visualize_model instead' then a whole paragraph explaining it is a thin wrapper around visualize_model). The sign-off paragraph is dense and packed with internal jargon 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 4-param rendering tool with no output schema and no annotations, the description covers the critical decision points: deprecation, alternative, provenance of the render, and supported file types. Missing only the practical detail of what the tool returns (image path/URL vs inline bytes) and whether it persists artifacts.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75% (75% of params have descriptions), and the description adds real value on the one gap: file_path accepts `.stl`, `.3mf`, `.obj`, or `.scad`. It also gives a hex example for color, but width/height/color simply restate defaults the schema already declares.
Input schemas describe structure but not intent. Descriptions should explain 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 ('renders only 1 angle' of a model preview) and immediately distinguishes itself from the sibling visualize_model, which renders 6 angles. It even names itself a 'thin wrapper around visualize_model with a single isometric angle', so the agent knows exactly what it is and what it isn't.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 routing: 'DEPRECATED — use visualize_model instead', plus a concrete when-not ('a raw openscad render is not [valid for sign-off] — it has no plate and none of the stage's lighting'). It names the acceptable alternatives for sign-off (stage, viewer link, stage still, issue_preview_token with door="png"), giving explicit use/exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reopen_comment_threadC
Reopen a previously resolved thread.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=reopen_comment_thread
| Name | Required | Description | Default |
|---|---|---|---|
| thread_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 behavioral burden. It identifies a state-changing action on a resolved thread but does not mention permissions, side effects, reversibility, or what reopening changes. The Kiln Pro upsell is irrelevant to 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 useful purpose statement is front-loaded, but it is followed by three lines of unrelated subscription marketing and an upgrade URL. Most of the description does not earn its place for an agent trying to invoke this 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 simple one-parameter mutation tool with no annotations and no output schema, the description should at least cover usage conditions and thread_id context. It provides only the basic action and then irrelevant promotional 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 description coverage is 0% and the description never explains the required thread_id parameter, such as where to obtain it or its expected format. The parameter name is mostly self-explanatory, but the description adds no semantic 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 first sentence gives a specific verb and resource: 'Reopen a previously resolved thread.' It also implies the counterpart to resolve_comment_thread, so an agent can identify the basic action. The remaining text is unrelated marketing copy, which weakens clarity but does not obscure the core 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 phrase 'previously resolved thread' implies the condition for use, but there is no explicit guidance on when to prefer this over reply_to_comment, resolve_comment_thread, or get_comment_thread. The marketing text adds no actionable usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repair_guideARead-only
Walk through the printer maker's own repair guide, one step per call.
The guide is the maker's published page for THIS model, reproduced in the
maker's order: their power-off warning first, their numbered steps in
their words, their picture for each step (as a URL, served from their
site with attribution -- Kiln never copies it), and their own check at
the end where the page has one. Kiln adds words only where the picture
cannot say it. Where the maker states them, the header carries the
tools, the interval ("every 10-15 spools") and the parts.
**Run it in steps, with the person at the machine.** ``plan_only=True``
returns the header (maker, page title and URL, the maker's own "also
applies to" sentence, tools, interval, parts) plus step 0 and the step
titles. ``step=0`` is ALWAYS the maker's power-off warning, verbatim.
``step=N`` returns only step N and names step N+1. Every step from 1 on
requires ``power_off_confirmed=True`` -- a PERSON's statement that the
printer is off and unplugged; without it the call is refused with
``POWER_OFF_REQUIRED`` and the warning itself. Never set it on a
person's behalf. A person who is already partway in (the screw is out)
skips ahead with ``step``; Kiln never assumes where they are.
Where Kiln has no guide for the topic it says so: the maker's own
maintenance index for this model where Kiln knows it (``maker_index_url``),
otherwise "your maker publishes no guide Kiln can step through". No
generic procedure is ever presented as the maker's.
Args:
printer_id: Printer model identifier (e.g. ``bambu_a1_mini``). Omit
to use the declared ``printer_model`` of ``printer_name`` (or the
default printer).
topic: What to repair -- ``cutter``, ``nozzle``, ``hotend``,
``ptfe_tube``, ``extruder_gears``, ``belts``, ``bed_level``,
``lubrication``, ``firmware_recovery``, ``filament_sensor``. A
fault code written here is read as one.
hms_code: The code on the printer's screen (``"1200-8001"``, any
separators); where it maps to a guide, that guide is chosen and
the answer says which step to start at.
step: Which step to serve (0 = the power-off warning). Ignored with
``plan_only``.
plan_only: Return the header and step titles; serve no step.
power_off_confirmed: A PERSON has powered the printer off and
unplugged it. Required for every ``step >= 1``.
printer_name: Which registered printer's declared model to use when
``printer_id`` is omitted.
guide: A guide's slug, from a ``choices`` answer. When a topic
matches more than one of the maker's guides for this model (one
Kiln printer id can cover two machines; a maker often has two
pages for one job) the answer lists them and nothing is picked
for the person -- ask, then pass the chosen slug here.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | Default: 0. | |
| guide | No | Default: "". | |
| topic | No | Default: "". | |
| hms_code | No | Default: "". | |
| plan_only | No | Default: false. | |
| printer_id | No | Default: "". | |
| printer_name | No | Default: "". | |
| power_off_confirmed | No | Default: false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and safety, but the description adds crucial behavioral detail beyond them: refusal with POWER_OFF_REQUIRED, the 'never set it on a person's behalf' rule, verbatim maker ordering, and the no-guide fallback with maker_index_url. This is rich context an agent cannot get from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a run-in-steps block, then per-arg detail. Well-organized and nearly every sentence earns its place, though the prose is dense and could be trimmed slightly without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param, multi-step, safety-gated tool with an output schema and populated annotations, the description covers the safety contract, refusal modes, ordering guarantees, and no-guide fallback. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the schema descriptions are bare ('Default: 0', etc.); the prose compensates heavily by explaining topic values, hms_code format and mapping behavior, step semantics, lantern for plan_only, and the multi-guide disambiguation via guide slug. Adds substantial meaning over 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?
States a specific verb+resource+scope ('Walk through the printer maker's own repair guide, one step per call') and clearly distinguishes itself from adjacent diagnostics/guide siblings. An agent immediately understands this is a stepwise maker-guide walker, not a generic troubleshoot 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?
Explicit when/when-not: use plan_only for the header, step=0 is always the power-off warning, step>=1 requires power_off_confirmed, partway-in users skip ahead with step, and ambiguous topics must surface a choices list before passing guide. The workflow and its alternatives are fully spelled out.
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 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 | Default: false. | |
| output_path | No | Default: "". | |
| weld_tolerance | No | Default: "". |
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 thoroughly: default weld radius and auto-scaling, what each pass mutates, that hole closing rolls back on volume-collapsing closures, what is written to 'unrepaired', and the side effect of opening an interactive 3D stage with auto-decimation. These are exactly the behavioral facts an agent needs before invoking a 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?
Front-loaded with the purpose and defect list, and each paragraph (welding rationale, deep pass, refusal semantics, result fields, stage side effect) carries distinct information. It is somewhat long and the inline-stage paragraph could be tightened, but little is genuinely 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?
No output schema and no annotations, yet the description documents the return dict's key fields (is_watertight, boundary/pinch counts, enclosed_volume_mm3, unrepaired), the rollback behavior, and the stage side effect. An agent has everything needed to call it 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 only 75% and the schema descriptions are bare defaults, but the prose covers all four parameters in depth: weld_tolerance's unit, auto rule, and '0' disable sentinel; output_path's overwrite default; close_holes' cost/benefit. 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?
Opens with a specific verb and resource plus enumerated defect classes ('rounding-noise seams, degenerates, holes'), so the agent knows exactly what it fixes. However, it never distinguishes itself from close siblings like repair_mesh_advanced or validate_and_prepare_mesh, leaving the agent to guess which repair tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the agent when to reach for the deep pass ('Pass close_holes=True ... use it when the mesh is not watertight') and scopes out unreachable defects (pinched edges 'cannot be sewn; they must be fixed where the geometry was made'). It lacks an explicit comparison against alternative repair/validation siblings, so not a 5.
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 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 | Default: true. | |
| output_path | No | Default: "". | |
| weld_tolerance | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does it well: deprecation/removal after one release, behavior identical to the original, output_path defaults to overwriting the input (a data-loss nuance), auto-decimation of oversized meshes, and the interactive 3D stage side effect. It stops short of covering validation failures or file-type constraints beyond STL, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical deprecation message is front-loaded in sentence one, and subsequent content is ordered sensibly (alternative, params, returns, stage). It loses a point for docstring artifacts (``...``, RST :param:/:returns: markup) that leak formatting noise into agent-facing 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?
With no annotations and no output schema, the description still covers side effects (input overwrite, stage panel, decimation), the return shape ('Dict with repair statistics'), and all four parameters. Missing only error/failure behavior, which is minor for a deprecated passthrough.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75%, but the description adds genuine meaning the schema lacks: weld_tolerance 'Empty = auto; "0" disables welding' and output_path 'Defaults to overwriting the input' — the schema only shows bare defaults. file_path is also constrained to STL. It adds real semantics rather than restating 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 first line states exactly what the tool is — a deprecated alias for repair_mesh(close_holes=True) — and names the canonical sibling explicitly. An agent can distinguish it from repair_mesh and from mesh-repair siblings like diagnose_mesh or analyze_non_manifold_edges without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use ("kept for one release so existing callers keep working") and an explicit when-not/alternative ("new callers should use repair_mesh with close_holes=True"). This is the rare case where the routing instruction is unambiguous and tied to a deprecation lifetime.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_commentC
Reply to an existing comment (joins its thread).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=reply_to_comment
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| author | No | ||
| parent_comment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: no auth/permission requirements, no visibility or notification behavior, no error behavior for an invalid parent_comment_id. 'Joins its thread' is the only real behavioral fact, and the injected marketing text adds confusion rather than 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?
Only the first sentence earns its place. The following three lines are off-topic advertising for a paid tier with a tracking URL, wasting most of the description's length and risking misleading the agent into unrelated 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?
For a three-parameter write tool with no annotations, no output schema, and 0% schema description coverage, the description should explain the parent/thread semantics, the author field, and required permissions. It supplies only the parent-reply relationship, leaving the agent under-informed about a mutating 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% across three parameters. The description only loosely implies parent_comment_id ('an existing comment') and says nothing about body or the optional author parameter — notably whether 'author' spoofs the reply identity, which an agent must know before calling. It does not compensate 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 opening sentence names a specific verb and resource ('Reply to an existing comment') and adds scoping detail ('joins its thread'), which distinguishes it from siblings like get_comment_thread, resolve_comment_thread, and add_mesh_comment. It does not name those siblings explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not guidance: nothing says when to reply versus opening a new thread, resolving a thread, or adding a mesh comment. The remaining three lines are unrelated promotional copy about Kiln Pro features and pricing, which provide no selection guidance whatsoever.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_issueB
Tell the Kiln team something — a bug, an idea, printer details, or a question.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| category | No | Default: "other". | |
| contact_ok | No | Default: false. | |
| description | 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 behavioral burden. It says who receives the report but not what happens after submission, whether a ticket is created, who can see it, how contact_ok affects privacy, or whether a response 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?
A single front-loaded sentence with no filler. It efficiently communicates the tool's recipient and broad 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 no annotations, no output schema, four parameters including a nested context object, and only half the schema documented, the description is too thin. It should explain submission behavior, privacy/contact implications, and parameter expectations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%; only category and contact_ok have short default descriptions, while context and description are undocumented beyond their titles. The description's examples hint at possible categories but do not explain the nested context object, the meaning of contact_ok, or what a good required description should contain.
Input schemas describe structure but not intent. Descriptions should explain 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 action and recipient: telling the Kiln team about bugs, ideas, printer details, or questions. This distinguishes it from most operational sibling tools, though it does not explicitly contrast with troubleshooting or diagnostic 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 lists concrete use cases (bug, idea, printer details, question), implying when to use it. However, it gives no when-not guidance or alternatives, which matters in a large sibling list containing many troubleshooting and support tools.
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 — the slice is set for it.
One-shot convenience tool: reslices the model for the new material
(its temperatures, melt rate and cooling, from the same resolver every
slice uses -- see ``build_material_overrides``), merges any extra
overrides you provide, runs a safety check, uploads to the printer, and
starts the print. The file is labelled and weighed as the new material.
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 slot A2 (tray id 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 | ||
| preview_token | No | ||
| extra_overrides | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses the full action sequence, material-specific reslicing, override merging, safety checking, upload, print start, file relabelling/weighing, and the local PrusaSlicer/OrcaSlicer requirement. It stops short of explaining failure behavior, permissions, or reversibility for a print-starting 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 purpose is front-loaded, and the example plus Args section are useful for an 8-parameter tool. There is slight repetition between the opening line and the reslicing explanation, but overall the text remains readable and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 print-starting tool with no annotations and no output schema, the description is substantially complete: it covers the workflow, external dependency, and most parameter meanings. It leaves minor gaps around the undocumented preview_token and what a caller should expect on safety-check or print-start failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section is important, and it explains 7 of 8 parameters with useful examples such as material IDs, printer defaults, JSON override syntax, and AMS slot mapping. The notable gap is preview_token, which appears in the schema but is not documented in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reprinting a model with a different material, including that it reslices, safety-checks, uploads, and starts the print. It is clear what the tool does, but it does not explicitly distinguish itself from close siblings such as smart_reprint, run_reslice_and_print, 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?
It gives a clear use case: reprinting an existing model in a different material, with PLA to PETG and PLA to TPU examples. It does not name alternatives or describe when not to use this tool versus the many sibling reprint/slicing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_calibration_test_printB
Return a pointer to the user's slicer's native calibration wizard.
Kiln Pro would keep a calibration profile measured from this printer's real prints and apply its offsets when a design needs exact dimensions. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=request_calibration_test_print
| Name | Required | Description | Default |
|---|---|---|---|
| material | Yes | ||
| printer_id | Yes | ||
| test_piece_kind | No | Default: "slicer_native". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does add real behavioral context: the call returns a pointer rather than performing calibration, and it is gated behind a Kiln Pro entitlement. It does not say what the pointer looks like (URL, token, expiry), what happens when the user is not Pro, or whether any state changes 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 core sentence is well front-loaded. The second and third sentences are marketing/entitlement framing, and the upgrade URL with agent-tracking query params is pure upsell that does not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no annotations, two undocumented required parameters, and no statement of what the returned pointer is or how to consume it. For a 3-parameter tool with this much structured-data silence, the description leaves significant gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple 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 33%: only test_piece_kind has any documentation (default 'slicer_native'), while printer_id and material are bare strings with no enum or format. The description supplies zero parameter meaning, so it fails to compensate for the coverage gap on two required params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: returning a pointer to the slicer's native calibration wizard, which is distinct from actually running a calibration. However, it never names or contrasts itself with the obvious siblings (run_calibrate, calibrate_direct), so the agent must infer the difference. The second sentence muddies the purpose by describing what Kiln Pro 'would' do rather than what this call returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires Kiln Pro' plus 'when a design needs exact dimensions' implies a use condition and a prerequisite. But there are no explicit when-to-use/when-not rules and no mention of the many calibration siblings (run_calibrate, calibrate_direct, assess_calibration_status), so the agent has no guidance on choosing among them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
require_recent_authC
Step-up check: did the person behind this call sign in recently?
Enterprise adds SSO, RBAC, and audit export. Requires Kiln Enterprise. Upgrade: https://kiln3d.com/pricing?src=agent&tool=require_recent_auth
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Default: "github". | |
| tenant_id | No | ||
| max_age_minutes | No | Default: 15. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses that Kiln Enterprise is required, but it does not explain the result semantics, what happens if auth is stale, whether it is read-only, or any failure 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 core check is front-loaded in one sentence, but the following enterprise/upgrade marketing text adds promotional clutter beyond what an agent needs to invoke 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?
For an authentication gate with three parameters, no annotations, and no output schema, the description is incomplete. It omits return behavior, failure conditions, and how tenant/provider/max-age affect the 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 description never mentions provider, tenant_id, or max_age_minutes. Schema coverage is only 67%, and tenant_id has no schema description, so the description should compensate 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 states a specific check: whether the person behind the call signed in recently, which is clearer than a bare name restatement. It does not explicitly distinguish this from sibling auth tools such as sso_status or kiln_signin, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the tool as a "step-up check" but gives no explicit guidance on when to call it, when not to call it, or which sibling auth tool to use instead. The enterprise requirement is a prerequisite, not usage guidance.
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 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 at all, the description carries the full burden and does substantial work: it discloses that the file is modified in-place, that uniform and per-axis modes are mutually exclusive, that max_dimension_mm scales down only, that omitted axes default to 1.0, and that the 3D stage decimates oversized meshes. It stops short of stating whether the original is recoverable or what the return payload contains.
Agents need to know what a tool does to the 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 purpose sentence, then bold-headed mode sections with bulleted options, then a compact Args block — every part is scannable. The closing stage paragraph is longer than its informational value warrants and leans promotional, slightly diluting the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the mode-selection rules, the in-place mutation risk, and the side effect of opening the 3D stage. The only real gap is what a successful call returns or how to verify the resulting dimensions.
Complex tools with many parameters or behaviors need more documentation. Simple 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 entirely — and it does, defining every one of the 7 parameters, including units (mm), the multiplier semantics of scale_factor (2.0 = double), and the default behavior for unset axes. The uniform-vs-per-axis grouping rule is exactly the kind of cross-parameter constraint the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rescale an STL model') plus the goal ('to meet dimensional targets'). The scoping constraints distinguish it from generic mesh-scale siblings like scale_mesh_to_fit without needing either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete triggering condition: generated model is the wrong size for the build volume or doesn't match desired dimensions. It does not name or exclude the nearest alternative (scale_mesh_to_fit / split_mesh_to_fit), so the agent must infer which tool to prefer, but the use context is clear.
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. A brim too wide for the
room beside the part is refused (``BRIM_PAST_BED``) with the width that
fits; a skirt past the edge of the bed is dropped and said in ``bed_fit``.
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: Slicer keys to override, as a JSON object or its
string form (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.
printer_name: Registered printer this reslice is FOR. Omit
for the default printer. Naming a second machine
resolves its profile, its bed and its temperature
ceilings instead of the default printer's.
material: Filament material for this slice (``"PLA"``,
``"PETG"``, …). It sets the temperatures, melt rate and
cooling (``build_material_overrides`` shows them) and its
density weighs the print; any of them you also pass in
``overrides`` stays yours. Omitted, the loaded spool
answers, then PLA — the response's ``filament`` block
says which.
placement: Where the part goes when the plate still holds the
last print: ``[x, y]`` in mm (the part's footprint
origin), a named region (``"front-left"``, ``"centre"``,
``"back-right"``, …), or ``"keep"``. Omitted, an
occupied plate refuses and lists the spots that would
work; a clear plate reslices as before. The response's
``placement`` block is the clearance verdict, checked
again on the sliced file. The clearance verdict is free;
placing and starting a second print on an occupied plate
is a kiln-pro feature (https://kiln3d.com/pricing).INLINE 3D STAGE: on success this tool 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 | ||
| overrides | No | ||
| placement | No | ||
| input_path | Yes | ||
| output_dir | No | ||
| printer_id | No | ||
| auto_center | No | Default: true. | |
| slicer_path | No | ||
| printer_name | 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 and does so richly: it declares the PrusaSlicer/OrcaSlicer local install requirement, the BRIM_PAST_BED refusal with fitting width, skirt dropping reported in bed_fit, occupied-plate refusal and its kiln-pro gating, material default resolution (spool then PLA), and the inline 3D stage behavior. That is far more than a bare mutation statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the override key catalogue are front-loaded, and the Args block is informative, but the prose is dense and occasionally awkward (e.g. "A brim too wide for the room beside the part is refused"), and the inline-stage paragraph runs long. Most sentences earn their place, but trimming would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with an output schema, this is complete: prerequisites, per-parameter behavior, edge-case refusals, tier gating, and even named response blocks (bed_fit, filament, placement) are covered. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description must compensate, and it documents 8 of 9 parameters with real semantics: material sets temperatures/melt rate/cooling and how overrides interact, placement accepts [x,y]/named regions/"keep" with a clearance verdict, printer_name resolves a second machine's profile and ceilings, and overrides enumerates concrete keys with an example. This adds substantial meaning beyond the bare 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 opening line gives a specific verb (reslice) and resource (a 3D model) plus the mechanism (custom slicer parameter overrides), which cleanly separates it from siblings like slice_model, slice_and_estimate, and run_reslice_and_print. An agent knows immediately this is the parameter-override reslicing 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?
It states a concrete trigger ("when a print failed due to adhesion, wobble, or quality issues") and names a companion tool (rotate_model) for orientation changes, plus find_slicer for the prerequisite. It does not explicitly contrast against run_reslice_and_print or slice_and_print, so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_comment_threadC
Mark a whole thread (root + replies) as resolved.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=resolve_comment_thread
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| resolved_by | 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, and it discloses only that the operation covers root plus replies. It says nothing about permissions, whether resolution is idempotent or reversible, who may resolve, or what happens to already-resolved threads. The 'Requires Kiln Pro' marketing line is ambiguous and could be misread as an entitlement gate on this operation itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is a single well-formed first sentence; the rest is unrelated advertising about calibration, textures, and pricing links. The signal is front-loaded but roughly two thirds of the description is waste that dilutes the operational instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation with no annotations and no output schema, the description explains only the state change and omits permissions, idempotency, error behaviour, and both parameter meanings. It is not complete enough for an agent to call confidently without 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?
Schema description coverage is 0% across two parameters, so the description must compensate and does not. It never mentions thread_id or resolved_by, and leaves entirely unexplained whether resolved_by defaults to the authenticated user or must be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource and even clarifies scope: the whole thread, root plus replies, is marked resolved. It does not distinguish itself from the obvious sibling reopen_comment_thread, and the remaining two thirds of the text describe an unrelated subscription tier rather than the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus reopen_comment_thread, reply_to_comment, or get_comment_thread, and no prerequisites are given. The commercial copy about Kiln Pro tiers provides no selection guidance and actively distracts from it.
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 | Default: "". | |
| material_or_brand | 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 well: it states brand profiles return manufacturer-exact specs while generic materials return conservative defaults, and that printer_id adds compatibility checks producing warnings such as hardened-nozzle or enclosure requirements. It omits failure modes (unknown material, lookup miss), keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core behavior is front-loaded in the first paragraph and sequencing follows, which is well ordered. The param docs partly restate earlier prose, so there is some redundancy that keeps it below 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?
No output schema exists, and the description does explain the shape of what comes back (specs + warnings) plus downstream usage. It is nearly complete for a 2-param resolver, though a fuller account of the returned profile fields or error conditions would close the 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 50% and material_or_brand has no schema description, but the description compensates by explaining accepted forms with examples ("PLA", "TPU", "bambu_pla_basic") and what printer_id triggers. It adds meaningful semantics 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 states a specific verb+resource (resolve a material name/brand ID into a unified filament profile) and explains the two distinct input modes and their resulting behaviors. It does not explicitly distinguish itself from sibling lookup tools like get_material_properties or get_material, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear sequencing guidance: use BEFORE slicing/printing, and pass the result to estimate_before_design. It does not name alternative resolution/lookup tools or state when-not to use this tool, so it lacks explicit exclusion/alternative routing.
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 model file came from.
A file Kiln downloaded from a marketplace or a generator answers from
the note Kiln left beside it, in any format (``came_from`` says it in
a sentence). Otherwise a .3mf or .gcode.3mf answers from its embedded
metadata: 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?
With no annotations, the description carries the burden and does disclose the resolution mechanism: it reads a note the downloader left, otherwise parses embedded MakerWorld/generic 3MF metadata (Title, Designer, Application, License). It doesn't state what happens on failure or absent metadata, which is a minor gap for a no-annotation 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?
Front-loaded with the one-line purpose and reads efficiently, but the 'Returns...' paragraph and the ':returns:' docstring line overlap, repeating the same field list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no-output-schema tool, the description covers inputs, resolution logic, and return fields thoroughly. The remaining gap is error/no-source-found behavior, which an agent would want to know.
Complex tools with many parameters or behaviors need more documentation. Simple 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 a bare 'File Path' string property, but the description compensates: ':param file_path: Path to the .3mf or .gcode.3mf file' adds the accepted file-type constraint the schema omits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Identify where a model file came from,' then enumerates the two resolution paths (Kiln-provenance note vs embedded 3MF metadata). This distinguishes it from generic metadata siblings like extract_file_metadata or get_design_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 gives the trigger — '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.' Clear context, but no explicit exclusions naming alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_template_decorationC
Resolve decoration settings for a template, merging profile defaults with overrides (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=resolve_template_decoration
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Default: "". | |
| mode | No | Default: "". | |
| scale | No | Default: 0.0. | |
| depth_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| image_style | No | Default: "". | |
| template_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 does disclose the important Pro-tier gating requirement and that defaults are merged with overrides. However it never states whether this is a read-only computation or a persisted mutation, whether existing template decorations are overwritten, or what the resolution result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is one front-loaded sentence; the remaining three sentences are marketing upsell copy and a promotional URL that add no invocation guidance and dilute the signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, no-output-schema, no-annotation tool, the description covers purpose and tier gating but omits the merge semantics (precedence rules, error conditions when Pro is absent) that an agent needs to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents the seven parameters (though only with bare default values). The description adds only the abstract notion of 'overrides' mapped to 'profile defaults' and does not clarify face/mode/scale/depth_mm/image_style 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 first sentence names a specific verb ('resolve') and resource ('decoration settings for a template') plus the core mechanism ('merging profile defaults with overrides'). It is distinguishable from siblings like save_decoration or apply_decoration, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus alternatives such as decoration_info, list_decoration_presets, or apply_decoration, and no prerequisites (e.g. must the template already exist? must overrides be validated first?). The only conditional given is a billing-tier gate, not usage guidance.
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 exec keeps the stdio pipe, so the MCP client sees
no disconnect and repeats no ``initialize`` handshake; the fresh
process takes up the handshake this connection already made, so the
client's next call simply works. The client keeps the tool list it
cached when it connected: tools the new code adds reach it when it
reconnects. The result's ``keeps_connection`` says whether the
handshake was handed on.
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 exec happens ~0.5 seconds after this returns.
| Name | Required | Description | Default |
|---|---|---|---|
| clean_env | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it explains that os.execve preserves the stdio pipe so the client sees no disconnect and skips the initialize handshake, that the tool list is cached, that KILN_SERVE_WRAPPER changes what gets refreshed, that a restart can silently skip launcher sync (with a concrete measurement), that exec occurs ~0.5s after return, and that clean_env strips KILN_PRINTER_* to defeat a ghost-env footgun.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and mechanism are front-loaded and the rest is organized into when-to-use, refresh semantics, and parameter notes. It is long, and the dated operator anecdote and parenthetical 'ghost env' aside add bulk, though they carry genuine diagnostic 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?
There is no output schema, and the description compensates by documenting the return ('confirmation that the restart is imminent, plus the list of env vars that were stripped'), the keeps_connection field, the ~0.5s timing, and the two launch modes. An agent has everything needed to call it and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes far beyond the schema's bare 'Default: true.' It explains exactly what clean_env strips, the condition under which it applies (config.yaml has a printer configured), the failure mode it prevents, and when to set it False (CI or pure env-driven workflows).
Input schemas describe structure but not intent. Descriptions should explain 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 immediately: 'Restart the Kiln MCP server process,' then details the mechanism ('Replaces the current process with a fresh instance using os.execve'). This is unmistakably distinct from siblings like trim_serve_processes, upgrade_kiln, or health_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?
Gives explicit triggering conditions: 'Use after installing or updating kiln-pro plugins, changing environment variables, or modifying server code.' It also states the benefit (avoids restarting the MCP client). It does not name an alternative tool or state when not to use it, so it stops short of the 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_from_reflog_entryC
Snap a branch back to a recorded head state.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=restore_from_reflog_entry
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Default: "old_head". | |
| operator | No | ||
| reflog_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It implies a destructive mutation of branch head state but says nothing about reversibility, whether subsequent versions become unreachable, required permissions, or what is returned. Worse, the bulk of the text is an unrelated promotional block that could make an agent believe this tool relates to calibration or textures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one relevant sentence is well front-loaded, but it is followed by four lines of marketing copy that do not belong in a tool definition and actively misrepresent the tool's domain. Signal-to-noise is poor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a mutating history operation with no annotations, no output schema, and parameters largely undocumented. An agent lacks the information needed to call it safely: no statement of blast radius, no return shape, and no explanation of required arguments.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only 'target' has a default note), and the description adds no meaning for any of the three parameters. The required reflog_id and the opaque 'operator' field are entirely undocumented in both the schema and the description, leaving the agent to guess what values are valid.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a concrete verb and object (snap a branch back to a recorded head state), which is understandable in isolation. However, it never distinguishes this from closely related siblings such as get_reflog_entry, show_reflog, undo_last_head_change, or rollback_design_version. The remaining four lines describe calibration, textures, and pricing, which have nothing to do with restoring a reflog entry and dilute 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?
There is no guidance on when to use this versus show_reflog/get_reflog_entry (inspect) or undo_last_head_change (undo the most recent move). No prerequisites, no warning about discarding commits/versions made after the target head, and no mention of what 'recorded head state' means in context. The upsell block provides no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_interrupted_printA
Resume an interrupted print with one call on any supported FDM printer (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=resume_interrupted_print
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Default: 0. | |
| use_ams | No | Default: "auto". | |
| ams_mapping | No | ||
| run_actions | No | Default: "". | |
| printer_name | No | Default: "". | |
| material_type | No | Default: "PLA". | |
| target_ams_slot | No | Default: -1. | |
| require_ams_match | No | Default: true. | |
| prime_extrusion_mm | No | Default: 5.0. | |
| original_gcode_path | No | Default: "". | |
| target_filament_type | No | Default: "". | |
| target_filament_color | No | Default: "". | |
| manual_material_change_confirmed | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose non-obvious behavior: the tool may act on the physical printer (upload, start, pause, resume, set speed), the first call is non-executing, and execution is routed through Kiln's own checked tools. It omits reversibility, what state is consumed or modified, and the Pro-license failure mode beyond 'Requires Kiln Pro.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the safety/confirmation paragraph earns its place, but nearly a third of the text is a marketing tier pitch with a tracking URL ('Everything in Free, plus calibration... Upgrade: https://kiln3d.com/pricing?src=agent&tool=...') that burns attention without helping the agent call 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?
For a 13-parameter mutation tool with no annotations and no output schema, the description covers the action-confirmation protocol but not the resume mechanics it exposes — layer targeting, AMS/filament matching, manual material change confirmation — nor what the tool returns on the dry first pass beyond 'the actions it wants and why'.
Complex tools with many parameters or behaviors need more documentation. Simple 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 92%, so the baseline is 3, and the descriptions are largely 'Default: X' placeholders rather than semantics. The description adds real meaning only for run_actions (set it to the actions_digest) and says nothing about layer, use_ams, ams_mapping, prime_extrusion_mm, or manual_material_change_confirmed, which are exactly the parameters that determine whether a resume is safe.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource (resume an interrupted print) and scopes it to supported FDM printers. However, it never distinguishes itself from the many near-siblings that also resume or recover prints (resume_print, fleet_resume, start_print_recovery, confirm_print_recovery, recover_power_loss_print), so an agent cannot tell from the description alone which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 explain the two-phase invocation protocol clearly: the first call is dry and returns proposed actions, and the second call passes run_actions = the returned actions_digest. But it gives no guidance on when to use this versus resume_print, fleet_resume, or the print-recovery siblings, and no preconditions (e.g. an actually interrupted print must exist) are stated.
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."
A print paused at a planned hardware stop (a pause written into the file
so a nut, a magnet or a bearing can go in) is refused with
``code: "HARDWARE_NOT_CONFIRMED"`` and a ``hardware`` block saying what
goes in. Tell the person, wait for them to say every piece is in and
sits level with or below the top of the print, then resume with
``hardware_confirmed=true``. Never pass it on your own judgement.
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.
hardware_confirmed: The person has said every piece of hardware for
this stop is in and sits level with or below the top of the
print. Only on their word.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Default: false. | |
| printer_name | No | ||
| hardware_confirmed | No | Default: false. |
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: it discloses the required paused state, the physical effect (nozzle returns to previous position, resumes extrusion), post-hoc verification that the resume actually took, and the exact failure contract (`code: "HARDWARE_NOT_CONFIRMED"` plus a `hardware` block). The refusal path for planned hardware stops and the human-in-the-loop workflow are spelled out rather than left to inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and precondition, and every paragraph carries real information. There is mild redundancy: the hardware-stop consent rule appears both in the body and again in the `hardware_confirmed` arg entry, which could be trimmed to one 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 state-mutating tool with no annotations and no output schema, the definition covers precondition, physical effect, verification, error contract, and the human-approval gate. Nothing an agent needs in order to call it safely and correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 67% and the schema itself says nothing useful for `force` and `hardware_confirmed` beyond "Default: false", and nothing at all for `printer_name`. The description's Args block compensates fully, explaining the recovery rationale for `force`, the default-printer fallback and matching-name convention for `printer_name`, and the consent condition for `hardware_confirmed`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Resume a paused print job") and the required precondition, plus `printer_name` scoping to a single printer. It does not explicitly differentiate itself from siblings such as `resume_interrupted_print`, `firmware_resume_print`, or `fleet_resume`, so the distinction is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 `force` (printer screen disagrees with Kiln, telemetry says RUNNING while standing still), when to use `hardware_confirmed` (only on the person's word after they confirm every piece is in and level), and adds a hard prohibition: "Never pass it on your own judgement." That is exactly the when/when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_decoration_preset_branchC
Mark a decoration-preset branch retired.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_decoration_preset_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a mutation-style operation. It states "Requires Kiln Pro," which is a useful prerequisite, but it does not disclose whether retirement is reversible, what happens to the branch, required permissions, 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 first sentence is concise and front-loaded, but the following two sentences are pricing/marketing copy rather than tool guidance. Those sentences do not help an agent select or invoke the tool and dilute the useful 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?
No output schema and no annotations are provided, so the description should explain return behavior, permissions, and consequences for this retirement mutation. It instead provides an upsell and leaves branch_id undocumented, making it incomplete for correct 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?
There is a single required parameter, branch_id, with 0% schema description coverage. The description does not explain the expected ID format, where to obtain it, or whether it refers to a branch name or internal identifier, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a clear verb and resource: "Mark a decoration-preset branch retired." It distinguishes the tool from generic branch tools by naming the decoration-preset branch domain. However, it does not differentiate from closely related siblings such as retire_decoration_preset_release or retire_design_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, nor does it state prerequisites beyond a pricing upsell. The existence of sibling retire tools makes the lack of routing guidance a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_decoration_preset_releaseC
Yank a preset release — record preserved, name stops resolving.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_decoration_preset_release
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Default: "". | |
| release_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 it does disclose a key trait: the record is preserved while the name stops resolving (tombstone semantics). It does not say whether the action is reversible, who may perform it, or what error occurs on an already-retired release. The 'Requires Kiln Pro' line hints at tier gating but is phrased as ad copy rather than a clear permission 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 first sentence is excellent and front-loaded, but it is followed by two sentences of unrelated subscription upsell and a pricing URL that carry zero invocation value. Roughly two-thirds of the description is 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 mutation-style retire tool with no annotations, no output schema, and a partially documented parameter set, the description should explain reversibility, permissions, and effect on dependents. It covers only the name-resolution effect and pads the rest with marketing copy.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50% (release_id is undocumented; reason only carries a default), and the description adds no parameter meaning at all. It never explains what release_id refers to or how reason is used, so it fails to compensate 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 opening line gives a specific verb and resource ('Yank a preset release') plus a concrete behavioral effect ('record preserved, name stops resolving'). It is clear enough to distinguish from siblings like verify_decoration_preset_release or sign_decoration_preset_release, but it never names those alternatives explicitly, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing explains when to retire a release versus archive_decoration_preset or retire_decoration_preset_branch. No prerequisites, sequencing, or preconditions are stated; the remaining text is pricing marketing, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_design_branchC
Mark a branch retired — preserves records, frees the name.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_design_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_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 it does disclose real behavior: records are preserved (soft retire, not delete) and the branch name becomes reusable. It omits auth/permission requirements and whether the operation is reversible or how it interacts with related releases, so the disclosure is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first line is tight and correctly front-loaded, but three of four lines are irrelevant marketing copy about Kiln Pro tiers and an upgrade URL that have nothing to do with invoking this tool. The majority of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity single-parameter retire tool with no annotations and no output schema, the core behavior is covered. However, the missing parameter documentation and lack of any reversibility/auth context leave real gaps, and the space is wasted on upsell text rather than filling them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required branch_id parameter is undocumented in both schema and description. The description gives no hint about the identifier's form or where to obtain it, so it fails to compensate 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 opening sentence gives a specific verb+resource (mark a branch retired) plus two concrete effects: records are preserved and the name is freed. That is enough to identify the operation, though it does not differentiate from close siblings like retire_feature_branch or cloud_retire_remote_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives (archive_design, delete_design, retire_design_release). The remaining text is subscription upsell, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_design_releaseC
Yank a release — record preserved, name no longer resolves.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_design_release
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Default: "". | |
| release_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one important trait: the release record is preserved while its name no longer resolves. However, it omits permissions/auth requirements, whether the retirement is reversible, side effects on related versions, and what the response contains. The remaining marketing copy adds no behavioral value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful information is confined to the first sentence, which is well front-loaded. The next three lines are pricing-plan marketing and an upgrade URL unrelated to invoking the tool, taking up most of the description without helping the 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?
For a two-parameter retirement mutation with no annotations and no output schema, the description is not complete enough. It gives the core effect but lacks usage guidance, parameter meaning, permission requirements, and side-effect details that an agent would need 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 description never mentions either parameter. Schema coverage is only 50%: release_id has no description at all, and reason is documented only with a placeholder default. The description does not compensate by explaining what release_id identifies or what reason is used for.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific action and effect: 'Yank a release — record preserved, name no longer resolves.' It clearly describes retirement behavior and distinguishes it from deletion by noting the record is preserved. It does not explicitly differentiate from sibling tools like archive_design or retire_feature_release, but the core purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explain when to use this tool versus delete_design, archive_design, rollback_design_version, or the other retire_* sibling tools. The only conditional-sounding text is 'Requires Kiln Pro,' which reads as a paid-plan advertisement rather than actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_feature_branchC
Retire a branch — preserves records, frees the name.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_feature_branch
| Name | Required | Description | Default |
|---|---|---|---|
| branch_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose two important behavioral traits: retiring preserves records and frees the branch name, and it requires Kiln Pro. However, it omits reversibility, what happens to branch history/references, and any authorization details beyond the Pro 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 core sentence is front-loaded and concise, but the remaining paragraphs are unrelated pricing-marketing text about calibration, mid-print edits, textures, and upgrades. Those sentences do not help an agent call this retirement tool and dilute the useful 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?
For a one-parameter mutation tool with no annotations or output schema, the description should cover branch identification, expected effect, and reversibility. It mentions the effect but leaves the required branch_id semantics and recovery behavior unexplained while spending space on unrelated upsell.
Complex tools with many parameters or behaviors need more documentation. 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 branch_id, so the description must explain the parameter. It only says "a branch" and gives no guidance on the identifier's format or where 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 first sentence states a specific verb and resource: "Retire a branch — preserves records, frees the name." It clarifies the effect versus deletion, but it does not distinguish this tool from sibling retirement tools such as retire_design_branch or retire_feature_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the effect of retiring a branch but never states when to use it, when not to use it, or which sibling tools are alternatives. The later pricing text is unrelated to choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_feature_releaseC
Yank a feature release — record preserved, name stops resolving.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_feature_release
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Default: "". | |
| release_id | 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 disclose one useful trait — the record is preserved and only name resolution stops — but says nothing about permissions, reversibility, what happens to downstream references or the required tier in a trustworthy form; the remaining bulk is promotional text unrelated to retirement 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 first clause is well front-loaded and earns its place, but roughly two-thirds of the description is upsell copy about unrelated Pro features and a pricing URL. That text is waste at best and misleading at worst for an agent trying to decide whether to call a retirement 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?
Placeholder — not used; see revised score below.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 50%: release_id has no description at all, and reason is documented merely as "Default: \"\"", which explains nothing about purpose or where the reason is recorded. The description adds zero meaning about either parameter, so the coverage gap is left entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause names a specific verb and resource ("Yank a feature release") and adds real scope detail ("record preserved, name stops resolving"). However it draws no distinction from the many near-identical siblings (retire_design_release, retire_decoration_preset_release, retire_feature_branch, cloud_retire_remote_branch), and the following three sentences describe calibration, mid-print edits and textures, which actively blur what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to retire a release versus rolling back, deleting a feature, or retiring a branch — the closest siblings go unmentioned. The only conditional content is a marketing line implying a Kiln Pro tier requirement, which is buried in ad copy rather than stated as a prerequisite or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retire_manual_revisionC
Soft-delete a manual revision (Business+, owner-only).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=retire_manual_revision
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| manual_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the whole behavioral burden. It usefully discloses that this is a soft-delete (implying recoverability rather than hard removal) and that it is owner-restricted, but says nothing about what happens to references, whether the action is reversible, or how the required reason is used.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but roughly two thirds of the text is a pricing/upsell pitch ('3 printers (grow to 50)', upgrade URL) that does not help an agent select or invoke the tool. The useful content is a single 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?
For a mutation tool with no annotations, no output schema, and 0% parameter documentation, the description is thin: it never explains the reason argument, side effects on manual history, or recovery behavior. The upsell text crowds out information the agent actually 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% for both required parameters (manual_id, reason), and the description adds nothing about their meaning or format — notably what qualifies as a valid reason. The description fails to compensate for the coverage gap, so it lands below 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 first sentence gives a specific verb and resource ('Soft-delete a manual revision') plus gating constraints (Business+, owner-only), so the action is unambiguous. It does not explicitly differentiate itself from adjacent manual tools like get_manual_revision or diff_assembly_manuals, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only real guidance is the eligibility constraint ('Business+, owner-only'), which is a precondition rather than a when-to-use rule. Nothing tells the agent when to retire a revision versus rollback_design_version or plain deletion, and the second paragraph is marketing copy, not usage instruction.
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 model that failed (STL, OBJ, 3MF,
STEP, ...). One the diagnosis cannot read is said in
``printability_note``.
printer_name: Target printer name. Omit for the default
printer.
material: Filament material (e.g. ``"PLA"``, ``"ABS"``); the
reslice is set for it (temperatures, melt rate,
cooling). 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.
placement: Where the part goes when the plate still holds
the last print: ``[x, y]`` in mm, a named region
(``"front-left"``, ``"centre"``, …), or ``"keep"``.
Omitted, an occupied plate refuses before slicing and
lists the spots that would work. The clearance verdict
is free; placing and starting a second print on an
occupied plate is a kiln-pro feature
(https://kiln3d.com/pricing).
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| placement | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| printer_name | No | ||
| preview_token | No | ||
| skip_diagnosis | No | Default: false. | |
| skip_validation | No | Default: false. | |
| custom_overrides | 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 and does most of it: it discloses auto-detection of material from the AMS, override merge precedence (caller wins), a mesh validation gate and its bypass, and that starting a second print on an occupied plate is a paid tier feature (kiln-pro). It stops short of stating that this is an irreversible write that starts real hardware or what preconditions/auth are required before the print begins.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then a numbered five-step flow, then an Args block — very scannable for a 9-param tool. Step 4 contains a run of editorializing about why mesh validation matters ("the highest-value place to validate — the previous attempt already failed...") that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter write tool with no annotations, low schema coverage, and no output schema, the description is close to complete: it explains the pipeline, defaults, bypasses, and the occupied-plate behavior. The only material omission is what ``preview_token`` is for and whether the call returns a job id or print 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 description coverage is only 22%, so the description must compensate and largely does: it documents 8 of 9 params with meaning beyond the schema (material drives temps/melt rate/cooling and is AMS auto-detected, custom_overrides wins on conflict, placement accepts [x, y] mm or a named region or "keep", omission causes a refusal with suggested spots). ``preview_token`` is never explained, which is the one 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 opening sentence gives a specific compound verb and resource: diagnose the last print failure, then re-slice and print with fixes. It explicitly names the sibling chain it replaces (``diagnose_print_failure_live`` → ``slice_and_print``), so an agent can tell it apart from those tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is stated as a trigger plus a routing rule: "When a print fails, call this tool instead of manually chaining ... instead." The numbered steps clarify what each stage does so an agent knows which bypass flag applies to which stage, and the ``placement`` note explains what happens when the plate is still occupied.
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 | Default: 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully lists the return categories (total revenue, sales count, top models, monthly trends, marketplace breakdown), but it does not state that this is a read-only operation, what permissions or scope apply, or how data is formatted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded and compact: purpose first, then return contents, then the argument. The 'Args:' formatting adds slight noise but nothing is wasted or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description does well to enumerate the return categories. It still omits important context such as data scope (org/user/workspace), currency or formatting of revenue values, and whether the dashboard is cached or real-time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description repeats the schema's own 'days' default-30 information without adding new semantics such as timezone handling or whether partial days count. The baseline of 3 is appropriate when the schema already fully documents 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 states a specific verb and resource ('Get aggregate revenue analytics dashboard') and enumerates the returned metrics, so an agent knows exactly what the tool provides. It does not, however, explicitly distinguish itself from related siblings such as model_revenue or 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?
There is no guidance on when to use this tool versus alternatives like model_revenue or project_cost_summary, nor any stated prerequisites or exclusions. The aggregate nature implies a summary use case, but the agent must infer that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_calibration_recommendationsB
Delete applied_settings.json — revert all resolvers to defaults.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=revert_calibration_recommendations
| 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 carry the behavioral load, and it does disclose the concrete artifact affected (applied_settings.json) and the end state (resolvers back to defaults). It omits reversibility, whether prior settings are recoverable, confirmation requirements, and tier-gating enforcement details, while spending most of its length on an unrelated marketing pitch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is correctly front-loaded, but it is followed by three sentences of pricing advertisement and a tracking URL that consume roughly three quarters of the text. That material does not help an agent invoke the tool and should not be in a tool 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?
For a zero-parameter, unannotated, no-output-schema destructive operation, an agent needs to know the destructive scope and whether the action can be undone; the description implies irreversible deletion of a settings file but never states it, and pads the remainder with promotional copy instead of operational 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 tool takes zero parameters, so the baseline is 4; there is nothing about argument semantics the description could or should add. The schema coverage being 100% with an empty properties object confirms no gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a concrete verb and resource — delete applied_settings.json and revert all resolvers to defaults — which is unambiguous. It does not, however, distinguish this tool from the calibration siblings (apply_calibration_recommendations, get_calibration_health_recommendations), and the three trailing sentences describe Pro-tier features rather than this tool's 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?
There is no statement of when to revert versus when to apply or assess calibration, even though apply_calibration_recommendations and assess_calibration_status sit in the same sibling set. The only usage signal is an incidental 'Requires Kiln Pro' buried in an upsell paragraph.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_mid_print_fleetC
Revert mid-print transforms on N printers at once (Business+).
Business adds team review, approval gates, and 3 printers (grow to 50). Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=revert_mid_print_fleet
| Name | Required | Description | Default |
|---|---|---|---|
| sessions | 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 plan tiers and printer-count limits, but for a mutation that undoes work on running prints it says nothing about reversibility, effect on in-flight jobs, partial failure behavior, or permissions beyond the plan name — and the remaining text is upsell copy rather than 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 core purpose is front-loaded in the first sentence, which is good. But two of the four lines are marketing/upsell (feature list, pricing URL with agent tracking parameters) that consume space without helping the agent invoke 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?
For a destructive-sounding mutation with no annotations, no output schema, and an entirely undescribed array parameter, the description omits prerequisites for active sessions, expected return behavior, and failure modes. The plan-tier note is the only substantive addition, leaving real gaps an agent would hit on first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter, 'sessions', with 0% schema description coverage, so the description should explain its shape and origin. The phrase "N printers at once" hints at batching but never defines what a session ID is or where the caller obtains one, and it conflates printers with sessions, leaving the sole parameter effectively undocumented. Graded 3 only because a single-parameter tool needs less prose than a multi-param one.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ("Revert mid-print transforms") plus a scope ("on N printers at once"), which is enough to distinguish it from fleet siblings like fleet_pause or decorate_during_print_fleet. It stops short of explicitly contrasting itself with the additive counterparts (add_feature_during_print_fleet, decorate_during_print_fleet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is a plan prerequisite ("Business+", "Requires Kiln Business"), which is a gating condition rather than when-to-use guidance. Nothing says when a revert is appropriate versus rolling forward with another fleet call, nor are any exclusions or prerequisites for active print sessions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_design_pull_requestB
Comment on, approve, request changes, or reject a design change.
Kiln Pro would open the change as a reviewable pull request — the proposed diff, comments, and a record of what merged and why. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=review_design_pull_request
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Default: "". | |
| pr_id | Yes | ||
| user_id | No | ||
| decision | No | Default: "COMMENT". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present the description carries the full burden. It usefully discloses the Kiln Pro gating requirement and frames the outcome as a recorded diff/comments/merge record, but it never states what approving or rejecting actually does to the design, whether it is reversible, or what permissions are 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?
Three short lines with the action front-loaded, then the product context, then the prerequisite. The upgrade/marketing URL adds a little noise but the informational content is tight and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, an agent still lacks post-call semantics (does approve merge the change? what does reject do?) and decision value formats. The prerequisite and conceptual model (PR with diff, comments, merge record) are covered, which keeps it above the minimum.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%: body and decision have only default-value notes, and pr_id/user_id have no descriptions at all. The prose partially compensates by naming the candidate decision actions (comment, approve, request changes, reject), but no literal enum values, pr_id format, or user_id meaning are 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?
The first sentence names a specific verb+resource (review a design pull request) and enumerates the four decision actions, which makes it clearly distinct from read-only siblings like get_design_pull_request or list_design_pull_requests. It doesn't explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the action tool for a PR that already exists, and it does disclose a hard prerequisite (Requires Kiln Pro) plus an upgrade path. But there is no explicit 'use this instead of X' routing or guidance on when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_magnet_supplier_packetC
Review a magnet supplier packet for Enterprise-grade evidence gaps.
Free door, tiered answer — Free: Warnings — always free · Pro: Sizing and fit for the hardware you bought · Business: + Per-machine fit, validation tests and QC plans across your fleet · Enterprise: + Child-safety & supplier vetting for magnets. Upgrade: https://kiln3d.com/pricing?src=agent&tool=review_magnet_supplier_packet
| Name | Required | Description | Default |
|---|---|---|---|
| max_temp_c | No | ||
| supplier_fields_json | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses that results are tier-gated by subscription plan, including that Free returns warnings, but it does not state whether the tool is read-only, what permissions are required, or what happens with incomplete supplier 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 purpose is front-loaded in the first sentence, and the tier sentence conveys relevant output behavior. The upgrade URL and promotional phrasing add some clutter, but the description remains reasonably 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?
For a tool with no output schema and no annotations, the description should do more to explain expected input structure, the nature of evidence gaps checked, and what a useful response contains. It names the tiers but leaves key invocation details 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 does not explain either parameter. Schema coverage is only 50%, and the two inputs, max_temp_c and supplier_fields_json, are left largely undocumented; the vague “Default: ""” note for supplier_fields_json does not clarify expected structure or contents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: review a magnet supplier packet for Enterprise-grade evidence gaps. It is clear what the tool does, but it does not distinguish itself from related siblings such as generate_magnet_qc_plan, check_magnet_design, or manage_supplier_document_evidence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 each paid tier returns but gives no explicit guidance on when to use this tool versus alternatives or when not to use it. The tier breakdown is about output gating, not invocation criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_consent_windowA
Close a standing consent window now. Prints ask the person again.
The person opened the window — in the approval dialog or at a
terminal — and can close it here, through you, without touching
a terminal: when they say to close it, call this. Closing is
the safe direction, so it needs no confirmation and no window
can refuse it. Jobs queued under the window will not start.
This is also how always allow is turned off: when the person
says "ask me first", call this with the printer's name (or the
id on the print result) and show them the ``note`` as written.
Args:
window_id: The window to close (from ``consent_window_status``
or the ``standing_window`` block on a print result).
printer_name: Close every open window covering this printer.
all_windows: Close every open window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | No | ||
| all_windows | No | Default: false. | |
| printer_name | 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: it states closing is the safe direction, requires no confirmation, cannot be refused by a window, and has the side effect that queued jobs under the window will not start. It also instructs the agent to show the returned note verbatim — behavior not derivable from 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 critical action and safety statement are front-loaded, and every paragraph adds usable information. It is slightly verbose with an embedded Args block duplicating parameter info, and the indented formatting is awkward, but no sentence is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers safety, side effects, and return-note handling well. It does not say what happens when zero arguments are supplied (all params optional) or how the three selectors interact if combined, which is a real gap for an agent calling 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 coverage is only 33% (only all_windows is documented), but the description compensates by explaining all three: window_id's provenance, printer_name closing every open window covering that printer, and all_windows closing every open window. This adds real semantics beyond the 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 first sentence gives a specific verb and resource — 'Close a standing consent window now' — and the body clarifies the scope (immediate, not scheduled). It is clearly distinguished from the read-only sibling consent_window_status, which is named as the source of the window_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?
Explicit triggers are given: call this 'when they say to close it' and, for disabling always-allow, 'when the person says "ask me first"'. It also names the alternative data sources (consent_window_status, the standing_window block on a print result) so the agent knows where the id comes from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_scopeB
Revoke a scope grant. Supply either tenant_id (to remove a personal grant) or team_id (to remove a team-targeted grant).
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business for the organisation (its owner's plan), not for you: everyone whose role may see it reads it, on any plan of their own. Upgrade: https://kiln3d.com/pricing?src=agent&tool=revoke_scope
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | ||
| team_id | No | ||
| scope_key | Yes | ||
| tenant_id | No | ||
| capability | 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 a real behavioral constraint (Kiln Business plan required for the organisation) which is valuable, but it says nothing about what revoking actually does — immediate vs deferred effect, side effects on team members, error behavior, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the either-or rule are front-loaded and efficient, but the middle section drifts into marketing copy about shared workspaces and an upgrade URL, which is partly useful as a prerequisite but padded with promotional 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 licence-gated mutation with no annotations, no output schema, and 0% parameter documentation, the description covers the plan gate and parameter selection but omits effect/reversibility and the meaning of the three required parameters, leaving meaningful 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 the description must compensate. It does explain the tenant_id/team_id either-or semantics, which the bare schema does not, but leaves org_id, scope_key, and capability completely undefined — three of the five parameters remain opaque.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb+resource ('Revoke a scope grant'), which is immediately distinguishable from the sibling grant_scope. It does not explicitly name the inverse tool, but the action and target are 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?
It does say which parameter to supply for a personal vs team-targeted grant, which is useful conditional guidance, but there is no statement of when to use this tool versus alternatives (e.g. grant_scope, list_scopes) or any prerequisites/ordering beyond the plan note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_decorationA
Restore an earlier version of a saved decoration (Kiln Pro).
The current version is archived and the earlier one comes back
as a NEW version number, so history is never rewritten.
:param name: Decoration name or slug.
:param version: Version number to restore.
:returns: Dict with the restored decoration.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| version | 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 it well: it discloses that the current version is archived, that the restored version reappears as a new version number, and that history is never rewritten. It omits auth/permission requirements and error behavior for missing versions, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key behavioral fact (history is never rewritten) is front-loaded in the second sentence, and there is little waste. The Python docstring :param:/:returns: formatting is slightly boilerplate but conveys 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 two-parameter mutation with no annotations and no output schema, the description covers the mutation semantics, the versioning outcome, and the return type ('Dict with the restored decoration'). Only permissions and failure modes are left uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple 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, and it does: it clarifies that 'name' accepts a name or slug and that 'version' is the version number to restore. Both parameters gain meaning beyond the bare title/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?
States a specific verb and resource: 'Restore an earlier version of a saved decoration'. The resource narrowing ('decoration') implicitly separates it from rollback_design_version and rollback_feature, but the description never names those siblings or the condition that selects this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'restore an earlier version' framing implies when to call it, but there are no explicit when/when-not statements, no prerequisites, and no routing among the several rollback/restore siblings in the toolset.
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 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?
With no annotations at all, the description carries the full burden and does well on the key point: this is history-preserving, not destructive — a *new* version is created whose source matches the target, and its notes record the rollback origin. It also discloses an unusual side effect (an interactive 3D stage panel opens on success, with automatic mesh decimation for oversized models). It omits precondition and failure behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is correctly front-loaded and the Args block earns its place given 0% schema coverage, but the Args/Returns formatting is docstring boilerplate, and the inline-3D-stage paragraph runs several sentences with promotional framing ('the PNG preview is the floor, not the whole experience') that dilutes the operational 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?
For a two-parameter mutation tool with no annotations and no output schema, the description covers the essentials: what the operation does to history, what the return value is ('the newly created rollback version record'), and the UI side effect. Missing are preconditions and error cases, which matter for a state-changing call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the schema only supplies bare titles — so the description must compensate and largely does: to_version_id is explained as either an integer version number or a 'design_id:N' ref, which resolves the ambiguity of a string-typed field. design_id gets only the tautological gloss 'The design to rollback', leaving its format (UUID, slug, ref) undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rollback a design to a previous version') and immediately clarifies the mechanism: a new version is created rather than history being rewritten. It does not differentiate itself from nearby siblings such as undo_last_head_change or restore_from_reflog_entry, which are plausible alternatives for reverting state, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the operation itself — restore a prior design version — but there is no explicit when-to-use guidance, no preconditions (does the target version need to exist, must the design be locked?), and no exclusion pointing at undo_last_head_change or restore_from_reflog_entry. An agent must infer selection 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.
rollback_featureC
Append a new version whose content matches an earlier version. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=rollback_feature
INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| notes | No | Default: "". | |
| feature_id | Yes | ||
| feature_version_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 but does disclose real behavioral traits: the operation appends rather than rewrites history, it is gated behind Kiln Pro, and it opens an inline 3D stage with automatic decimation for oversized meshes. It still omits failure modes, permission details, and whether the target version must belong to the given 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 purpose sentence is properly front-loaded, but roughly half the text is unrelated marketing copy ('Everything in Free, plus calibration...', 'Requires Kiln Pro', upgrade URL) and a duplicated stage paragraph. That bulk dilutes the operative instruction and costs tokens without improving invocation accuracy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and two undocumented required parameters, the description is only partially complete: it explains the append semantics and the viewer side effect, but leaves identifier semantics, error conditions, and tier/permission failure behavior 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 description coverage is only 33%: 'notes' is briefly documented while feature_id and feature_version_id carry no schema text at all. The description supplies no compensating meaning for any of the three parameters, so an agent gets no help on what a version id must reference.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and effect ('append a new version whose content matches an earlier version'), which is clearer than the bare name 'rollback' and conveys the append-based, non-destructive rollback semantics. However, it never distinguishes itself from close siblings such as rollback_design_version, rollback_decoration, rollback_firmware or rollback_printer_firmware, so an agent must infer the scope from the required feature_id/feature_version_id arguments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over rollback_design_version or the design-version restore path, and no prerequisites beyond a paywall notice. The description tells the agent what happens but not when to reach for it.
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?
No annotations are provided, so the description carries the entire burden of behavioral disclosure. It says nothing about whether a rollback interrupts printing, whether the printer must be idle, what permissions are required, whether the operation is reversible, or what happens if target_version is omitted — all critical for a firmware mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The routing guidance is front-loaded and the prose is tight; the only waste is an Args block that largely duplicates the schema field names. It is appropriately sized for a two-parameter 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 mutation tool with no annotations, no output schema, and 0% schema description coverage, the description leaves major gaps: no safety/prerequisite information, no explanation of the optional version parameter, and no indication of the result or failure modes. It is complete enough to identify the tool but not to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only restates the parameter names ('printer_name: Printer to rollback', 'target_version: Specific version to rollback to'). It never explains what omitting the optional target_version does (e.g., roll back to previous known-good version) or where valid versions come from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Rollback firmware on a specific printer by name') and adds scope qualifiers ('fleet-level, supports version pinning'). It explicitly names the sibling tool rollback_firmware as the single-printer alternative, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use rule ('Use this in multi-printer setups') and a when-not-to-use rule with the exact alternative ('For single-printer setups, use rollback_firmware instead'). That is the full routing decision an agent needs.
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 | Default: true. | |
| pattern | No | Default: "*.gcode". | |
| directory | Yes | ||
| new_passphrase | Yes | ||
| old_passphrase | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses recursive scanning, file modification, dry-run default behavior, license/scope requirements, and the environment-variable follow-up. It stops short of describing failure handling, rollback, or what happens if a passphrase is wrong, which matters for a destructive key-rotation 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 purpose and workflow, then provides parameter details. It is somewhat long and the Args section partially duplicates the input schema, but the structure is helpful for a multi-step destructive 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 complex, high-risk operation with no output schema and weak schema coverage, the description covers the essential workflow, prerequisites, defaults, and post-run environment update. It could be stronger by describing dry-run output, error behavior, or backup recommendations before irreversible re-encryption.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40%, but the description's Args section explains every parameter: old_passphrase is the current KILN_ENCRYPTION_KEY, new_passphrase is the target, directory is the scan root, pattern is a glob defaulting to '*.gcode', and dry_run previews without modifying files. This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Rotate the G-code encryption key') and explains the mechanism: recursive scan, decrypt with old passphrase, re-encrypt with new passphrase. It is immediately distinguishable from related tools such as encryption_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?
It gives explicit operational sequencing: run with dry_run=True first, then dry_run=False. It also states the post-rotation requirement to update KILN_ENCRYPTION_KEY and restart the server, plus Enterprise license and admin scope prerequisites.
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 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 | Default: 0.0. | |
| rotation_y | No | Default: 0.0. | |
| rotation_z | No | Default: 0.0. | |
| output_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden and does reasonably well: it discloses the file write location via output_path, the return payload, and an unusual side effect — an inline 3D stage panel opening on success, with automatic decimation of oversized meshes. It never states whether input_path is modified in place or how multiple rotations compose, which keeps it below 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 core action and rationale are front-loaded, and the Args block is efficient. The trailing inline-stage paragraph is longer than it needs to be and drifts into promotional framing ('the PNG preview is the floor, not the whole experience'), though it does convey a real behavioral 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?
With no output schema and no annotations, the description fills most gaps: it documents the return keys (output_path, rotations_applied), format support, units in degrees, and the repaint side effect. Minor omissions remain — rotation application order when multiple axes are supplied, and error behavior for unsupported 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 coverage is only 60% and the schema itself says nothing beyond 'Default: 0.0', yet the description explains every parameter: what input_path accepts, that rotation_z rotates on the build plate and is the most common axis, what X and Y mean, and the default output filename pattern. This fully compensates for the thin 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?
States a specific verb+resource with file-format scope: 'Rotate a 3D model file (STL or 3MF) by specified angles before slicing.' An agent can distinguish this from adjacent reorientation tools (auto_orient_model, mirror_mesh_model, rescale_model) purely from 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?
Gives concrete usage context (pre-slicing, use Z rotation to fight wobble/ringing on tall narrow parts) and names a follow-up sibling, reslice_with_overrides. It stops short of saying when NOT to use it — e.g. when automatic optimal orientation via auto_orient_model is preferable — so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_print_jobA
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. Every candidate also
carries a ``plate`` block -- whether the plate as it stands has
room for this part and how a print there would start. A machine
with no room, or a plate Kiln has no record of, is never
recommended; when none has room the answer is a refusal
(``NO_ROOM``) with each machine's own sentence. A print that
would start the quiet way beside a part still on the plate is
scored lower unless ``priority`` is high.
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, the description carries the burden and does real work: it discloses the scoring factors (material match, availability, queue depth, success rate), the per-candidate plate block, the refusal semantics with per-machine sentences, and the priority interaction. The major gap is that it never states whether this tool actually submits/prints or only recommends, which matters a great deal for a job-routing 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 core action is front-loaded in the first sentence, followed by the scoring mechanism, then edge cases (no room, quiet start), then args. Every sentence conveys distinct 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 4-param tool with no annotations and no output schema, the description covers the decision logic, the returned structure (scored alternatives plus plate block), and failure modes. Only the ambiguity about whether a job is actually dispatched, and the absence of default handling for optional params, keep it short of 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, and it documents all four parameters with examples for material and enumerated value sets for quality ('draft','standard','fine') and priority ('low','normal','high') that the schema does not encode. It does not state defaults for the two optional params or file_path format expectations, keeping it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Route a print job') and scopes it to 'the best available printer in the fleet'. It is distinguishable from near-neighbors like suggest_printer_for_job or fleet_submit_job only by inference, since no sibling is named, but the routing+scoring framing 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?
Usage context is implied through the scoring rules and the explicit refusal case (NO_ROOM) and the priority-based tie-break. There is no explicit statement of when to prefer this over suggest_printer_for_job, optimize_fleet_assignment, or fleet_submit_job, leaving the agent to infer.
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 | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does well: it discloses the side-effect sequence (validate, slice, upload, report stats), the critical fact that printing is not started, and the validation bypass behavior. It does not cover authorization or upload-overwrite behavior, so it is strong 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 arrow sequence is front-loaded, followed by two useful clarifying sentences and a parameter list. There is no wasted or repetitive 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 multi-step, five-parameter tool with no annotations or output schema, the description covers the pipeline, the non-printing behavior, and all parameters. It could be slightly more complete by mentioning return value shape or permissions, but it is sufficient 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 only 20%, but the description documents all five parameters with meaningful semantics: STL model path, registered printer name, printer model ID for profile selection, explicit slicer profile path, and skip_validation default plus when to set 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 states a specific verb and resource ('Prepare a benchmark print') and enumerates the pipeline: validate, slice, upload, report stats. It also distinguishes this from a real print by explicitly saying the print is NOT started automatically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear usage context: benchmark prints should be manually observed, so the tool prepares/uploads rather than starting the print. It does not name specific alternatives such as start_print or run_quick_print, but the intended when-to-use is evident.
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, the description carries the full burden, and it does disclose that this causes physical machine motion (homing, auto bed leveling) and returns guidance text from an intelligence database. Missing are blocking behavior, duration, failure modes, and whether it is safe/valid to invoke mid-job or mid-failure — material for a tool that physically moves hardware.
Agents need to know what a tool does to the 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 summary sentence, then a differentiation sentence, then Args — easy to scan. Slight redundancy between 'returns intelligence-based calibration tips' and 'returns printer-specific calibration guidance from the intelligence database' and the RST backticks add noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations and no output schema, so the description is the only source of behavioral information, and it omits the practical details an agent needs before commanding hardware motion: expected runtime, whether the call blocks until leveling finishes, and what the returned guidance looks like. Adequate but thin for a physical-action 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%, but the Args block compensates by explaining both parameters beyond their bare titles ('Printer model ID for calibration guidance'). It never explains why both are nullable or which one to supply when you have only a name or only a model ID, which is the real ambiguity introduced by 0 required 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?
States a specific verb+resource and enumerates the concrete steps ('home + bed level + printer-specific guidance'), then explicitly positions itself relative to the sibling 'calibrate_direct' as the orchestrated, higher-level variant. An agent can pick between run_calibrate and calibrate_direct without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '(recommended)' marker plus 'Higher-level than calibrate_direct' gives a clear default preference against the direct alternative. It does not state preconditions (printer idle, no active job, printer homed already) or when NOT to run the full pipeline, so it stops short of full when/when-not coverage.
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 (e.g. ``"PLA"``). It sets the slice's
temperatures, melt rate and cooling, its density weighs the
print (omitted: the spool the printer reports loaded, then PLA —
the slice step says which), and 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.
preview_token: Token from ``issue_preview_token`` after the user
has seen ``model_path``. Required: this tool ends at the
printer, so it is gated exactly as ``start_print`` is.
placement: Where the part goes when the plate still holds the last
print: ``[x, y]`` in mm, a named region (``"front-left"``,
``"centre"``, …), or ``"keep"``. Omitted, an occupied plate
refuses at the slice step and lists the spots that would work.
The clearance verdict is free; placing and starting a second
print on an occupied plate is a kiln-pro feature
(https://kiln3d.com/pricing).
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 | ||
| placement | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| ams_mapping | No | ||
| printer_name | No | ||
| profile_path | No | ||
| preview_token | No | ||
| skip_validation | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it discloses a lot: preflight checks 'cannot be skipped', preview_token is 'Required' because the tool 'ends at the printer' and is gated like start_print, an occupied plate refuses at the slice step and placing there is a paid-tier feature, and AMS routing is 'never silent' via the ams_selection response field. It stops short of explicitly stating that starting a print is irreversible and consumes filament/spool inventory, which is the one safety-relevant trait an unannotated mutation tool should spell out.
Agents need to know what a tool does to the 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 correctly: one-line summary, then sibling routing, then numbered pipeline, then Args. Structure is scannable and every section is load-bearing. It is on the long side and a few asides ('the slice step says which', the pricing URL) could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no-annotation, no-output-schema orchestration tool this is about as complete as a description can be: it explains the stages executed, the gating requirement, override precedence, per-parameter defaults and formats, and even the shape of the one interesting response field (ams_selection with slot/type/color).
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 10% (plus one bare 'Default: false'), so the description must compensate — and it does for all ten parameters. It supplies formats ('[x, y]' in mm, named regions, JSON array strings like "[0, 2]"), accepted values for use_ams and printer_id, precedence rules (profile_path overrides printer_id auto-selection; ams_mapping overrides auto-selection), and non-obvious defaulting chains for material (printer-reported spool, then PLA).
Input schemas describe structure but not intent. Descriptions should explain 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-and-resource statement ('Full print pipeline: validate + slice + safety-check + upload + print') and enumerates all seven stages. It explicitly distinguishes itself from the two nearest siblings (slice_and_print, run_reslice_and_print), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States this is the 'recommended one-shot tool' and 'Preferred over slice_and_print', then names the exclusion condition: use run_reslice_and_print for custom slicer overrides. It also gives a when-to-use rule for skip_validation ('already-validated inputs or pre-sliced 3MFs the validator can't introspect'), which is exactly the kind of conditional guidance agents need.
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 (e.g. ``"PLA"``). It sets the slice's
temperatures, melt rate and cooling -- a setting you also pass in
``overrides`` stays yours -- and its density weighs the print
(omitted: the spool the printer reports loaded, then PLA — the
slice step says which).
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.
placement: Where the part goes when the plate still holds the last
print: ``[x, y]`` in mm, a named region (``"front-left"``,
``"centre"``, …), or ``"keep"``. Omitted, an occupied plate
refuses at the slice step and lists the spots that would work.
The clearance verdict is free; placing and starting a second
print on an occupied plate is a kiln-pro feature
(https://kiln3d.com/pricing).INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| use_ams | No | ||
| material | No | ||
| overrides | No | ||
| placement | No | ||
| model_path | Yes | ||
| printer_id | No | ||
| ams_mapping | No | ||
| slicer_path | No | ||
| printer_name | No | ||
| profile_path | No | ||
| preview_token | No | ||
| skip_validation | No | Default: false. |
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 does so: it discloses the six pipeline stages, the safety-check step, hardware/software prerequisites, that validation runs by default and what skip_validation bypasses, that an occupied plate refuses at slice time with candidate spots, and that placing a second print is gated behind a paid tier. That is unusually complete disclosure for a physically-acting 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?
Front-loaded with purpose, the sibling alternative, and the pipeline, then structured into override reference and per-arg notes — every block is scannable. The material paragraph is somewhat over-explained and the inline-stage note is long, but no sentence is pure padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, annotation-free, no-output-schema tool the description is nearly self-sufficient, including what the user sees on success (interactive 3D stage, decimated meshes, PNG floor). It stops short of describing what the tool returns on failure (job id, error payload), leaving one 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?
With schema coverage at 8% across 12 params, the description does heavy lifting: it gives the overrides JSON format with a worked example and grouped common keys, explains material's temperature/density/AMS effects and precedence vs overrides, documents ams_mapping's slot-index format, and enumerates placement's accepted forms. It falls short of 5 only because `preview_token` and `printer_name`'s registration source are left 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?
States a specific verb+resource (reslice with slicer overrides, then print) and immediately differentiates itself from the sibling `run_quick_print` for standard prints. The one-shot pipeline line ('validate mesh → resolve profile with overrides → slice → safety check → upload → start print') makes the scope 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?
Explicit when-to-use ('use for retries with adjusted settings', 'when you need to tweak slicer parameters') and an explicit alternative ('For standard prints without overrides, use run_quick_print instead'). Prerequisites are also stated: slicer installed locally, printer idle and connected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_speed_scheduleA
Run, report or stop a layer-based speed schedule on this computer.
A schedule is a list of ``{"from_layer", "to_layer", "speed_percent"}``
segments. With ``action="run"`` it starts on the printer that is
printing now, replacing a schedule already running for that printer:
the printer is asked which layer it is on every few seconds and each
segment's speed is set once, as the print reaches it. It stops on its
own when the print ends, when the printer is found running a different
print, or on ``action="stop"`` (the printer stays at the last speed set).
``action="status"`` reports what has been applied so far.
Only the schedule's shape is checked here. Which speeds suit this
printer and which layers a speed is unsafe on is decided by Kiln's
served ``set_speed_schedule``, which hands the checked schedule here.
Args:
schedule: The segments to run (``action="run"`` only).
printer_name: Which printer. Omit for the default printer.
action: ``"run"`` (default), ``"status"`` or ``"stop"``.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Default: "run". | |
| schedule | No | ||
| printer_name | 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 the polling cadence ('asked which layer it is on every few seconds'), that each segment's speed is set once, that an existing schedule for the printer is replaced, the auto-stop conditions, and that after action='stop' the printer stays at the last speed set — a real side effect an agent must 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?
Front-loaded with the one-line purpose, then lifecycle behavior, then an Args block. Every sentence carries information, though the Args block partially restates what the prose already covered about action and printer_name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no-annotation, no-output-schema, 3-parameter mutation tool, the description covers side effects, lifecycle, and parameter meaning. The only gap is that action='status' reports 'what has been applied so far' without any hint of its return shape, which an agent may need 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?
Schema coverage is only 33% (only action has a description), so the description must compensate, and it does: it defines the schedule segment shape (from_layer, to_layer, speed_percent), states schedule is only used with action='run', explains printer_name defaults, and enumerates the action meanings. This adds substantial 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?
States a specific verb set (run/report/stop) against a specific resource (layer-based speed schedule) and scopes it to 'this computer'. It also distinguishes itself from the sibling set_speed_schedule by noting that tool is what validates speeds and hands the schedule here, and from fleet-level speed tools by naming the per-printer 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?
Explains the three action values and the conditions under which the run terminates (print ends, printer starts a different print, or action='stop'), plus the fact that a run replaces any schedule already running for that printer. It stops short of explicitly saying when to prefer set_speed_percent or the fleet speed siblings, but the workflow boundary with set_speed_schedule is spelled out.
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 | Default: 25. | |
| 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 carries the full burden, and it does well: it names the operation as a query, describes the return content (executions, blocked attempts, rate-limit violations, preflight failures), and states the limit cap of 100. It stops short of noting auth requirements or pagination 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 purpose sentence is front-loaded before the Args block, and each parameter line earns its place. The Google-style Args formatting is slightly verbose but 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?
For a read-only, three-optional-parameter query tool with no output schema, the description covers return contents, all filter dimensions, and the limit bound. It lacks only routing guidance versus sibling audit tools, which is a 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?
Schema description coverage is only 33% and the schema declares no enums, yet the description enumerates all six allowed action values, gives an example tool_name, and specifies the limit default (25) and maximum (100). This adds 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?
States a specific verb and resource ('Query the safety audit log') and enumerates the categories of records returned, so the agent knows exactly what this tool produces. It does not name or differentiate from close siblings such as export_audit_log or verify_audit_integrity, which keeps it below 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 is implied through the filter semantics ('Omit for all') and the listed action types, giving context for when filters apply. However, there is no explicit guidance on when to prefer this tool over related siblings like export_audit_log or get_interception_history.
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, and which printers have always allow on, 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 carries the burden of behavioral disclosure. It implies a read-only operation by saying "Show" and describes the visible settings, but it does not state permissions required, side effects, or return formatting. For a zero-parameter read-only settings tool this 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 short and front-loads the core purpose in the first sentence. The second and third sentences add useful detail and usage timing, though there is slight repetition between "Show current safety and auto-print settings" and "Displays whether auto-print is enabled."
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 no annotations, the description does enough: it explains the settings surfaced and advises calling early in a session. It lacks sibling differentiation and explicit read-only/security context, but for a simple settings inspection tool 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 tool has zero parameters, and the schema is empty, so there is no parameter semantics to explain. The description does not need to compensate for parameter gaps, matching the baseline of 4 for a no-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 uses a specific verb ("Show") and resource ("current safety and auto-print settings") and details the exact settings displayed, including auto-print for marketplace downloads and AI-generated models. It is clear what the tool does, but it does not explicitly distinguish itself from nearby siblings such as safety_status, get_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 gives a clear usage context: "Call this early in a session to understand what safety protections are active." That tells an agent when the tool is useful, but it does not mention when not to use it or name alternatives like safety_status or get_safety_profile.
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 | Default: "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 are provided, so the description carries the full disclosure burden. It does useful work by explaining durability (survives sessions) and expiry semantics (auto-excluded from queries after ttl_seconds, None means never expire), but it is silent on the most important mutation behaviors: whether re-saving an existing key overwrites or errors, whether values are size-limited, and what the tool returns. Those gaps matter for a write tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is front-loaded in one sentence and followed by a usage sentence, so the highest-value content comes first. The Args block is informative rather than wasteful, though it duplicates the schema's role and makes the description longer than a prose form would need to 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?
For a five-parameter write tool with no annotations and no output schema, the description covers purpose, usage context, scope/namespace resolution, and retention behavior — enough to call it correctly in common cases. The remaining gap is write semantics on key collision and any hint about the result, which an agent would want before relying on it as durable memory.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 20% (just a default note on scope), so the description must compensate — and it largely does, documenting all five parameters with meaning: key examples, value, scope namespaces ("global"/"fleet"/printer-specific), the printer_name override rule, and ttl_seconds expiry semantics. Only ttl_seconds units edge cases and key-collision behavior are left unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — saving a persistent note/preference that survives across sessions — and gives concrete examples of the content type (printer quirks, calibration findings, material preferences). What it lacks is any naming of the closely-related siblings (delete_agent_note, clean_agent_memory, get_agent_context), so the boundary is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this to remember printer quirks, calibration findings, material preferences, or any operational knowledge worth preserving" gives a clear use context with concrete examples. However, there is no when-not-to-use guidance and no direction toward the sibling tools for retrieving or removing notes, so an agent must infer the lifecycle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_custom_paletteC
Save a custom color palette for reuse with any texture.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=save_custom_palette
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| colors | Yes | ||
| texture | No | Default: "any". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the Kiln Pro entitlement requirement, which is important context beyond the schema, but it does not state whether an existing palette with the same name is overwritten, whether names must be unique, or what happens on save.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one useful sentence, but two of the three sentences are upsell copy and a pricing URL that do not help an agent select or invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 save operation with no annotations and low schema description coverage, the description should clarify required inputs and persistence behavior. It covers the basic purpose and tier gate but leaves too much about parameters and save semantics unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33%, and only the optional texture parameter is described in the schema. The description mentions 'any texture' but does not explain the required name or the expected structure of the colors array, so it does not compensate for the low 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 first sentence states a specific verb and resource: saving a custom color palette for reuse with any texture. It is clear which operation this performs, though it does not explicitly distinguish itself from sibling tools such as list_custom_palettes or delete_custom_palette.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 the palette is for reuse with any texture, but gives no explicit when-to-use guidance, no exclusions, and no alternatives. The remaining sentences are marketing and upgrade prompts rather than invocation guidance.
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 | Default: "emboss". | |
| name | Yes | ||
| tags | No | Default: "". | |
| depth_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| model_path | Yes | ||
| image_style | No | Default: "auto". | |
| source_path | No | Default: "". | |
| content_data | No | Default: "". | |
| content_type | No | Default: "auto". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the content file, settings, and processing pipeline are captured from the `.kiln_recipe.json` sidecar and that a dict with library path is returned, but it does not explain overwrite behavior, required permissions, failure cases such as a missing sidecar, or idempotence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the parameter documentation is useful for a 10-parameter tool. The Sphinx `:param:` / `:returns:` formatting is slightly verbose for an MCP description, but no section is clearly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter write tool with no annotations or output schema, the description does a good job covering the operation, inputs, saved contents, sidecar dependency, and return shape. It still leaves operational details such as overwrite semantics, prerequisites, and error behavior unspecified.
Complex tools with many parameters or behaviors need more documentation. 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 coverage is 80%, the schema mostly documents defaults rather than meaning. The description adds substantive semantics for all key parameters, including content type values, QR/text usage of `content_data`, the meaning of `depth_mm=0`, mode values, and example inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: saving a decoration to the library for future reuse. It also names the sibling consumer (`apply_decoration`), which clearly separates it from application, listing, and preset-management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the intended context well: save a proven decoration so it can later be applied with `apply_decoration`. However, it does not explicitly say when not to use it versus related tools like `create_decoration_preset`, `record_decoration_success`, or `save_design_version`.
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 | Default: "". | |
| prompt | No | Default: "". | |
| brief_id | No | Default: "". | |
| stl_path | No | Default: "". | |
| design_id | Yes | ||
| parameters | No | ||
| provenance | No | ||
| intent_hash | No | Default: "". | |
| scad_source | Yes | ||
| parent_version_id | No | Default: "". |
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 does so thoroughly: it discloses the automatic diff computation, version-number increment, the exact sidecar file path written, Pro-gated mesh fingerprinting/regression warnings, and the fact that parent_version_id is ignored (parent is always the most recent version). It also documents brief_id/intent_hash inheritance fall-back — genuine behavior an agent could not infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The Args/Returns structure is clean and front-loaded, but the 'Upgrade to Kiln Pro' pitch is repeated three separate times inline (provenance, stl_path, Returns), which consumes space without helping an agent invoke the tool. Trimming the duplicated marketing would tighten it considerably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 supplies the return-value summary (version number, diff, parent info, plus Pro additions) and documents all ten parameters plus the side effects. An agent has everything needed to call and interpret this 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 only 60% and most schema entries are boilerplate ('Default: ""'), so the description's per-parameter semantics add real value. It defines design_id grouping, the meaning of scad_source/prompt/parameters/notes/provenance keys, the recommended provenance keys, and the subtle inheritance behavior for brief_id and intent_hash.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save a new version of a parametric design') and immediately elaborates the mechanism (unified diff, version increment, sidecar persistence). This distinguishes it clearly from read siblings like list_design_versions, get_design_version, and the mutating rollback_design_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?
The description explains what happens on save but never states when an agent should call this versus alternatives such as rollback_design_version, record_design_version_outcome, or best_design_version. Usage is only implied by the behavior described, so it is minimum viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_featureC
Save a new versioned mechanical feature (or append to existing).
Kiln Pro would save this as a reusable feature or decoration preset — named, versioned, and ready to apply to any future design in one step. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=save_feature
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| notes | No | Default: "". | |
| metadata | No | ||
| design_id | No | ||
| feature_id | No | ||
| parameters | Yes | ||
| target_kind | Yes | ||
| target_spec | No | ||
| feature_kind | Yes | ||
| parent_feature_version_id | 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 does disclose two useful traits — versioning (a new version is created) and a Kiln Pro entitlement requirement — but says nothing about permissions, what happens on name collision, whether an existing feature is mutated, or how the four required fields behave 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 operative sentence is front-loaded and efficient, and the entitlement line is short. The third and fourth sentences are marketing/upgrade copy that earns no place in a tool definition an agent uses to decide and invoke.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a 10-parameter, nested-object mutation tool with no annotations, no output schema, and 10% schema coverage — the description should explain the new-vs-append branch, required identity fields, and permissions. Instead it spends its remaining words on a pricing link, leaving an agent unable to call it correctly without reverse-engineering the 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 description coverage is only 10% across 10 parameters with nested objects, so the description must compensate and largely does not. Only the vague "append to existing" can be loosely mapped to feature_id/parent_feature_version_id; name, feature_kind, parameters, target_kind, and design_id get no meaning beyond their bare titles. The trailing upsell URL contributes nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Save a new versioned mechanical feature (or append to existing)" gives a verb and a resource, but the second sentence muddies it by describing the same call as saving "a reusable feature or decoration preset," and there is a sibling save_decoration that makes that ambiguity costly. No sibling differentiation is offered among save_decoration, create_feature_branch, rename_feature, or archive_feature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical "(or append to existing)" is the only usage hint, and it never says which parameter selects append-vs-new or when to prefer this over save_decoration / create_feature_branch. "Requires Kiln Pro" gates the tool but does not guide selection relative to alternatives.
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 must carry behavioral disclosure. It usefully explains the checkpoint key, automatic consumption by detect_print_failure, and why resume_z_mm is more accurate, but it omits mutation semantics such as overwrite/idempotency, required active-job validation, permissions, and 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 purpose is front-loaded, and the Args block efficiently documents nine parameters. The resume-planner rationale is slightly expansive but still relevant to why the checkpoint exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 nine-parameter save tool with no annotations or output schema, the description covers purpose, downstream use, and every parameter. It leaves some operational gaps around overwrite behavior and failure modes, but is otherwise complete enough 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 must define all nine parameters. It lists every argument with units and defaults such as 'layer_number (0-based),' 'fan_speed_pct (0-100),' and 'flow_rate_pct default 100,' adding substantial meaning, though it does not mark optional versus required or validation 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 states a specific verb and resource, 'Save a checkpoint during an active print,' and ties it to downstream consumers such as detect_print_failure and the resume planner. It is distinguishable from sibling recovery tools because it records known-good state rather than analyzing or planning 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?
It clearly establishes the usage context: during an active print, to enable accurate resume. However, it does not explicitly say when not to use it or compare it directly to alternatives such as plan_failure_recovery or detect_print_failure.
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 | Default: false. | |
| set_default | No | Default: false. | |
| consent_to_store | No | Default: false. | |
| shipping_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the consent gate, states that overwrite replaces an existing profile, and explains that set_default changes the default profile. It does not describe the return value or what happens when consent_to_store is false, but the core mutation 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 core purpose is front-loaded in the first sentence, followed by a structured Args list. It is appropriately sized for a five-parameter tool with a nested object, though the docstring format adds slight 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 description covers the consent gate, overwrite behavior, default-profile behavior, and the shape of the nested address object. Given no output schema and no annotations, it could still say more about return values or failure behavior, but it is sufficient for correct 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 only 60%, and the nested shipping_address object has no property descriptions in the schema. The description compensates substantially by listing all required address keys, including the US-specific state field, giving name examples, and clarifying overwrite and set_default 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 states a specific verb and resource: 'Save a local shipping profile.' The word 'local' helps distinguish it from cloud-related tools. However, it does not explicitly distinguish the tool from siblings such as list_shipping_profiles, delete_shipping_profile, or validate_shipping_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 to use it 'after explicit user consent,' which is a clear usage condition. It does not explain when to choose this tool over related alternatives like validate_shipping_address or list_shipping_profiles, 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.
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 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 | Default: 256.0. | |
| max_y_mm | No | Default: 256.0. | |
| max_z_mm | No | Default: 256.0. | |
| file_path | Yes | ||
| printer_id | No | Default: "". | |
| output_path | No | Default: "". |
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 output_path defaults to overwriting the input (a genuine destructive consequence), that scaling is uniform/never upscales differently per axis, and what the response contains. It adds extra context about the inline 3D stage and automatic decimation of oversized meshes. It stops short of mentioning validation or 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?
The lead sentence and the 'when it helps' sentence are tight and front-loaded, but the :param block largely restates the schema and the stage paragraph is long relative to its decision value. Roughly a third of the text is duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so including a :returns: line listing original/new dimensions and scale factor is necessary and present. Overwrite semantics and the stage side effect are also covered. Only error/validation behavior is left unaddressed for a 6-parameter mutation 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 83%, but the description still adds real meaning the schema lacks: it explains that printer_id causes printer intelligence to supply the build volume (schema only says 'Default: ""'), and that output_path defaults to overwriting the input rather than merely being empty by default. That resolves two ambiguous 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 first sentence names a specific verb (auto-scale) and resource (mesh) with a clear constraint: fit a build volume while preserving aspect ratio. That distinguishes it reasonably well from siblings like split_mesh_to_fit (which cuts rather than scales), though it never names rescale_model, the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Useful when a model is too large for your printer" gives an implied trigger condition, but the description never states when NOT to use it or points to split_mesh_to_fit / rescale_model / force_print_oversize as alternatives. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_all_modelsARead-only
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 | Default: 1. | |
| sort | No | Default: "relevant". | |
| query | Yes | ||
| sources | No | ||
| per_page | No | Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: parallel multi-source execution and the MakerWorld quirk of returning only a search URL rather than model results, which an agent needs to interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then the important MakerWorld caveat, then return fields. The inline Args block partially duplicates the input schema, which is mild redundancy, but the rest is tight and 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?
With no output schema, the description responsibly documents the return shape (`source`, `is_free`, `has_printable_files`, `has_sliceable_files`) and the MakerWorld URL-only caveat. It stops short of pagination/interleaving behavior details, but is largely complete for an agent 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?
Schema coverage is only 60%, and the description compensates by documenting every parameter, notably the `sort` values ("relevant", "popular", "newest") which are absent from the schema (0 enums declared) and the `sources` restriction example. This adds 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?
States a specific verb (search) and resource (all connected 3D model marketplaces), and enumerates the four sources searched in parallel. It is clear what the tool does, though it never explicitly contrasts itself with the sibling `search_models` or `browse_models`, so an agent must infer the multi-marketplace scope is the differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tells the agent what to do next (use `model_details`, `model_files`, `download_model` with the returned id), which is useful routing guidance. However it gives no explicit when-to-use vs the sibling `search_models`, and no exclusions or prerequisites, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cached_modelsA
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).
The response declares its ``scope``: this cache is local to
this machine, so the count is what THIS install has cached,
not everything the user has ever downloaded or generated.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | Default: 20. | |
| 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 carries the full burden. It does add genuinely useful context that the count reflects only this machine's cache, but it omits read-only confirmation, ordering, pagination, and what an empty result means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The summary sentence is front-loaded and every argument line adds information. The Args block formatting is somewhat verbose for four optional parameters but contains 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?
With no output schema and no annotations, the description covers purpose, parameters, and result scope, which is the important part. It still leaves result shape, ranking, and pagination unstated for a tool whose entire value is the returned 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?
Schema coverage is only 25% (only limit is documented), so the description must compensate, and it does: it names which fields query matches, gives a source example, specifies tags are comma-separated, and restates the limit default. It stops short of clarifying multi-tag AND/OR semantics or whether filters combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource plus the searchable fields: "Search the local model cache by name, source, tags, or prompt text." It does not differentiate from close siblings such as list_cached_models, search_models, or search_all_models, so an agent must infer the distinction from the word "local".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase "local model cache" and the trailing scope note. There is no explicit when-to-use versus list_cached_models (enumerate everything) or search_models/search_all_models (search the wider catalog).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_design_templatesB
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 | Default: 10. | |
| category_filter | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does disclose useful behavior beyond the schema: fuzzy keyword matching, relevance ranking, and the return structure with match fields. However, it does not explicitly state that the operation is read-only, whether it has any side effects, or whether permissions or rate limits apply.
Agents need to know what a tool does to the world before calling 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 matching behavior, then lists parameters and return shape efficiently. The reStructuredText parameter block is slightly verbose but each part contributes useful 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?
Because there is no output schema, the description appropriately explains the return dictionary and match fields. It is mostly complete for a three-parameter search tool, though it could better clarify relation to sibling template-listing tools and explicitly confirm read-only 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 covers 67% of parameters, and the description adds helpful semantics, including natural-language query examples and the optional category-filter example. It also clarifies max_results as a maximum and gives the default, improving on the schema's sparse 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 a specific verb and resource: searching the template library by natural-language description, with fuzzy matching across IDs, descriptions, categories, and tags. It does not explicitly differentiate this from sibling tools such as find_design_templates or list_design_templates_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 explains what the tool does but gives no guidance on when to use it instead of sibling template tools like find_design_templates or list_design_templates_catalog. It does not state exclusions or conditions for choosing natural-language search over catalog listing.
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, plus a
``scope`` block saying which store was searched and
whether the user's cloud-side versions were included. A
miss here is only a miss in the stores ``scope`` names.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 10. | |
| query | 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 reasonably well: it discloses the local store scanned, case-insensitive matching, result ordering (newest first), and the scope block reporting whether cloud-side versions were included. It stops short of explicitly declaring read-only semantics or any limits beyond the result cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then organized into Args and Returns blocks. Slightly verbose prose in the intro but every section carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description documents the return shape (list of matching version records, newest first, plus scope block), which is the key missing piece otherwise. Combined with the store location and matching rules, an agent has enough 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?
Schema coverage is 50% and the description compensates well: query is clarified as a literal substring rather than regex, and limit is described as the maximum results with default 10. This adds genuine 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?
States a specific verb (search) and resource (design versions) plus the fields searched (prompt, notes, name) and the storage location (~/.kiln/designs/). It does not explicitly contrast itself with the sibling list_design_versions, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Args' and 'Returns' sections imply usage (use for substring lookup across versions), and the closing note that a miss is only a miss for the named scope is useful. However, it never states when to use this versus list_design_versions or compare_design_versions, and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_modelsARead-only
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 | Default: 1. | |
| sort | No | Default: "relevant". | |
| query | Yes | ||
| per_page | No | Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds value beyond them by describing the return shape (model summaries with name, creator, thumbnail, download/like counts). It doesn't discuss rate limits or pagination limits on the source, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then structures params and returns in a scannable Args/Returns block. It is slightly verbose in docstring style, but every sentence carries useful 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?
With no output schema, the description correctly carries the return-value burden and explains what a result contains plus how to drill down. Missing only edge-case behavior (empty results, pagination boundaries) for a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning the schema lacks: a concrete query example, the per_page max of 100 (schema only lists the default), and the enumerated sort values ("relevant", "popular", "newest", "makes") that the schema leaves undocumented. Strong compensation for 75% 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?
States a specific verb (Search) and resource (Thingiverse 3D-printable models), making the scope clear — notably that it queries an external marketplace. It does not explicitly distinguish itself from siblings like search_all_models or browse_models, but the Thingiverse scoping does a lot of implicit work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow context by naming the follow-up tools: use model_details with the id for full info and model_files for downloadable files. It lacks when-not-to-use guidance (e.g., versus search_all_models or search_cached_models), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
segment_mesh_regionsC
Split a mesh into paintable surface regions and show them.
| Name | Required | Description | Default |
|---|---|---|---|
| crease_deg | No | ||
| input_path | Yes | ||
| max_regions | No | ||
| partition_hash | No | Default: "". | |
| include_face_map | No | Default: false. | |
| min_region_area_frac | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a mesh-processing operation and visualization, but does not disclose side effects, whether the input is modified, permission requirements, determinism, or what 'show' means in practice.
Agents need to know what a tool does to the world before calling 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 filler. It is efficient, though its extreme brevity leaves important details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six-parameter mesh operation with no annotations, no output schema, and sparse schema descriptions, this one-sentence description is inadequate. It does not explain parameter effects, return behavior, or how the regions are shown.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% across six parameters, and the description adds no parameter meaning at all. Terms like crease_deg, max_regions, partition_hash, include_face_map, and min_region_area_frac remain unexplained despite the low 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 uses a specific verb and resource: 'Split a mesh into paintable surface regions and show them.' This clearly indicates a segmentation operation distinct from painting or region coloring tools, though it does not explicitly name sibling 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?
It gives no guidance on when to use this tool versus alternatives such as paint_mesh_regions, auto_color_by_region, or other mesh-analysis tools. No prerequisites, exclusions, or workflow context are provided.
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 | 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 behavioral burden and does so well. It discloses key behavior beyond the schema: no temperature argument is accepted, limits are curated and enforced by Kiln, the declaration is local-only, never uploaded or pooled, and is ignored on hosted multi-tenant deployments. It also warns that Kiln cannot remotely verify hardware.
Agents need to know what a tool does to the world before calling 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 is organized into paragraphs covering rationale, prerequisites, privacy, and parameters. It is somewhat long, but each section adds useful context; only minor tightening would 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?
For a two-parameter declaration tool with no annotations and no output schema, the description is complete on purpose, usage, prerequisites, privacy, and parameter meaning. It does not describe error behavior if an invalid variant is supplied, which is a 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?
Schema description coverage is only 50%, but the description compensates by documenting both parameters in an Args section. It explains that `variant_id` comes from `list_printer_variants` and that an empty string reverts to the as-shipped profile, and it gives an example value for `printer_model`. It could still specify printer-model identifier format or validation constraints more explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'Declare which curated hardware variant your machine actually is.' It clearly distinguishes this declaration tool from the sibling catalog lookup 'list_printer_variants' by explaining that Kiln supplies the verified limit rather than the operator typing one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: use this when an operator has a modified printer and wants an accurate ceiling without supplying a temperature. It states a concrete prerequisite ('Check `requires` on the variant first') and explains that selecting the variant asserts both the hardware part and any required firmware change. It also covers the revert case by saying to pass an empty string to return to the as-shipped profile.
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.
Raw G-code has no general read-back, so ``outcome`` here is
``"accepted"`` whenever the command was sent: the printer took the
bytes, and whether it EXECUTED them is not reported. Observe the
printer (``printer_status()``, or the machine itself) before building
on a G-code send. ``"failed"`` means the transport refused it.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Default: false. | |
| commands | 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 sequential execution order, pre-send validation, temperature/firmware blocking rules, dry-run behavior (validation runs, commands not sent, returns what would have been sent), and the critical caveat that `outcome: accepted` only means transport acceptance, not execution. This is the kind of context that prevents an agent from building on a false success signal.
Agents need to know what a tool does to the world before calling 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 follows a logical Args → behavior → validation → outcome-semantics structure. It is on the longer side, but nearly every sentence adds operational meaning; only minor tightening would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a two-parameter mutation tool with no annotations and no output schema, the description covers everything an agent needs: format, examples, connection precondition, validation/blocking behavior, dry-run semantics, and return-value caveats. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (`commands` has no schema description, `dry_run` merely says default false), so the description must compensate and does: it explains that `commands` accepts one or more commands separated by newlines or spaces and gives concrete examples, while `dry_run` is explained as running the full validation pipeline without sending and returning the would-be payload.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb and resource ('send raw G-code commands directly to the printer'), and the description distinguishes this from the sibling `validate_gcode` by naming it as the preview-only alternative. An agent can tell exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition (printer must be connected unless `dry_run` is true) and explicitly routes agents to `validate_gcode` when they want to preview allowed commands without sending. The `dry_run` alternative is explained in enough detail to select it deliberately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
separate_overlapping_partsC
Separate parts that share material, so they print as a kit. Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=separate_overlapping_parts
INLINE 3D STAGE: on success this tool 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 | No | Default: "". | |
| nozzle_mm | No | ||
| trim_side | No | ||
| output_dir | No | Default: "". | |
| part_names | No | ||
| part_paths | Yes | ||
| include_fusions | No | Default: false. | |
| max_loss_fraction | No | Default: 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry real behavioral content: it discloses that the tool opens an inline 3D stage panel, that oversized meshes are auto-decimated for that stage, and that Kiln Pro is required. It omits whether the source design is mutated or new part files are written, and what happens on failure or partial separation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The inline-3D-stage behavior is explained twice in near-identical wording, and a subscription upsell with a tracking URL consumes roughly a third of the text. Two of the three paragraphs do not help an agent decide or invoke anything.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 geometry-mutating tool with eight parameters, no annotations, and no output schema, the description should explain what the result is (separate part files? kit manifest?) and the paywall gate's effect on invocation. Instead it spends its budget on repeated viewer marketing, leaving the actual contract underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Eight parameters at 50% schema coverage, and even the covered ones are placeholder strings like 'Default: ""'. The description never mentions part_paths, part_names, trim_side, include_fusions, or max_loss_fraction, so it does nothing to compensate for the thin schema on a non-trivial mesh operation.
Input schemas describe structure but not intent. Descriptions should explain non-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 clause states a specific verb and resource — 'Separate parts that share material, so they print as a kit' — which is concrete and actionable. It does not, however, distinguish itself from closely related siblings such as split_mesh_by_component, split_mesh_to_fit, or plan_kit_plates, all of which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, no prerequisites beyond the paywall note, and no exclusions. The only contextual cue is the phrase 'so they print as a kit', which only implies intent rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_approval_gateC
Create or update an approval gate on a target branch.
Kiln Business would open the change for team review, apply your approval gates, and record who signed off. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=set_approval_gate
| Name | Required | Description | Default |
|---|---|---|---|
| created_by | Yes | ||
| path_rules | No | ||
| artifact_id | Yes | ||
| branch_name | Yes | ||
| artifact_type | Yes | ||
| required_role | No | Default: "". | |
| required_count | Yes | ||
| required_team_id | No | Default: "". | |
| allow_unsatisfiable | No | Default: false. | |
| block_changes_requested | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden, and it discloses little: it never says whether an existing gate is replaced or merged, whether path_rules are overwritten, whether the call is idempotent, or what permissions created_by implies. The only real disclosure is the plan-tier requirement and the marketing sentence about team review and sign-off, which is promotional rather than operational.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one clean sentence, but the second sentence is promotional copy and the pricing/upgrade URL consumes space without helping invocation. The 'Requires Kiln Business' line does earn 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 10-parameter mutation with no annotations, no output schema, and only 40% schema description coverage, the description leaves an agent unable to call it correctly — key policy parameters and the update-vs-replace semantics are unexplained. It is adequate only for knowing the tool exists, not for using 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 coverage is 40% across 10 parameters, so the description must compensate and it does not — required_count, required_role, required_team_id, path_rules, allow_unsatisfiable and block_changes_requested are never explained. The only schema descriptions present are bare defaults, leaving the meaning of 'unsatisfiable' and path-rule syntax entirely opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create/update an approval gate) plus the scoping target (a branch), and the upsert nature is clear. It does not distinguish itself from siblings like remove_approval_gate or list_approval_gates, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one real precondition (Requires Kiln Business), which is genuinely useful for plan-gated routing. However there is no guidance on when to use this versus remove_approval_gate, list_approval_gates, or evaluate_pr_approval, and no mention of what state must exist first.
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.
``percent`` has no default on purpose. Measured 2026-09-18 on an A1:
a call meant to turn the fan OFF reached Kiln with no ``percent`` at
all (the caller's own argument name had been dropped before the
request arrived), the old default of 100 ran the fan flat out, and
the answer confirmed it. A setpoint the caller did not send is
refused, never guessed.
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 (a known limitation of Prusa Link
itself). An Elegoo machine with no part-cooling fan is 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. Required.
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.
Branch on ``outcome`` — one field, three values, the same shape
``start_print`` uses for ``print_start``:
- ``"confirmed"``: the printer, in a report AFTER the command, shows the
effect. For a Bambu, that fan's reported level matches.
- ``"accepted"``: the command was sent and not refused, and the printer
has not shown the effect yet. Normal on a quiet printer. Read
``printer_status()`` before building on it.
- ``"failed"``: the printer's interface refused the command.
``accepted`` (the boolean) keeps its old meaning: sent, not refused. It
is never proof the printer acted. ``success`` is ``False`` only for
``"failed"``.
| Name | Required | Description | Default |
|---|---|---|---|
| node | No | Default: "part". | |
| percent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the entire behavioral burden and does so: it states that an unsent percent is refused rather than guessed, that thermal management may override a manual setpoint, which hardware silently ignores a chamber command, and it fully documents the return contract ('confirmed'/'accepted'/'failed', the legacy `accepted` boolean, and that `success` is False only for 'failed').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and parameter semantics are front-loaded and the sections are easy to scan, but the 2026-09-18 incident narrative is longer than needed to convey 'always send percent explicitly', and the distinction between the 'accepted' outcome string and the legacy `accepted` boolean takes re-reading. Mostly earning its place, with some trimming 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?
For a mutation tool with no annotations and no output schema, the description covers everything an agent needs: platform support matrix, silent-no-op conditions, parameter semantics, refusal behavior, and the full outcome/return contract. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and percent has no schema description or bounds, so the description must compensate — and it does: node values 'part'/'aux'/'chamber' are defined along with their platform availability and default, and percent is bounded (0-100, 0=off, 100=full) and marked required. This adds meaning well 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 gives a specific verb and resource ('Set the speed of a printer fan') that is unambiguous against siblings like set_speed_percent or set_temperature. The rest of the description sharpens the scope further by enumerating which fans exist and on which printers, so an agent can identify the tool immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when-to-use guidance is present ('add cooling for bridges and overhangs (part fan)', 'pull heat with the auxiliary fan or run the chamber/exhaust fan for materials like ABS/ASA') plus concrete when-not cases (Prusa Link has no raw G-code endpoint; open-frame models make a chamber command a no-op; Elegoo without a part-cooling fan is refused). It stops short of naming a sibling alternative for any overlapping need, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_leveling_policyB
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 | Default: true. | |
| max_hours | No | Default: 48.0. | |
| max_prints | No | Default: 10. | |
| printer_name | No | ||
| gcode_command | No | Default: "G29". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond field names. It does not say whether the policy persists across power cycles, whether it applies immediately or only to future prints, what happens to the current policy on partial updates, or what a caller sees on 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?
Purpose is front-loaded in one clean sentence, which is good. But the Args block largely restates schema descriptions for enabled, max_prints and max_hours (their defaults are already in the schema), so roughly half the text does not earn 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 five-parameter, all-optional configuration mutation with no annotations and no output schema, the description covers purpose and fields but leaves out scope and effect — whether the policy is per-printer or fleet-wide, when it takes effect, and what the return value indicates. Adequate to call, thin for calling 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 80%, yet the description still adds real meaning: it names the accepted G-code values (G29 or BED_MESH_CALIBRATE) where the schema only declares a string default of "G29", and it explains that printer_name can be omitted to target the default printer with no schema description for that property. It also clarifies the semantics of max_prints/max_hours as leveling triggers.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource: configure an automatic bed leveling policy for a printer. It is unambiguous about what is being set. However, it never distinguishes itself from the closely related siblings bed_level_status (read current level state) and trigger_bed_level (run a level now), so the agent must infer that this tool is the persistent-policy setter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'Configure' — an agent can guess this is the durable-policy call rather than an on-demand leveling call. There is no explicit when-to-use, no exclusion against trigger_bed_level, and no note that all parameters are optional and defaults apply when omitted.
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 (see ``list_spools``).
Linking one is what lets Kiln count that spool down as this
printer prints from it.
tool_index: Extruder index for multi-tool printers (default 0). On
a printer with a multi-material unit, the tray's id as
``ams_status`` reports it.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | ||
| material | Yes | ||
| spool_id | No | ||
| tool_index | No | Default: 0. | |
| printer_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden and does so well: it discloses that the write is a claim, that nothing verifies the spool, that stale values persist after a filament swap, and that provenance is stamped as determined_by: user_reported. It also explains the side effect that linking a spool_id enables spool countdown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line and the caveat paragraph earns its space by preventing a real misreporting error. Slightly verbose in places ('Kiln stamps it determined_by: user_reported and every reader says so'), but no sentence is 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 5-param mutation tool with no annotations and no output schema, the description covers purpose, provenance behavior, staleness, and every parameter. Missing only error/permission behavior (e.g., unknown printer_name, overwrite semantics on repeat calls), which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 20% (just tool_index's default), yet the description documents all five parameters with meaning beyond the schema: material examples (PLA, PETG, ABS), optionality of color and spool_id, the functional consequence of spool_id, and tool_index as an AMS tray id. This fully compensates 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?
States a concrete verb and resource (record loaded filament material for a printer) and adds the crucial qualification that this is an unverified, user-reported claim rather than a sensed value. An agent cannot confuse this with a measurement or status-reading tool after reading 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?
Gives a clear operational rule ('never report the recorded material back as confirmed or sensed') and cross-references list_spools for spool IDs and ams_status for tray ids. It does not, however, distinguish this from sibling mutation tools like load_filament, unload_filament, or record_filament_colour, so alternatives remain unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_nozzle_stateC
Record a user-entered nozzle state for a printer.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | ||
| printer_id | Yes | ||
| diameter_mm | No | ||
| install_date | No | ||
| grams_through | No | ||
| printer_reading | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and "user-entered" is the only real disclosure (the value comes from the user, not a sensor reading). It says nothing about whether this overwrites an existing recorded state, required permissions, or validation of the supplied state. For a mutation tool with zero annotation coverage this 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?
A single, front-loaded sentence with no filler or repetition. It is efficient, though its brevity reflects under-specification rather than disciplined trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A write tool with no annotations, no output schema, six undocumented parameters, and a nested object leaves too much unspecified. The description would need to cover write semantics, parameter expectations, and at least a basic when-to-use context to be 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% across 6 parameters, including a free-form nested printer_reading object, so the schema provides no field-level meaning. The description hints only that the parameters collectively form a "nozzle state" for a printer, adding no units, formats, or guidance for material, diameter_mm, install_date, or grams_through.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ("Record") with a specific resource ("nozzle state for a printer"), which lets an agent distinguish it from read-side siblings like get_nozzle_state and list_nozzle_states. It stops short of naming or contrasting any sibling explicitly, so it is clear but not fully 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?
There is no statement of when to use this tool versus get_nozzle_state, list_nozzle_states, or auto_detect_nozzle, and no prerequisites or exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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"``.
Required: a call that arrives without it is refused rather
than turned on (the same rule as ``set_fan``'s ``percent``).
Use this to improve camera visibility, signal print completion
(flashing), or turn lights off for overnight prints.
Branch on ``outcome`` — one field, three values, the same shape
``start_print`` uses for ``print_start``:
- ``"confirmed"``: the printer, in a report AFTER the command, shows the
effect. For a Bambu, the light report lists that node in that mode.
- ``"accepted"``: the command was sent and not refused, and the printer
has not shown the effect yet. Normal on a quiet printer. Read
``printer_status()`` before building on it.
- ``"failed"``: the printer's interface refused the command.
``accepted`` (the boolean) keeps its old meaning: sent, not refused. It
is never proof the printer acted. ``success`` is ``False`` only for
``"failed"``.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| node | No | Default: "chamber_light". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it states the Bambu-only restriction, explains that a missing mode is refused, and defines the three possible outcomes. It also clarifies that accepted means sent but not proof of action, and that success is false only for failed, which are important operational semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, and the structured Args and outcome sections make it easy to scan. It is somewhat long because of the outcome branching detail, but most of that detail is necessary and 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 two-parameter mutation tool with no output schema, the description covers the printer compatibility restriction, parameter meanings, required-mode behavior, and return outcome semantics. An agent has enough information to call it correctly and 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?
Schema coverage is only 50%, but the description fully compensates by defining the permitted node values, their meanings, and the default, as well as the mode values and the consequence of omitting mode. This adds substantial meaning beyond the bare string 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 a specific verb and resource: controlling the printer's LED lights, restricted to Bambu Lab printers. It clearly identifies the two controllable nodes and the three modes, so an agent can distinguish this from general printer-control 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?
It gives clear usage contexts: improving camera visibility, signalling print completion, and turning lights off overnight. It does not explicitly state when not to use it or name alternative tools, so it falls short of full 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.
set_printer_modelA
Tell Kiln which printer model a saved printer is -- by name, or from a slicer file.
Kiln checks every print against the bed it will land on and the
temperatures the machine can take, and slices with the model's own
profile. All three are read from the printer's model. With no model
set, those checks are SKIPPED. Use this as soon as ``kiln_health`` or a
log says the model is not configured.
Two ways to say it -- give exactly one:
* ``printer_model``: any name the catalogue recognises (``"Bambu Lab
A1"``, ``"bambu_a1"``, ``"MK4"``, ``"K1 Max"``).
* ``slicer_file``: a project the user saved from Bambu Studio,
OrcaSlicer or PrusaSlicer (File > Save Project), or a printer
settings file exported from one. It already names the printer it
was set up for. Ask a new user for one instead of asking them to
look up a model key.
A printer that is NOT in Kiln's catalogue can still be set up, but only
from a slicer file: the file states its bed, which is the one fact Kiln
cannot do without. Kiln then saves the printer on this machine with
that bed and its own generic limits (never a limit read from the file),
lays slices out on that bed and measures designs against it. It has no
tuned profile for such a printer and will not move its head. A name
alone for a printer outside the catalogue is refused (``UNKNOWN_MODEL``,
with the closest matches); ask for the slicer file.
Args:
printer_model: The model, in any spelling the catalogue knows.
slicer_file: Path to a saved slicer project or exported settings.
printer_name: The saved printer to set. Omit for the active one.
replace: Allow changing a printer that already has a different
model, or taking a newer file's bed for a printer set up from
an earlier file. Off by default: the model decides the limits
Kiln checks against, so a wrong one is worse than none.
Returns ``applied`` (whether anything changed), the ``printer``, its
``printer_model`` and ``in_catalogue``, and a ``message`` to relay.
From a slicer file it also returns ``file`` -- the printer, bed, nozzle
size and material the file states -- and ``notes`` where the file's bed
or nozzle differs from what Kiln holds. The notes change nothing:
relay them, and if the file's nozzle is the one fitted, record it.
Nothing is written for a model that does not suit the printer's
connection, or over another model unless ``replace`` is set. Limits an
owner typed for a printer are never written over.
| Name | Required | Description | Default |
|---|---|---|---|
| replace | No | Default: false. | |
| slicer_file | No | ||
| printer_name | No | ||
| 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 behavioral burden and does so: it warns that checks are SKIPPED without a model, explains what happens for out-of-catalogue printers, names the UNKNOWN_MODEL refusal, and states that owner-typed limits are never overwritten and nothing is written unless replace is set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but front-loaded with the purpose and organized with bullets for the mutually exclusive inputs. A few passages repeat the catalogue-versus-file distinction, but almost every sentence adds operational value for a tool with this much conditional 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?
No output schema exists, so the description documents returns itself: applied, printer, printer_model, in_catalogue, message, plus file and notes from a slicer file, and how to relay notes. Error and edge-case behavior is also covered, leaving no obvious 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 only 25%, and the description compensates for every parameter: printer_model accepts any spelling with concrete examples, slicer_file names the source applications and file types, printer_name defaults to the active printer, and replace's exact semantics and default are spelled out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Tell Kiln which printer model a saved printer is") with the two accepted input forms. It is clearly distinct from sibling tools like register_printer, list_printer_variants or select_printer_variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 act: "Use this as soon as kiln_health or a log says the model is not configured." It also gives alternatives and routing advice — ask a new user for a slicer file rather than a model key, and use the slicer file when the printer is outside the catalogue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_speed_percentB
Set printer speed to a custom percentage (Pro feature).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=set_speed_percent
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| percent | Yes | ||
| run_actions | No | Default: "". | |
| printer_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does an unusually good job: it discloses the Pro licensing requirement and the two-phase plan-then-execute behavior ('first answers with the actions it wants and why, and runs nothing; call it again with run_actions'). It omits reversibility and permission details beyond Pro, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is correctly front-loaded, but several sentences are marketing copy ('calibration that learns your printer, mid-print edits, and unlimited textures and decorations') plus an upgrade URL, none of which help an agent invoke the tool. The run_actions paragraph is long but the only genuinely load-bearing part.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the two-phase protocol disclosure is valuable, but the definition still leaves key gaps: percent units/range and the meaning of printer_name, plus any indication of what happens to the currently active speed profile.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% – only run_actions has any schema text, and printer_name is undocumented. The description adds nothing about percent's allowed range, units, or defaults beyond the word 'percentage', so it fails to compensate 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 first sentence gives a specific verb and resource ('Set printer speed to a custom percentage'), which is clear. However, it doesn't differentiate from close siblings like set_speed_profile, run_speed_schedule, or set_speed_schedule, leaving the agent to guess which speed tool 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?
It states the gating condition (Kiln Pro required) and describes the two-call invocation protocol, which is useful. But it never says when to use this versus set_speed_profile or a speed schedule, so alternative selection is left implicit.
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 print speed: a preset by name, or a percentage of the sliced speed.
One door for both ways a printer takes a speed. Give exactly one of:
Args:
profile: A preset — ``"silent"`` (50%), ``"standard"`` (100%),
``"sport"`` (124%) or ``"ludicrous"`` (166%). Bambu Lab
printers only; sport and ludicrous raise the nozzle
temperature to keep up with the flow.
percent: The speed as a percentage of the speed the file was
sliced at — the feedrate override every FDM firmware has (100
is the sliced speed; 10 to 300 is accepted). A Bambu takes
only its four presets, so the nearest one is set and the
answer says which (``preset``, ``percent_actual``).
printer_name: Which printer. Omit for the default printer.
Nothing here judges whether a speed suits THIS printer or THIS layer:
Kiln's served ``set_speed_percent`` and ``set_speed_schedule`` do that
and hand the checked value here. Use ``printer_status()`` to see the
current speed profile in ``printer.speed_profile``.
Branch on ``outcome`` — one field, three values, the same shape
``start_print`` uses for ``print_start``:
- ``"confirmed"``: the printer, in a report AFTER the command, shows the
effect. For a Bambu, the reported speed level moved.
- ``"accepted"``: the command was sent and not refused, and the printer
has not shown the effect yet. Normal on a quiet printer. Read
``printer_status()`` before building on it.
- ``"failed"``: the printer's interface refused the command.
``accepted`` (the boolean) keeps its old meaning: sent, not refused. It
is never proof the printer acted. ``success`` is ``False`` only for
``"failed"``.
| Name | Required | Description | Default |
|---|---|---|---|
| percent | No | ||
| profile | No | ||
| printer_name | 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: Bambu-only restriction, the nozzle-temperature side effect of sport/ludicrous, the accepted 10–300 range, the nearest-preset coercion on Bambu together with the returned preset/percent_actual, and precise definitions of outcome (confirmed/accepted/failed) and success. It even warns that the legacy `accepted` boolean is never proof the printer acted — exactly the kind of context annotations would otherwise 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?
Front-loaded with the one-line summary, then an equality rule, then per-argument blocks and an outcome breakdown — good structure for a long description. It is on the verbose side, though: the paragraph reconciling `accepted` the boolean with `"accepted"` the outcome value is necessary but could be tightened, and a few phrases restate the same exclusivity point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 annotations, no output schema, and 0% schema coverage mean the description must supply parameters, return semantics, and safety context — it supplies all three, including the three-valued outcome contract and its relationship to success. An agent has everything needed to call this correctly 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?
Schema coverage is 0%, so this had to compensate, and it does: profile's four values are enumerated with their percentages and a hardware caveat, percent is defined semantically with its valid range and what 100 means, and printer_name is documented with the omit-for-default rule. Every one of the three parameters is fully usable from the description 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?
A specific verb and resource — 'Set the print speed' — followed immediately by the two supported modes (named preset or percent of sliced speed). It also positions itself against the crowded speed siblings by naming set_speed_percent and set_speed_schedule as the adjudicators that feed checked values here, so an agent can tell the tools apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Give exactly one of' establishes the exclusivity rule, and the paragraph beginning 'Nothing here judges whether a speed suits THIS printer' explicitly routes suitability/scheduling decisions to set_speed_percent and set_speed_schedule, and current-state lookups to printer_status(). The Bambu-only caveat and preset-snapping behavior tell the agent when the percent path will be silently adjusted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_speed_scheduleC
Set layer-based speed schedule with automatic adjustments (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=set_speed_schedule
This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule | Yes | ||
| run_actions | No | Default: "". | |
| printer_name | 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 add one valuable behavioral fact that the schema only hints at: the tool runs nothing on first call and returns proposed actions, then executes on a second call with run_actions set to the returned digest. However, it does not say whether an existing schedule is replaced or merged, what permissions or Pro entitlement checks occur beyond 'Requires Kiln Pro', or what the first-call response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose statement is front-loaded and the execution-protocol paragraph earns its place, but the middle block is marketing prose (feature list, 'Requires Kiln Pro', upgrade URL) that costs tokens without helping an agent invoke the tool. Roughly half the text is non-operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 undocumented required array of schedule entries, no annotations, and no output schema, the description should specify the schedule item shape and the preview-response format. It covers the Pro gating and the confirmation handshake but leaves the core input structure and the returned action digest format unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% and the lone documented parameter (run_actions) is described merely as 'Default: ""'. The required `schedule` parameter is an array with an empty item schema, and the description says nothing about the expected item structure, ordering, or layer/height units, nor does it mention printer_name at all.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource: setting a layer-based speed schedule with automatic adjustments. It is clear what the tool does, but it never distinguishes itself from close siblings such as set_speed_profile, run_speed_schedule, set_speed_percent, or fleet_set_speed, leaving the agent to guess which one applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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-phase execution protocol but gives no guidance on when to choose this tool over its speed-related siblings. The rest of the text is upsell copy and a pricing URL, which does not help the agent decide applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_telemetry_preferenceC
Set the opt-out / acknowledged state for a telemetry category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| opted_out | No | Default: false. | |
| acknowledge | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It reveals the two state dimensions (opt-out and acknowledge) but says nothing about permissions, reversibility, valid categories, or side effects of toggling telemetry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Efficient, though brevity here borders on under-specification for a mutation 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?
A mutation tool with no annotations, no output schema, and partial parameter coverage needs more than one sentence. Nothing explains valid category values, the effect of acknowledge vs opted_out, or the resulting state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the two booleans carry default descriptions, and the description maps its 'opt-out / acknowledged' phrasing onto opted_out and acknowledge. The required 'category' parameter remains undocumented in both places, but overall the description adds only marginal 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?
States a specific verb (Set) and resource (opt-out/acknowledged state for a telemetry category), which is enough to distinguish it from the sibling get_telemetry_preferences. It stops short of naming that sibling or fully clarifying what a 'state' toggle 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?
No indication of when to use this tool versus get_telemetry_preferences, no prerequisites (auth/consent), and no note that category is required. The agent must infer all usage context.
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 generic floor (the least capable
machine Kiln describes) rather than to the default printer's,
which may be the more permissive of the two. When that floor
refuses a temperature, the fix is a model, not a number: set
``printer_model`` to a printer Kiln knows, or find the maker's
limits and have the person confirm them (``add_safety_profile``).
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.
Branch on ``outcome`` — one field, three values, the same shape
``start_print`` uses for ``print_start``:
- ``"confirmed"``: the printer, in a report AFTER the command, shows the
effect. Reported per heater under ``tool`` and ``bed``.
- ``"accepted"``: the command was sent and not refused, and the printer
has not shown the effect yet. Normal on a quiet printer. Read
``printer_status()`` before building on it.
- ``"failed"``: the printer's interface refused the command.
``accepted`` (the boolean) keeps its old meaning: sent, not refused. It
is never proof the printer acted. ``success`` is ``False`` only for
``"failed"``.
| 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 behavioral burden and does so well. It explains the safety ceiling behavior for named printers, the three outcome values, the meaning of accepted versus confirmed, and that success is false only for failed.
Agents need to know what a tool does to the world before calling 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 action and uses an Args section that is easy to scan. The printer_name paragraph is somewhat verbose and includes narrative asides that could be tightened, but the information is relevant to safe invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 three-parameter mutation tool with no annotations and no output schema, the description is complete. It covers all parameters, mutation behavior, safety constraints, and return-outcome interpretation without requiring the agent to infer missing semantics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 three parameters, and it does. tool_temp and bed_temp are fully explained with units, off semantics, and unchanged semantics, while printer_name covers default behavior and safety-ceiling implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: setting the target temperature for the hotend and/or heated bed. It distinguishes the two heater targets and makes the scope explicit enough that an agent can identify exactly what the tool changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 operational constraints: at least one of tool_temp or bed_temp must be supplied, 0 turns a heater off, and null/omitted leaves it unchanged. It also provides material temperature examples and explains the printer_name default, though it does not explicitly compare this tool to a sibling alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_branch_historyB
List the commits on a single branch, newest-first — the text-mode companion to visualize_branch_tree.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=show_branch_history
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 50. | |
| design_id | Yes | ||
| branch_name | Yes | ||
| annotate_outcomes | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It usefully discloses newest-first ordering, single-branch scope, text-mode behavior, and a Kiln Pro requirement, but it does not explicitly confirm read-only behavior, pagination behavior, or what a returned commit entry contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful purpose statement is front-loaded, which is good. However, two of the four sentences are promotional or subscription-related boilerplate ("Kiln Pro would preserve this version..." and the upgrade URL), which do not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic operation, ordering, scope, and plan gating. But with no annotations, no output schema, two undocumented required parameters, and no explanation of limit or annotate_outcomes, it does not provide enough context for an agent to understand the full contract of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any of the four parameters. The schema has only terse descriptions for limit and annotate_outcomes (defaults only) and none for the required design_id and branch_name, so the description leaves both required parameter formats and the meaning of annotate_outcomes unexplained despite only 50% 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 first sentence states a specific verb and resource ("List the commits on a single branch"), adds ordering ("newest-first"), and explicitly distinguishes it as the "text-mode companion to visualize_branch_tree." An agent can identify the tool's purpose without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names visualize_branch_tree as a visual alternative, implying this tool is for textual branch history. However, it does not say when to choose this over sibling tools such as list_design_branches, compare_branches, show_reflog, or show_design_lineage, and gives no explicit exclusions beyond the Kiln Pro requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_design_lineageC
Show the full lineage of a design as a Mermaid flowchart TD with outcomes emphasized.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=show_design_lineage
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | Yes | ||
| max_commits | No | Default: 50. | |
| annotate_outcomes | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does usefully disclose the return format (Mermaid flowchart TD, with outcomes emphasized) and the Kiln Pro entitlement gate, but omits whether the operation is read-only, what happens at the max_commits boundary, and any auth or rate-limit 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?
Only the first sentence serves the tool; the remaining three are upsell boilerplate ('would preserve this version so you can branch, restyle...', 'Requires Kiln Pro', an upgrade URL) that pads the definition without helping the agent invoke it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A three-parameter tool with no annotations and no output schema needs the description to cover read-only semantics, param meaning, and alternatives; instead roughly half the text is marketing. An agent still cannot tell what artifact_id expects or what limits apply.
Complex tools with many parameters or behaviors need more documentation. 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 never mentions any of the three parameters. With schema coverage at 67%, artifact_id is undocumented in both schema and description, and max_commits/annotate_outcomes only get one-word defaults from the schema; the description adds nothing about lineage depth or outcome annotation meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (show the lineage of a design) and specifies the output artifact (a Mermaid ``flowchart TD``) with outcomes emphasized. That is concrete enough to separate it from generic readers, though it does not name which sibling (e.g. get_design_ancestry, show_branch_history, visualize_branch_tree) it replaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this over get_design_ancestry, show_branch_history, or visualize_branch_tree, all of which appear to cover adjacent territory. The only stated condition is the paywall ('Requires Kiln Pro'), not the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_on_stageARead-only
Open Kiln's interactive 3D stage on a file that already exists.
The door for "let me see it" when nothing needs making: a mesh
from an earlier session, a download, or the sliced print file
about to go to the printer. Nothing is re-made, re-sliced,
imported or written. Free on every install, like the stage.
What the stage draws (``shows`` says which, in words):
- An STL, OBJ or 3MF is drawn as itself; a STEP file is drawn
from Kiln's mesh of it.
- A sliced ``.gcode.3mf`` is drawn as the model it carries — the
file going to the printer, in its paint — with the slicer's
skirt, brim, prime tower and supports under EXTRAS while this
machine still holds that slice's G-code.
- A print file with no model of its own (raw G-code, or an
archive holding only Kiln's 1 mm placeholder) is drawn as the
mesh this machine sliced it from, and refused, with the
reason, when there is no record of that mesh.
Before a print: open the print file here, let the person turn it
over, then call ``issue_preview_token(file_path, door="stage")``
for that same file — the panel's own fetch is the evidence the
gate reads. On a host that draws no panel, or until a panel has
fetched since the server started, the result also carries
``viewer_url``: hand it over, and use ``door="url"``. ``shown``
says which door this result took.
``visualize_model`` is the still-picture door: renders to check
yourself, and the sign-off only when neither this panel nor a
link is possible.
A slice result that opened the stage has already drawn its print,
from the mesh the slicer was handed, and the print gate counts
that panel's fetch for the print file the slice wrote. Called on
that print file right after, this draws the same slice again,
from the model the file carries. ``shown.repeat`` says when the
panel just above already shows what this one draws.
:param file_path: Path to an STL, OBJ, 3MF, STEP, ``.gcode.3mf``
or G-code file on this machine.
:returns: ``stage_mesh_path`` (the file the stage draws),
``shows`` and ``message``, plus ``came_from`` for a file a
generator or a marketplace download brought in; the stage
adds ``artifact``, ``shown`` and, when the link is the
stage, ``viewer_url``.INLINE 3D STAGE: on success this tool 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only safety, but the description adds substantial non-obvious behavior: per-format rendering rules (STL/OBJ/3MF as themselves, STEP from Kiln's mesh), what '.gcode.3mf' shows including EXTRAS, refusal with reason when the source mesh is unknown, automatic decimation of oversized meshes, and the viewer_url fallback for hosts that draw no panel. These are real caveats an agent could not discover from annotations or 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?
Purpose is front-loaded and the body uses bullets, which helps, but at roughly 350 words for a one-parameter read tool it carries heavy edge-case prose (slice-result repeat behavior, print-gate semantics) that many callers never need. The trailing 'INLINE 3D STAGE' block restates panel/viewer_url information already given earlier, which is wasted 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, the description enumerates return fields (stage_mesh_path, shows, message, came_from, artifact, shown, viewer_url) and explains the failure/refusal path. For a read-only viewer with an unusual host-dependent output, nothing an agent needs to call it or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load; the :param block does add the accepted extensions (STL, OBJ, 3MF, STEP, .gcode.3mf, G-code) and the 'on this machine' locality constraint, which is genuinely useful. It slightly muddies things by discussing a door parameter that belongs to issue_preview_token rather than this tool, but the single real parameter is well covered.
Input schemas describe structure but not intent. Descriptions should explain 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+scope: 'Open Kiln's interactive 3D stage on a file that already exists,' and immediately delimits it against the making/generating tools with 'nothing needs making' and 'Nothing is re-made, re-sliced, imported or written.' It also names the sibling it is not (visualize_model, 'the still-picture door'), so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('let me see it' on an existing mesh, download, or sliced print file) and when not to (visualize_model is 'the sign-off only when neither this panel nor a link is possible'). It even spells out the surrounding workflow — open here, then issue_preview_token(file_path, door="stage") — which removes nearly all inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_reflogC
List head-mutating operations newest-first.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=show_reflog
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default: 100. | |
| branch_id | No | ||
| artifact_id | No | ||
| artifact_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 behavioral burden. It does state 'Requires Kiln Pro,' which is a useful access condition, but says nothing about permissions, return format, pagination, or whether the listing is read-only. The remaining text is unrelated upsell copy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the next two sentences are promotional copy unrelated to invoking the tool. They do not earn their place in a tool definition, so the description is not appropriately structured despite being short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter listing tool with no annotations, no output schema, and only 25% schema description coverage, the description is materially incomplete. It omits all parameter filtering semantics and return behavior, while spending most of its length on an upgrade link.
Complex tools with many parameters or behaviors need more documentation. 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 four parameters and only 25% description coverage; the description adds no explanation for limit, branch_id, artifact_id, or artifact_type. With low schema coverage, the description should compensate but instead contains no parameter semantics at all.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource: 'List head-mutating operations newest-first.' That is clear enough for an agent to know it is a reflog-style listing tool. It does not differentiate itself from siblings such as get_reflog_entry or restore_from_reflog_entry, and the later promotional sentences dilute 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 gives no explicit when-to-use guidance, no exclusions, and no alternatives. It implies a reflog viewing use case from the word 'List,' but does not tell the agent when to choose this over sibling tools like show_branch_history or get_reflog_entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_decoration_preset_releaseC
Designate an immutable Ed25519-signed preset release.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=sign_decoration_preset_release
| Name | Required | Description | Default |
|---|---|---|---|
| signed_by | No | ||
| release_name | Yes | ||
| preset_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose meaningful behavior: the release is immutable and Ed25519-signed, and Kiln Pro is required. However, it does not explain permissions, side effects, return behavior, or whether signing is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but more than half the description is promotional upgrade text unrelated to helping an agent invoke the tool correctly. Those sentences do not earn their 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 three-parameter signing tool with no annotations and no output schema, the description is missing parameter meaning, usage context, and behavioral details. The Kiln Pro prerequisite helps, but the definition remains substantially 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%, and the description does not explain preset_version_id, release_name, or signed_by. The word 'signed' weakly hints at signed_by, but none of the three parameters are meaningfully documented.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: designating an immutable Ed25519-signed preset release. It is clear what the tool does, but it does not distinguish this from sibling signing tools such as sign_design_release or sign_feature_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no alternatives, and no conditions beyond a Kiln Pro requirement. The remaining text is marketing/upsell rather than invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_design_releaseC
Sign and persist an immutable named release of a version.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=sign_design_release
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| ancestry | No | ||
| outcomes | No | ||
| design_id | Yes | ||
| signed_by | No | ||
| provenance | No | ||
| version_id | Yes | ||
| branch_name | No | ||
| assembly_json | No | ||
| manual_branding | No | ||
| manual_languages | No | ||
| mesh_fingerprint | No | ||
| manual_co_brand_name | No | ||
| manual_cover_language | No | ||
| manual_design_name_translations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that the release is immutable and persisted and that Kiln Pro is required, but it does not explain signing semantics, permissions, irreversibility, side effects, failure behavior, or what a successful response represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, which is good. However, the following sentences are mostly promotional/paywall content about Kiln Pro features and an upgrade URL, which does not help an agent invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is a complex mutation tool with 15 parameters, nested objects, no annotations, no output schema, and no parameter descriptions. The definition provides only a high-level purpose and tier requirement, leaving an agent without enough information to call it confidently or understand its 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% across 15 parameters, including nested objects and many optional fields such as ancestry, outcomes, provenance, assembly_json, and manual branding. The description only implies that a name and version are involved and provides no meaningful explanation of the parameters beyond their 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 first sentence gives a specific verb and resource: sign and persist an immutable named release of a version. It is clear what the tool does at a high level, but it does not distinguish itself from sibling release-signing tools such as sign_feature_release or sign_decoration_preset_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 verify_design_release, list_design_releases, or the other release-signing siblings. The only prerequisite-like statement is 'Requires Kiln Pro', which is useful but not sufficient usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_feature_releaseC
Produce an Ed25519-signed release manifest over the feature's content.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=sign_feature_release
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| signed_by | No | ||
| feature_id | Yes | ||
| branch_name | No | ||
| feature_version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral detail; it does usefully add the signing algorithm (Ed25519) and the Pro entitlement requirement, which an agent needs before calling. However, it says nothing about required auth, whether the manifest is immutable, what happens on entitlement failure, or how the signature is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one good sentence, but the following three lines are marketing copy about calibration, mid-print edits, and textures that has nothing to do with signing a manifest. Roughly half the text is wasted and actively distracts from the task.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, no annotations, and five undocumented parameters mean the description must carry the burden, and it does not — it omits return shape, error behavior, and parameter meaning while spending its length on an upsell link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters (feature_id, feature_version_id, name, signed_by, branch_name) and the description explains none of them. It provides no hint about identifier formats, whether signed_by defaults, or what branch_name does in the signing scope.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource ('Produce an Ed25519-signed release manifest over the feature's content'), which is concrete enough to distinguish it from verify_feature_release or cloud_push_feature_release by intent. It stops short of explicitly contrasting with those siblings, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to sign versus when to verify or push, no prerequisites beyond a buried 'Requires Kiln Pro' line, and no mention of what state the feature/version must be in. The remaining sentences are an upgrade pitch rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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 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 | Default: "". | |
| target_ratio | No | Default: 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the decimation method, that geometry is preserved at lower resolution, the default output filename convention (implying the original is not overwritten), and the return payload fields. Missing is any statement about failure modes (e.g., invalid/non-manifold STL) or whether the source file is ever modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence and the rest is organized prose. The docstring-style ':param'/':returns' lines are mildly redundant with the schema, but the range detail they carry earns their 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 3-param mutation with no output schema, the description covers method, output destination, and return shape, plus the stage behavior. The main remaining gap is error/edge-case behavior, which matters because mesh operations frequently fail on bad input.
Complex tools with many parameters or behaviors need more documentation. Simple 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 67%, and the description compensates meaningfully: it adds the 0.01-1.0 valid range for target_ratio (absent from the schema), documents the default naming pattern for output_path, and clarifies file_path must be an STL. It maps every parameter to a stated 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?
States a specific verb and resource ('Reduce mesh triangle count') plus the benefit ('faster preview or smaller files'). It also names the algorithm ('vertex-clustering decimation') and that the shape is preserved, which distinguishes it from siblings like repair_mesh or hollow_mesh_model that also touch meshes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use ('faster preview or smaller files') and notes it triggers the interactive 3D stage on success. It does not name exclusions or alternatives — e.g., when to prefer split_mesh_to_fit or repair_mesh first — so it stops short of the 5 bar.
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.
printer_name: Which printer is printing the plate. Omit for the
default printer.
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 | Default: 1. | |
| 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 well: it warns that skipping is irreversible for the named objects, that skips are cumulative, that a confirmation with the user is required, and which backends support the operation. It also states the return shape and 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 purpose and irreversibility warning are front-loaded, and the bulleted backend identifier section is scannable. The printer-support paragraph is somewhat long and could be tightened, but it contains decision-relevant detail rather than 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 three-parameter mutation tool with no output schema, the description covers everything needed: identifier discovery, backend-specific formats, preconditions, irreversibility, return values, and error behavior. 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?
Schema coverage is only 33%, so the description must compensate, and it does: object_ids is explained per backend (Bambu label_id, Klipper/Moonraker object name, OctoPrint M486 index), plate_number is described as 1-based context-only, and printer_name defaults correctly. 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 names a specific verb and resource ('Abandon one or more failed objects on a multi-object plate, mid-print') and immediately clarifies the effect: stop printing just those objects and finish the rest. An agent can distinguish this from planning or fleet-level skip tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear triggering conditions (one part failed — spaghetti, knocked-loose object, detached corner) and preconditions (only while a multi-object plate is actively printing; confirm with the user). It even lists when-not cases (Prusa Link, Elegoo SDCP). However, it doesn't explicitly name sibling alternatives like plan_object_skip or fleet_skip_objects, so it falls short of the top bar.
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 on the file as it was sliced (a STEP file as Kiln's
mesh of it), and returns adhesion recommendations — all without
uploading or starting a print. When the analysis could not be
made, ``printability`` is null and ``printability_note`` says
why.
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 (e.g. ``"PLA"``, ``"PETG"``,
``"TPU"``). The slice is set for it -- temperatures,
melt rate and cooling -- so the time is the time THIS
material takes (a TPU part is far slower than the same
part in PLA), and its density gives the weight.
Default is ``"PLA"``.
printer_name: Registered printer this estimate is FOR. Omit
for the default printer. An estimate is only as true as
the profile behind it, so naming a second machine costs
the job on that machine rather than on the default.
placement: Where the part goes when the plate still holds the
last print: ``[x, y]`` in mm (the part's footprint
origin), a named region (``"front-left"``, ``"centre"``,
``"back-right"``, …), or ``"keep"``. An estimate never
refuses because of the plate: when the plate still holds
the last print and no safe spot is named, the estimate is
for the part on an empty plate and ``plate_note`` says
so. Where a named spot is safe, the estimate is of the
part there, with the clearance verdict in ``placement``.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| profile | No | ||
| material | No | Default: "PLA". | |
| placement | No | ||
| input_path | Yes | ||
| 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 the full burden and does so: it discloses the slicer used, that nothing is uploaded or printed, how printability null and printability_note behave on failure, the plate/placement fallback logic, and the inline 3D stage with automatic decimation.
Agents need to know what a tool does to the 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 and sibling routing before the detail. It is long and the Args block partly restates the schema, but nearly every sentence adds behavioral value; slight bloat 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?
No output schema exists, yet the description explains all key returns (time, filament, cost, printability, printability_note, plate_note, placement verdict) and the no-upload constraint. An agent has everything needed 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?
Schema coverage is only 17%, but the description compensates thoroughly—file formats for input_path, example printer_ids, precedence of profile over printer_id, material effects on temperatures/density, printer_name targeting semantics, and the three forms and fallback behavior of 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?
States a specific verb (slice) and resource (3D model) and enumerates outputs (time, filament, cost, printability). It immediately distinguishes itself from estimate_cost and estimate_material_cost by naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: G-code files go to estimate_cost, volume-only estimates go to estimate_material_cost, and this tool answers 'how long / how much filament' before committing. When-to-use and when-not are both spelled out.
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).
Colour is a promise kept here. A part made in a colour (the
``color`` the make was asked for, or the one its source named)
prints from a loaded spool of that colour: on a printer with an
AMS the slot is chosen and named in the result; with none of that
colour loaded the print is HELD (``code: "COLOR_NOT_LOADED"``),
naming the nearest loaded spool, so the person decides before
anything prints -- call again with ``color="<that colour>"`` to
print in it, or load the asked colour and call again; on a
printer with no unit Kiln can read it prints in whatever is
loaded and the result says so. ``color`` here overrides the
make's: a colour word or hex to print in instead, or ``"any"``
to print in whatever is loaded.
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; when it could not read the model, ``printability_note``
says why. A skirt that would print past the edge of the bed is
dropped and the part sliced again; a brim that would is refused
with the width that fits.
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"``). It
sets the slice's temperatures, melt rate and cooling
(``build_material_overrides`` shows them), its density
weighs the print, and it steers the automatic brim/raft
decision. Omitted, the spool the printer reports loaded
answers, then PLA — the response's ``slice.filament``
says which.
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.
placement: Where the part goes when the plate still holds the
last print: ``[x, y]`` in mm (the part's footprint
origin), a named region (``"front-left"``, ``"centre"``,
``"back-right"``, …), or ``"keep"``. Omitted, an
occupied plate refuses before anything is sliced and
lists the spots that would work; a clear plate prints as
before. The response's ``placement`` block is the
clearance verdict, checked again on the sliced file
before upload. The clearance verdict is free; placing
and starting a second print on an occupied plate is a
kiln-pro feature (https://kiln3d.com/pricing).
hardware: Bought parts that go into the part while it
prints, as short phrases such as ``["4x 6x3 magnet",
"2x M3 nut"]``. The file that prints carries the pause
Kiln's servers wrote into it, and the response's
``hardware`` block says what goes in and when; a part
that needs a pause that cannot be written is refused
before anything is sent to the printer. Left out, a
part with a pocket that would be sealed inside the
print is refused with ``HARDWARE_UNNAMED`` and the
planner's question for each pocket ("this hex pocket
takes an M3 nut -- right?"): ask the person, then call
again with what they said, or ``["none"]`` to print
every pocket empty on their word. ``["none"]`` with a
pause already in the sliced file over a sealed pocket
is refused as a contradiction (``HARDWARE_NONE_BUT_PAUSED``).
Writing the pause is a kiln-pro feature
(https://kiln3d.com/pricing).
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"``.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| color | No | Default: "". | |
| profile | No | ||
| hardware | No | ||
| material | No | ||
| metadata | No | ||
| placement | No | ||
| input_path | Yes | ||
| printer_id | No | ||
| auto_center | No | Default: true. | |
| printer_name | No | ||
| preview_token | No | ||
| skip_validation | No | Default: false. |
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 discloses important behaviors: color hold conditions such as COLOR_NOT_LOADED, validation gating, adhesion analysis, occupied-plate placement refusal, hardware pause handling, and the three-way print_start result. This gives the agent substantial operational context before 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 long, but it is front-loaded with purpose and organized into behavioral context, alternatives, argument semantics, and result branching. Some prose is stylized or verbose, but most detail is justified by the tool's complexity and low schema coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter print pipeline with no annotations or output schema, the description is unusually complete: it covers gating behavior, failure codes, occupancy handling, hardware pauses, print_start interpretation, and the inline 3D stage. The remaining omissions are minor and do not prevent correct 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?
Despite low schema description coverage, the description explains nearly every parameter in meaningful terms—color override semantics, material fallback behavior, metadata keys, skip_validation conditions, placement formats, hardware pause behavior, profile, printer_id, and printer_name. Only minor parameters such as preview_token and auto_center are unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action chain—slice a 3D model, upload it, and print it in one step—and explicitly distinguishes itself from run_quick_print and run_reslice_and_print. It also names the lower-level operations it combines, 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?
Explicitly routes the agent to alternatives: run_quick_print for a more comprehensive pipeline with validation/profile auto-detection, and run_reslice_and_print for custom slicer overrides. It also explains when to use skip_validation and how color, placement, and hardware arguments affect behavior.
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.
material: Filament material for this slice (``"PLA"``,
``"PETG"``, ``"TPU"``, …, or a product such as
``"bambu_tpu_95a"``). It sets the slice's temperatures,
melt rate and cooling -- Kiln's settings for it on this
printer, see ``build_material_overrides`` -- and its
density weighs the print. Omitted, the spool the printer
reports loaded answers, then PLA; the response's
``filament`` block says which, and ``filament.settings``
what the slice was set to and why.
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.
A part too big for the bed as modelled is also turned a
quarter turn when that makes it fit — an STL directly,
a STEP file as Kiln's mesh of it — and the response's
``bed_fit`` block says so.
printer_name: Registered printer this slice is FOR. Omit for
the default printer. Naming a second machine resolves
its profile, its bed and its safety limits — without it,
a multi-printer install slices everything for whichever
printer is the default.
placement: Where the part goes when the plate still holds the
last print. ``[x, y]`` in mm (where the part's footprint
origin lands), a named region (``"front-left"``,
``"centre"``, ``"back-right"``, …), or ``"keep"`` to leave
it where the file puts it. Omitted, an occupied plate
refuses and lists the spots that would work; a clear
plate slices as before. The response's ``placement``
block is the clearance verdict, and the sliced file is
checked against the plate once more before it is handed
on. The clearance verdict is free; placing and starting
a second print on an occupied plate is a kiln-pro feature
(https://kiln3d.com/pricing).
A bundled profile is sliced for the nozzle fitted to the machine --
the nozzle on record for it, else the printer's own setting --
rather than the model's stock size. The response's ``nozzle``
block names the size, where it came from and what was changed to
suit it; tell the user when it is not the stock size.
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``. A skirt that would print past the edge of
the bed is dropped and the part sliced again (``bed_fit``'s
``skirt_dropped`` says so); a brim that would is refused
(``BRIM_PAST_BED``) with the width that fits.INLINE 3D STAGE: on success this tool 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 |
|---|---|---|---|
| profile | No | ||
| material | No | ||
| placement | No | ||
| input_path | Yes | ||
| output_dir | No | ||
| printer_id | No | ||
| auto_center | No | Default: true. | |
| slicer_path | No | ||
| 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 burden and does substantial work: it discloses the auto-centering/rotation crash-prevention behavior, that an occupied plate refuses and reports placement options, that occupied-plate placement is a paid-tier feature, and that an edge-crossing skirt is dropped and re-sliced while an overhanging brim raises BRIM_PAST_BED. It also discloses a side effect (opening an inline 3D stage and decimating oversized meshes). Gaps remain around overwrite semantics for output_dir and what happens when no slicer is found, but the disclosure is well above typical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the Args block is scannable, but the entry is roughly 450 words with heavy parenthetical asides, a pricing URL, and extended inline-stage marketing that dilute the operational core. Much of the content earns its place, yet several clauses could be tightened without losing agent-relevant 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 9-parameter mutation-side tool with no annotations and no output schema, the description covers a lot: it states the return is a JSON object with the G-code path and names the response blocks (filament, bed_fit, placement, nozzle) the agent should surface to the user, plus key error codes. Remaining gaps are edge cases — slicer auto-detection failure, output overwrite policy — rather than core 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?
Schema description coverage is only 11% (just auto_center), so the description must compensate — and it documents all nine parameters with meaning beyond type: profile format (.ini/.json), printer_id as bundled-profile selector with an example, material's effect on temperature/melt/cooling/density and its omission fallback chain, printer_name's multi-printer disambiguation, and placement's three accepted forms with plate-occupancy semantics. This is exactly the compensation the low coverage requires.
Input schemas describe structure but not intent. Descriptions should explain non-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, and accepted formats plus the two engines used (PrusaSlicer/OrcaSlicer), so the operation is unambiguous. It does not, however, distinguish itself from close siblings such as slice_and_print, slice_and_estimate, reslice_with_overrides, or run_reslice_and_print, leaving the agent to infer that this is the slice-only variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 rather than stated: it explains that the output can be pushed with upload_file and start_print, and that auto_center should be set False only if the input is verified already positioned. There is no explicit when-to-use/when-not guidance relative to the several slicing siblings, and no prerequisites for profile/printer_id selection stated up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_decorateC
Intelligent decoration with auto-fix for printability (Pro). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=smart_decorate
INLINE 3D STAGE: on success this tool 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 | Default: "auto". | |
| mode | No | Default: "deboss". | |
| scale | No | Default: 0.7. | |
| content | Yes | ||
| depth_mm | No | Default: 0.0. | |
| material | No | Default: "PLA". | |
| model_path | Yes | ||
| image_style | No | Default: "auto". | |
| offset_x_mm | No | Default: 0.0. | |
| offset_y_mm | No | Default: 0.0. | |
| content_type | No | Default: "auto". | |
| absolute_size_mm | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry real behavioral facts: Pro licensing gate, the side effect of opening an inline 3D stage, automatic mesh decimation for the stage, and that the PNG preview is a floor rather than the whole output. However it never says whether the source model is modified in place or a new mesh is produced, whether auto-fix changes geometry unexpectedly, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded, but the text is padded with pricing/upgrade URL marketing and a second all-caps INLINE 3D STAGE paragraph that largely repeats the first sentence's stage claim. Two sentences could carry everything that is actually informative here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, annotation-free, output-schema-free decoration tool, the description explains licensing and the viewer but says nothing about what decoration result is produced, how content_type/mode/face interact, or whether the original file is mutated. Too much of the required burden is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 83%, so the baseline is 3, but the schema entries are only default values (face='auto', mode='deboss', scale=0.7, depth_mm=0.0) with no meaning attached. The description adds no parameter explanation at all, leaving content, content_type, material, offsets and absolute_size_mm semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a verb-ish action ('decorate' with auto-fix for printability), but never says what 'content' is (text, image, QR?) or what object the decoration is applied to, and gives no differentiation from siblings like batch_decorate, decorate_surface, preview_decorated_mesh or generate_qr_decoration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives, no prerequisites beyond 'Requires Kiln Pro', and no mention of when to prefer a simpler or batch decoration tool. The only contextual note is about the rendering stage, not tool 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 brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
: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 and for the
reinforcements (PLA, PETG, ABS, etc.).
:param auto_reinforce: If True, auto-apply structural reinforcements.
:param printer_id: The printer the part is for, so the reinforcements
are sized for its nozzle and layer height.
:returns: Dict with STL path, structural grade, reinforcements, and print settings.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | No | Default: "". | |
| material | No | Default: "PLA". | |
| parameters | No | ||
| printer_id | No | ||
| template_id | Yes | ||
| auto_reinforce | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-destructive, closed-world; the description adds substantially more — the auto-reinforcement behavior, slicer-setting inference, the shape of the return payload, and the side effect that an interactive 3D stage panel opens with automatic mesh decimation for oversized models. It stops short of saying whether new files are written where, or how failures partway through the pipeline are reported.
Agents need to know what a tool does to the 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 one-line summary, then a numbered pipeline, then params and returns — a well-ordered structure with little waste. The trailing 'inline 3D stage' and 'make doors' blocks are host-specific boilerplate that lengthens the definition without affecting how the tool is called.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden itself ('STL path, structural grade, reinforcements, and print settings') and also names the follow-on tools for the returned settings. All six parameters, the side effects, and the workflow position are covered; nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and two params have no schema description at all, but the prose compensates fully: `brief_id` is explained as the saved goal id from `design_session` to join the make against, `material` drives both settings inference and reinforcement choice, and `printer_id` is explained as sizing reinforcements to nozzle/layer height. This is meaning well beyond the typed 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?
States a concrete verb+resource (generate STL from a parametric template) and enumerates the five-stage pipeline it runs beyond that. It explicitly positions itself as the higher-level sibling of `generate_from_template`, so an agent can choose between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection context: 'recommended for functional parts' and 'Higher-level than generate_from_template — adds structural risk analysis and auto-reinforcement', plus names the downstream tools (`reslice_with_overrides`, `run_reslice_and_print`) to call next. What it lacks is an explicit when-not statement (e.g. skip this for quick/decorative-only generations).
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 | Default: true. | |
| brief_id | No | Default: "". | |
| 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 present, the description carries the full burden and does so well: it discloses the four-stage side-effectful pipeline (search history/dirs, read AMS trays, build overrides, reslice AND start a print), the auto_ams default, and best-effort sidecar/goal derivation that 'silently skips' on failure. It does not mention permissions or what happens on partial failure mid-pipeline, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a one-line summary, then a numbered four-step breakdown, a concrete example, and an annotated args block — structure makes it skimmable despite length. It is somewhat verbose (the sidecar carry-forward explanation is repeated in both the prose and the brief_id arg entry), which 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?
For an 8-parameter, no-annotation, no-output-schema mutation tool, the description covers the pipeline behavior, parameter meanings, defaults, and even the derived return value (brief_id surfaced in the result for record_print_outcome linking). Missing only explicit failure/abort behavior if intermediate steps fail, so it falls just short of 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 coverage is only 25%, so the description must compensate and largely does: each of the 8 parameters is explained with purpose, defaults (auto_ams=True, brief_id override semantics), and concrete format examples for the loose JSON params (search_dirs as '["/home/user/models"]', extra_overrides as '{"fill_density": "30%"}'). It also clarifies edge cases like auto_ams=False for non-Bambu 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?
States a specific verb and resource — 'Smart one-shot material-switch reprint' that finds the model, detects AMS slot, adjusts slicer settings, and prints. It self-describes as 'the highest-level reprinting tool', which loosely differentiates it from lower-level siblings like reprint_with_material or run_reslice_and_print, but it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage framing ('give it a file name and a target material, and it handles everything') plus a worked example, so the intended invocation is easy to infer. However, it never states when NOT to use it or which specific sibling (reprint_with_material, run_reslice_and_print, run_quick_print) to prefer for partial-control scenarios — the alternative routing is implied only by the 'highest-level' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_sketchC
Turn a 2D sketch of stated relationships into solved coordinates and OpenSCAD.
| Name | Required | Description | Default |
|---|---|---|---|
| sketch | Yes | ||
| extrude_height | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the basic transformation but omits whether the tool is pure or mutating, what happens with unsolvable constraints, whether OpenSCAD is returned as text or a file, and what the solved coordinates look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and has no wasted words. However, for a solver with no annotations and incomplete parameter documentation, it is too terse to be considered appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 incomplete parameter coverage, the description should do more to explain inputs, outputs, and failure behavior. It supplies only a one-line purpose statement, leaving important invocation details missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: the required sketch parameter has no schema description, and extrude_height only says the default is 0.0. The description does not explain the sketch format, constraint syntax, units, or how extrude_height affects the result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific transformation: taking a 2D sketch with stated relationships and producing solved coordinates plus OpenSCAD. That is more than a restatement of the name, but it does not distinguish this tool from nearby siblings such as solve_template_constraints or 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?
It implies usage for solving constrained 2D sketches, but gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent must guess whether this is the right tool versus other constraint-solving or SCAD compilation tools.
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,
plus ``dof`` (how many parameters no constraint pinned),
``free`` (one sentence per unpinned parameter and the value it
was left at) and ``defaults_applied``. Tell the person what
was left free rather than silently accepting a default:
``min``/``max`` bound a parameter without choosing it.
| 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 carries the burden well: it explains the iterative solving behavior, the stay-within-declared-ranges guarantee, and details the return keys (dof, free, defaults_applied) plus a strong caveat about not silently accepting defaults. It does not state whether anything is mutated or what permissions are needed, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then params, then returns. The docstring style is readable and each section earns its place, though the explanation of 'free' repeats the same idea ('min/max bound a parameter without choosing it') in slightly padded form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description adequately covers the return shape including the important dof/free/defaults_applied fields. For a two-parameter solver, that is nearly complete; it only lacks side-effect/authority 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%, so the description must compensate, and it largely does: template_id gets a concrete example and constraints is spelled out with supported keys (min/max/equals/ratio) and JSON examples. Minor friction: the schema types constraints as a string while the description calls it a 'JSON object', leaving the serialization expectations slightly ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: iteratively adjust template parameters to satisfy min/max/equals/ratio constraints within declared ranges. An agent can understand the operation, though it never distinguishes itself from close siblings like optimize_template_params, iterate_design, or solve_sketch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 ('Given a template and constraints...') but never says when to choose this tool over optimize_template_params or solve_sketch, nor are there prerequisites or exclusions. The only guidance is the return-value advice to tell the user about unpinned parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_merge_three_wayC
Three-way OpenSCAD source merge.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=source_merge_three_way
| Name | Required | Description | Default |
|---|---|---|---|
| left_label | No | Default: "branch_a". | |
| base_source | Yes | ||
| left_source | Yes | ||
| right_label | No | Default: "branch_b". | |
| right_source | Yes | ||
| show_base_in_markers | No | Default: false. |
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 hints at a licensing gate ('Requires Kiln Pro') but phrases it ambiguously, leaving unclear whether this specific merge tool is gated or only the listed extras (calibration, mid-print edits, textures) are. Nothing is said about conflict handling, marker output, or whether the merge is non-destructive, which are the behaviors an agent most 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?
Only the first sentence is about the tool; the next three sentences plus a URL are marketing for paid tiers and unrelated features like textures and mid-print edits. Structure is front-loaded but the bulk of the text does not earn its place in a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A no-annotation, no-output-schema, 6-parameter merge tool needs to explain conflict behavior, output/marker format, and licensing. The description covers none of these and instead substitutes promotional copy, so an agent cannot predict what it will receive or what the merge semantics are.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Six parameters with only 50% schema coverage; base, left, and right sources have no schema descriptions at all. The description's 'three-way' wording loosely implies base/left/right semantics, but it never explains conflict markers, the show_base_in_markers flag, or how left_label/right_label affect output, so the undocumented half stays undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-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, 'Three-way OpenSCAD source merge,' names a specific operation and resource and the 'three-way' qualifier distinguishes it from two-way siblings like merge_design_branches or merge_feature_branches. The remaining sentences are upsell copy that adds no further clarity about what the merge actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this over compare_branches, merge_design_branches, detect_merge_conflicts, or the cherry-pick tools. The only usage-adjacent information is a licensing note, which tells the agent nothing about the decision criteria for invoking the tool.
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 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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that crossing triangles are clipped cleanly, that non-manifold input is tolerated, that output_path is auto-generated when empty, the return shape (splice stats + output path), and the side effect that a 3D stage panel opens with automatic decimation of oversized meshes. Gaps remain on file-existence preconditions and whether an existing output file is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core mechanic and well organized into semantics, use case, and params. The trailing ':param'/':returns' docstring block partially duplicates the prose above it, and the stage-panel paragraph is long, but nothing is misleading or wasteful enough to hurt selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description explicitly summarizes the return (dict of splice stats plus output path), so an agent knows what comes back. Given a filesystem-writing geometry tool, the remaining holes are precondition/overwrite behavior rather than anything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only output_path is described, as 'Default: ""'), but the description compensates by documenting all four parameters, including the unit for z_plane (mm) and the role of each path. It still doesn't specify whether paths are absolute/relative or must already 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?
States a precise verb+resource ('Splice two meshes at a z-plane') and immediately defines the split semantics: geometry above z_plane from top_path, below from bottom_path. It also explicitly distances itself from boolean_mesh_op ('No boolean ops -- works on non-manifold meshes'), so an agent can pick it over sibling mesh-composition 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 'Use case' paragraph gives a concrete decision scenario (combining a correct top from one revision with a correct bottom from another), which is clear guidance on when to reach for this. It does not name alternative siblings (merge_stl, compose_models, boolean_mesh_op) or state when *not* to use it beyond the boolean-ops remark.
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 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 | Default: "". |
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 a solid job: it discloses that files are written, where they go by default, that a dict is returned, and that an inline 3D stage opens with automatic decimation for oversized meshes. It does not mention overwrite behavior, permissions, 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 definition is front-loaded with the core action and method, followed by parameter details and side effects. The INLINE 3D STAGE paragraph is relevant behavioral context but slightly promotional in tone and lengthens the 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 annotations and no output schema, the description is reasonably complete: it explains purpose, method, parameters, default output location, return shape, and viewer side effect. It could be stronger with explicit overwrite/error behavior and sibling-tool routing, but the essentials are 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 is only 50%, but the description compensates by documenting both parameters: file_path is a path to an STL mesh, and output_dir is the output directory defaulting to the input directory. It adds meaning beyond the schema's minimal 'Default: ""' note, though it does not specify path constraints or overwrite 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 states a specific verb and resource: split a multi-component mesh into separate STL files. It also explains the method (shared-edge analysis) and the output. It does not explicitly distinguish itself from related siblings such as split_mesh_to_fit or separate_overlapping_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 phrase 'multi-component mesh' implies the use case, but there is no explicit when-to-use versus when-not-to-use guidance. No alternative sibling tool is named, so the agent must infer whether this is the right split operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_mesh_to_fitA
Cut ONE solid into printable pieces that reassemble — the other honest answer to "it doesn't fit" (scale_mesh_to_fit shrinks; this cuts, so a functional part keeps its real dimensions). Opens Kiln's interactive inline 3D stage on the result (orbit/zoom panel in MCP Apps hosts; hosted sessions add a browser stage link).
Free tier: 3 part splits/month. Pro: unlimited. Upgrade: https://kiln3d.com/pricing?src=agent&tool=split_mesh_to_fit
INLINE 3D STAGE: on success this tool 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 | Default: 0.0. | |
| bed_y_mm | No | Default: 0.0. | |
| bed_z_mm | No | Default: 0.0. | |
| cut_axis | No | Default: "". | |
| material | No | Default: "PLA". | |
| design_id | No | Default: "". | |
| add_joints | No | Default: true. | |
| max_pieces | No | Default: 0. | |
| model_path | Yes | ||
| output_dir | No | Default: "". | |
| printer_id | No | Default: "". | |
| structural | No | Default: false. | |
| hardware_ok | No | Default: true. | |
| magnet_d_mm | No | Default: 6.0. | |
| magnet_h_mm | No | Default: 3.0. | |
| serviceable | No | Default: false. | |
| joint_method | No | Default: "auto". | |
| fastener_size | No | Default: "M3". | |
| arrange_plates | No | Default: true. | |
| snap_to_natural | No | Default: false. | |
| cut_positions_mm | No | ||
| pin_clearance_mm | No | Default: 0.2. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavior: it opens an inline 3D stage, oversized meshes are decimated for that stage, and it is quota-limited to 3 splits/month on free tier. It does not say whether the source mesh is preserved or consumed, what files/plates are produced, or that joints are added by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the sibling contrast are correctly front-loaded, but the INLINE 3D STAGE paragraph restates what the first paragraph already said about the stage opening and hosted browser links, which is pure repetition. The pricing/upgrade block is also promotional rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 22-parameter, no-annotation, no-output-schema mutation tool, the definition covers purpose, the main alternative, quota and stage behavior, but leaves out what the tool actually returns (piece files, plate arrangement, a reassembly plan) and any guidance on the 21 optional parameters. Adequate, not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 91%, so the schema already documents nearly every parameter and the baseline of 3 applies. The description adds only indirect hints ("pieces that reassemble" implying joint parameters, functional-part reasoning implying structural/hardware flags) and never explains cut_axis, max_pieces, or cut_positions_mm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — cut ONE solid into printable pieces that reassemble — and immediately contrasts it with the sibling scale_mesh_to_fit, explaining the tradeoff (shrinks vs. keeps real dimensions). An agent can distinguish this from split_mesh_by_component or scale_mesh_to_fit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing "the other honest answer to 'it doesn't fit'" plus the explicit scale_mesh_to_fit contrast gives clear selection criteria for the main decision. It stops short of naming other partition-adjacent siblings (split_mesh_by_component, plan_assembly_split, verify_mesh_fit) or stating when to avoid cutting.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that the tool returns an IdP authorization URL for OIDC or a SAML AuthnRequest redirect URL and that it is an enterprise feature. It does not mention authentication requirements, rate limits, or whether the operation has side effects, leaving 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 front-loaded with the primary purpose and then adds useful details about enterprise availability and protocol-specific return values. The Args section is slightly verbose but still 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?
For a simple one-parameter tool with no output schema, the description provides enough context to invoke it correctly: it explains the returned URL, the supported SSO protocols, and the role of the state parameter. The main missing piece is explicit guidance on when to choose this tool over related SSO tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole optional parameter is documented in the schema. The description adds meaningful context by explaining that state is an opaque parameter used for CSRF protection, which goes beyond the schema's default-value note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: get the SSO login URL for redirecting users to an identity provider. It also distinguishes the return content for OIDC versus SAML, making the tool's purpose clear without relying on the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 by saying it is for redirecting users to the identity provider, and notes it is an enterprise feature. However, it does not explicitly compare this tool with alternatives such as sso_exchange_code or sso_status, nor does it state prerequisites or exclusions.
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 | Default: true. | |
| printer_name | No | ||
| preview_token | No | ||
| first_layer_delay | No | Default: 120. | |
| first_layer_checks | No | Default: 3. | |
| first_layer_interval | No | Default: 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it enumerates the operational sequence, notes the default wait, snapshot capture, and optional auto-pause. It does not state permissions/auth requirements, whether the call blocks until completion, or the exact return shape — reasonable gaps but not covered elsewhere since annotations are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose sentence, then a numbered flow, then an Args list — well-structured. Slightly redundant in restating the schema's default hints for auto_pause and the timing parameters, but nothing is wasted enough to hurt 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?
No output schema exists, and the description compensates by saying it returns snapshots for visual inspection, which is the key contract. For a long-running mutation with no annotations it could say more about blocking behavior or auth, 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 coverage is 57%, and the description documents six of seven parameters with defaults and meaning (e.g., first_layer_delay = seconds before first snapshot). The seventh parameter, preview_token, is undocumented in both schema and description, leaving a real gap that prevents a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action (start print + monitor first layer) and explicitly names the sibling it replaces: 'Use this instead of start_print when operating autonomously.' An agent can distinguish it from start_print and monitor_print without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule tied to autonomy levels ('when operating autonomously (Level 1/2) to satisfy the first-layer monitoring safety requirement') and names the alternative (start_print). No inference required.
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: The tray each extruder feeds from (Bambu only), by
the printer's own tray id: ``unit * 4 + slot`` on a chained
unit (unit B's first slot is 4), the unit id itself on an AMS
HT (HT-A is 128). ``ams_status()`` lists each tray's
``tray_id`` and its Studio name (``B1``, ``HT-A``). Defaults to
``[0]`` when AMS feeding is on and ``[]`` (external spool) when
it is off. Use ``-1`` for unused positions.
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).
Kiln never turns the probe ON: with the default nothing is sent
and the printer's own screen switch governs -- ``printer_status``
and ``preflight_check`` read that switch and, when it is on,
repeat the printer's own warning that the probe leaks onto the
model unless the slice carries a purge tower. ``False`` is not
a per-print override: measured 2026-09-15, it turns the printer's
own switch OFF -- so Kiln reads the switch first and, when it
found it ON, turns it back on when the print ends (or at once if
the print never starts). Never forced on for a printer whose
switch was off or could not be read.
restore_nozzle_detection: With ``nozzle_clog_detect=False``, put the
printer's own switch back on when the print ends (default
``True``). ``False`` leaves it off on purpose, for a batch that
wants the probe off across several prints.
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 | Default: "auto". | |
| bed_type | No | Default: "auto". | |
| file_name | Yes | ||
| flow_cali | No | Default: true. | |
| timelapse | No | Default: false. | |
| ams_mapping | No | ||
| bed_leveling | No | Default: true. | |
| plate_number | No | Default: 1. | |
| printer_name | No | ||
| layer_inspect | No | Default: false. | |
| preview_token | No | ||
| vibration_cali | No | Default: true. | |
| nozzle_clog_detect | No | Default: true. | |
| resume_from_paused | No | Default: false. | |
| skip_preheat_reassert | No | Default: false. | |
| restore_nozzle_detection | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does: it discloses automatic pre-flight safety checks that can block the print, returns the check results, and documents the tri-state `print_start` outcomes with `success` being False only for "failed". It also exposes the non-obvious side effect of `nozzle_clog_detect=False` (turning the printer's own switch off and restoring it afterwards) and the preheat re-assertion safety net — behavior an agent could otherwise not predict.
Agents need to know what a tool does to the 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 and structured well (constraint, alternatives, Args, then the `print_start` branch), so the shape is sound. But it runs several hundred words, and the `nozzle_clog_detect` block is a dense paragraph with dated measurement anecdotes and repeated restatements of the switch-restore logic that could be cut to two 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 16 parameters, no output schema and no annotations, this is nearly complete: return-value branching is explained in place of a schema, and per-printer caveats (Bambu-only, model-specific) are flagged. The one gap is `preview_token`, which appears in the schema but is never described or explained in the Args — it is only alluded to ("the preview token's printer").
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% but mostly just echoes defaults; the description adds real semantics the schema lacks — the `use_ams` tri-state meanings, the `ams_mapping` tray-id formula (`unit * 4 + slot`, HT-A=128, `-1` for unused), the reason to set `nozzle_clog_detect=False` (HMS 0300-8014 false positives), and why `printer_name` is listed last. Fifteen of sixteen parameters are explained.
Input schemas describe structure but not intent. Descriptions should explain 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 and an explicit precondition ("Start printing a file already uploaded to the printer (file must exist on printer)"). It also distinguishes itself from slice_and_print and run_quick_print, which do slicing in the same step, so an agent can tell the three apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the prerequisite workflow ("Use upload_file first") and names the alternative tools plus the condition that selects them ("slice + upload + print in one step"). It also gives the resume path ("Use this when starting a resume-mode 3MF") and notes auto-detection of `_resume_` filenames.
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 | Default: 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it explains continuous background checks, the types of checks performed, alert generation, and plan-tier limits. It does not explain where alerts are delivered or what object/result is returned, leaving some operational behavior unspecified.
Agents need to know what a tool does to the world before calling 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 action and checks, then adds useful tier and alternative-tool context. It is somewhat long, but the plan-limit paragraph and see-also references earn their 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 two-parameter tool with no output schema and no annotations, the description covers the key behavior, scope, tier limits, and alternatives well. It is slightly incomplete because it does not mention the return value or alert delivery mechanism.
Complex tools with many parameters or behaviors need more documentation. Simple 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 50%, so the description helps by clarifying `interval_seconds` as seconds between health checks and repeating the default of 30. `printer_name` is only described as 'Printer to monitor,' which is clear 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?
States a specific verb and resource: 'Start continuous background health monitoring for a printer.' It also lists what the monitoring covers, making the tool's purpose distinct from ad-hoc 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?
Explicitly contrasts continuous watch monitoring with checking a printer yourself, naming `printer_status`, `monitor_print`, and `printer_snapshot` as alternatives. It also names `stop_printer_health_monitoring()` and `check_printer_health()` in the see-also list.
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.
start_subscription_checkoutC
Get a URL the user can visit to subscribe to a Kiln paid tier.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes | ||
| No | |||
| billing | No | Default: "monthly". | |
| cancel_url | No | ||
| success_url | 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 tell the agent it returns a URL, which is useful, but it omits whether a checkout session is created server-side, whether any charge or state change occurs, auth requirements, and whether the URL expires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though the brevity borders on under-specification for a five-parameter billing tool rather than true 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?
With no annotations, no output schema, an unenumerated required 'tier' string, and 80% of parameters undocumented, the description leaves critical gaps. The agent knows what the tool returns conceptually (a URL) but not the legal tier values or what happens to the user after redirect.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 20% — just the billing default of "monthly." The description adds nothing: valid tier values are unenumerated, and the roles of email, cancel_url, and success_url are never explained, so an agent cannot populate four of five parameters confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 concrete verb and resource: retrieving a checkout URL so a user can subscribe to a paid Kiln tier. The purpose is unambiguous in isolation, but it never distinguishes itself from nearby billing siblings like open_billing_portal, upgrade_kiln, or check_my_tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus open_billing_portal or upgrade_kiln, no prerequisites (e.g., must be signed in, must not already be subscribed), and no note on what to do with the returned URL. The agent must infer the entire invocation context.
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 | Default: "". | |
| 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 disclosure burden and does add real security context: PBKDF2 + XOR stream encryption at rest and a metadata-only response that never exposes plaintext. However, it omits mutation semantics an agent needs — overwrite behavior for duplicate credential_type, required permissions, and whether stored values can be rotated/deleted.
Agents need to know what a tool does to the world before calling 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 action and security behavior before the Args block, and the Args block earns its space by supplying the credential_type enumeration the schema lacks. The indentation/line-break formatting is slightly noisy but 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?
For a 3-param mutation tool with no annotations and no output schema, the description usefully covers what is returned (metadata only, no plaintext), which is the key return-value question. It is still thin on operational details: overwrite/duplicate handling and permission requirements are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% (only label is documented as "Default: \"\""), so the description must compensate, and it does: it enumerates the five accepted credential_type values (api_key, webhook_secret, stripe_key, marketplace_token, printer_password) and clarifies that value is the plaintext secret. That is meaningfully 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?
"Encrypt and store a credential (API key, webhook secret, etc.)" gives a specific verb and resource, and the encryption/at-rest phrasing separates it cleanly from read-side siblings like retrieve_credential and list_credentials. It never names those siblings explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the store semantics against the credential family (retrieve_credential, list_credentials, rotate_encryption_key), but there is no explicit when-to-use or when-not-to-use statement, no prerequisites, and no note on whether re-storing an existing credential_type overwrites the prior value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_drawing_extractionC
Submit your structured extraction of a drawing for verification.
Kiln Business would check the extracted requirements against the selected machine and material, flag what needs review, and prepare recommendations for the quote. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=submit_drawing_extraction
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Default: true. | |
| intake_id | Yes | ||
| extraction | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does useful work by explaining that Kiln Business checks requirements against the selected machine and material, flags review items, and prepares quote recommendations. However, it omits key mutation behavior: what happens when save is true or false, whether the submission is persisted, whether it is idempotent, and what errors or responses to expect.
Agents need to know what a tool does to the world before calling 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 core action, then adds the downstream verification context. The upgrade link is promotional but relevant to the Kiln Business gate, so there is little wasted 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, a nested extraction object, and only 33% schema coverage, the description is not complete enough. It explains the business verification step but leaves the extraction shape, persistence behavior, and expected result undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, and the description mentions none of the three parameters. It does not explain what intake_id refers to, what fields the nested extraction object must contain, or what save=true controls, so it fails to compensate for the sparse 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 first sentence states a specific verb, resource, and goal: submit a structured extraction of a drawing for verification. It is clear what the tool does, though it does not explicitly distinguish itself from related siblings such as intake_engineering_drawing or validate_design_for_requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 only a prerequisite ("Requires Kiln Business") and no guidance on when to use this tool versus intake_engineering_drawing, analyze_design_requirements, or other verification-related siblings. It also does not explain when an agent should submit an extraction rather than run a local validation step.
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.
preview_token: Token from ``issue_preview_token`` after the user
has seen the file. Required: a queued job is a print the
scheduler will start unattended, so the gate is here, at the
door, and the sign-off rides the job.
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 | Default: 0. | |
| file_name | Yes | ||
| printer_name | No | ||
| preview_token | No | ||
| idempotency_key | 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 richly: tier-based queue limits (10 free, unlimited Pro), the idempotency replay contract ("submission: replaved"/refusal on key reuse with different params), the mandatory preview_token safety gate explaining why it is required, and FIFO tie-breaking. This is exactly the behavioral context an agent needs before mutating queue 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?
Front-loads the core action, then tier rules, then a well-organized Args block, then follow-up tools. Every section earns its place, though the prose around idempotency is somewhat verbose and 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 5-parameter mutation tool with no annotations and no output schema, the description covers parameters, safety gate, idempotency, tier limits, and ordering, which is nearly everything needed. It could be slightly stronger on what the returned job object contains beyond the replay flag.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 20%, so the description must compensate and it does: file_name must already exist on the printer, printer_name omitted lets the scheduler pick an idle printer, priority is higher-first with default 0, and idempotency_key and preview_token get full semantic explanations. All five parameters are meaningfully documented 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?
States a specific verb and resource ("Submit a print job to the queue") that an agent can immediately act on. It is clearly distinct from read/status siblings like job_status and queue_summary, which it correctly frames as follow-ups, though it does not explicitly distinguish itself from near-neighbors such as fleet_submit_job or route_print_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?
Gives concrete operational context: free vs Pro queue depth, priority ordering with FIFO tie-breaking, the required preview_token gate, and explicit retry semantics for idempotency_key. It also names job_status and queue_summary for follow-up. What is missing is an explicit statement of when to prefer this over the fleet/route submission siblings.
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 | Default: "". | |
| use_case | Yes | ||
| need_food_safe | No | Default: false. | |
| need_high_detail | No | Default: false. | |
| need_high_strength | No | Default: false. | |
| need_weather_resistant | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden, and it does disclose the return contents (ranked recommendations with technology, reasoning, price tier, and fulfillment provider) even though no output schema exists. It stops short of explicitly stating that the tool is read-only and has no side effects, which would be the remaining piece for a non-mutating recommender.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the tool-routing decision are front-loaded, and the bulleted comparison is scannable. The Args block restates parameter names that the schema already exposes, adding some redundancy, though it earns its place by carrying the enum values the schema lacks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six-parameter, non-mutating recommendation tool with no annotations and no output schema, the description covers purpose, when to use it versus siblings, every parameter's accepted values, and what comes back. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description supplies the actual enum values for `use_case` (ten options) and `budget` ("budget", "mid", "premium"), none of which appear as enums in the schema, and it explains the intent of each boolean flag (e.g. need_high_detail prefers SLA/MJF). This meaningfully exceeds the schema, which only carries bare "Default: false." notes.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb and resource plus the exact context: "Suggest a material when ordering a print from a fulfillment provider." The dedicated routing section explicitly separates it from `recommend_design_material` and `recommend_material`, so an agent can distinguish it from siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ("Use this when routing a print job to a fulfillment provider and need to pick the right material + technology") and then states when to use each of the two alternative material tools. This is a clear when/when-not/alternatives matrix, not implied 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.
Each suggestion also says ``has_room``: whether that printer's plate,
as Kiln's record has it, can take a print right now (a clear plate;
a part still on it, or no record, is ``false``), with the plate
block beside it. Advisory, like the rest: the slice and start doors
judge the real part against the real plate. The plate reading is a
fleet feature; below its tier ``has_room`` is ``null`` and
``plate_note`` says so.
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, the description carries the full burden and does well: it discloses that suggestions are advisory, do NOT override safety limits or preflight checks, and explains the has_room field's tri-state behavior (true/false/null below tier) with plate_note caveats. It stops short of describing the full suggestion object or how ties are broken.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and safety caveat are front-loaded, and the arg list is clearly delimited. The has_room paragraph is somewhat long but earns its place by explaining a non-obvious return field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 must explain returns; it covers the key has_room/plate_note semantics and the advisory framing. It is largely complete, though it leaves the broader suggestion/ranking payload only loosely 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?
Schema coverage is 0%, so the description must compensate, and it documents all three parameters: file_hash matches previous prints, material_type filters (with a PLA example), and file_name is explicitly informational and not used for matching. This adds meaning the bare 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?
States a specific verb and resource (suggest the best printer for a job) plus the basis (historical outcomes). It is clear what the tool returns, but it never names or contrasts against sibling tools like find_printers_with_material, optimize_fleet_assignment, or route_print_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?
Provides useful workflow context (rankings come from recorded success rates, optionally filtered; run preflight validation before starting a print), but it does not state when to reach for this tool versus alternatives such as find_printers_with_material or optimize_fleet_assignment. Usage 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.
suggest_spool_swapsA
Suggest minimal spool swaps to run all queued jobs.
Compares what the jobs need with what is loaded and says which
shelf spools to load, and where. On one machine it answers for
that machine; across several machines it plans the fewest
physical spool changes between them (Kiln Business,
https://kiln3d.com/pricing).
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 must carry the full burden. It discloses that the tool is advisory ('says which shelf spools to load'), explains the multi-machine optimization goal, and flags the Kiln Business requirement, but omits whether it actually performs swaps, output format, 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?
Front-loads the core purpose in the first sentence, then adds scope and parameter details efficiently. The 'Args:' section is justified by the empty parameter schema, though the paragraph break and repeated 'what' phrasing add slight 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?
Covers purpose, single vs. multi-machine behavior, business-plan gating, and input structure, which is adequate for a planning tool. However, with no output schema and no annotations, it should ideally describe the shape of the suggestion (e.g., list of swaps with shelf locations) and any limitations 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?
Schema description coverage is 0% and the schema only defines a generic array of objects. The description compensates by specifying that each job dict includes 'material_type' and 'required_grams', which is critical information absent from the schema. It could clarify expected value formats or units, but adds substantial meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('suggest minimal spool swaps to run all queued jobs') and clarifies the comparison logic (needs vs. loaded). It does not name any sibling tool as an alternative or contrast, leaving differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context ('to run all queued jobs') and distinguishes single-machine vs. multi-machine planning, including a Kiln Business prerequisite for multi-machine. It does not state when *not* to use this tool or name alternatives like list_spools or fleet_colour_match.
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.
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 | Default: "USD". | |
| fee_amount | No | Default: 0.0. | |
| user_email | No | Default: "". | |
| jurisdiction | No | Default: "". | |
| business_tax_id | No | Default: "". | |
| manufacturer_quote_usd | No | Default: 0.0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does so: "Read-only — charges no card, contacts no provider," tax base is the fee only, business tax IDs trigger reverse-charge exemption in EU/UK/AU/JP, and user_email drives the first-3-orders fee waiver. Return payload shape is enumerated for both modes including fee_waived, tax_rate_percent, and tax_reverse_charge, which is far beyond what any structured field 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?
Front-loaded with the one-line purpose, then modes, then Args, then Returns — a good structure for a tool with two calling shapes. Slightly padded: the Terms §7 quote is immediately paraphrased in the following sentence ("This tool fulfills that contract by returning..."), and the manufacturer-liability aside could be one clause rather than two 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?
Six optional parameters, no annotations, and no output schema, so the description must supply mode logic, per-argument behavior, and return shape — and it supplies all three, including both the canonical and legacy return objects. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline would be 3, but the description adds decisive semantics the schema lacks: manufacturer_quote_usd > 0 is the mode switch, fee_amount is ignored in canonical mode, empty jurisdiction means no tax is applied, business_tax_id produces a $0.00 reverse-charge line, and user_email applies only in canonical mode. This materially changes how the agent fills the 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?
States a specific verb and resource ("Preview the complete price breakdown — including tax — before placing an order") and goes further to scope exactly what is taxed: the orchestration fee only, never the manufacturer quote. It distinguishes the two operating shapes (canonical preview vs. tax-only legacy) and points at the sibling `tax_jurisdictions` for valid codes, so an agent can separate it from other estimate_* 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?
Gives an explicit when: before placing an order, framed as a Terms §7 obligation. It routes between the two modes with a stated preference ("pass manufacturer_quote_usd" for canonical, recommended; fee_amount alone for legacy compatibility) and names the alternative tool for jurisdiction discovery. Edge case (empty jurisdiction → no tax applied) is also stated.
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 a part's walls by moving every surface out amount_mm.
Two routes, and the reply says which ran:
* **The CAD file** -- pass the part's STEP file (``.step`` /
``.stp``), or a mesh Kiln converted from one that still sits
beside it. The CAD kernel moves every face exactly, and round
holes keep their size so screws still fit. Walls gain twice the
amount; the outside grows twice the amount on every axis.
* **A mesh** with no CAD file -- vertices are moved and the result
is MEASURED against the input: the thinnest wall must gain at
least the amount, the surface must stay closed, and every hole
must survive. A result that fails is refused with the
measurements and your file is left as it was (on a part with
holes and thin features this is the usual outcome -- use the
CAD route).
Openings that are not round holes (slots, vents, cutouts) narrow by
twice the amount on either route.
Use after ``analyze_printability`` or ``predict_print_failures``
flags thin walls.
AGENT DISPLAY CONTRACT: the reply carries a before|after
self-check of the part. Look at it and write what changed before
calling the job done.
:param file_path: The part: a STEP file, or a mesh (STL/OBJ/3MF).
:param amount_mm: How far every surface moves out, in mm (0-5).
:param output_path: Output path (defaults to ``<name>_thickened.stl``).
:param keep_hole_size: Keep round holes at their diameter
(default). False lets them close in with everything else.
:returns: ``path``, ``method`` (``cad`` or ``mesh``), the
measurements before and after, and a ``note``; or a refusal
saying why the result was worse than the part.INLINE 3D STAGE: on success this tool 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 | Default: 0.5. | |
| file_path | Yes | ||
| output_path | No | Default: "". | |
| keep_hole_size | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it explains the CAD route's exact face movement, the mesh route's measurement and refusal behavior, that failed results leave the input file unchanged, how non-round openings narrow, the before|after self-check contract, and the inline 3D stage behavior including mesh decimation.
Agents need to know what a tool does to the world before calling 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 action and uses a clear two-route structure. It is long, but most detail is behaviorally important; the stage paragraph and display contract are slightly verbose and could be tightened without losing 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?
There is no output schema and no annotations, so the description must supply return values, failure modes, and UI side effects. It does all of this: it names the return fields (`path`, `method`, measurements, `note`), describes refusal behavior, and covers the interactive stage and preview fallback.
Complex tools with many parameters or behaviors need more documentation. Simple 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 75%, but the schema descriptions are mostly defaults. The description adds real meaning for every parameter: file_path accepts STEP or mesh formats, amount_mm is the per-surface outward movement and is bounded 0–5 mm, output_path is described by its default naming, and keep_hole_size is explained as preserving round hole diameters unless set to false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a precise verb and resource: 'Thicken a part's walls by moving every surface out *amount_mm*.' It immediately distinguishes the two implementation routes (CAD file vs. bare mesh), so an agent can identify what the tool does and which execution path applies without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use after ``analyze_printability`` or ``predict_print_failures`` flags thin walls.' It also gives route-selection guidance, warning that the mesh route commonly fails on parts with holes and thin features and directing the agent to the CAD route instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tolerance_stack_analysisC
Chain-walking tolerance stack analysis on a multi-part assembly.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=tolerance_stack_analysis
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "auto". | |
| seed | No | Default: 42. | |
| brief | No | ||
| chain | Yes | ||
| method | No | Default: "worst_case". | |
| material | No | ||
| fdm_aware | No | Default: true. | |
| n_samples | No | Default: 10000. | |
| 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 full behavioral burden. It discloses the Pro entitlement, but it does not explain whether the tool is read-only, what it computes or returns, how long it takes, or what permissions are required beyond licensing; the promotional sentences about mid-print edits and textures are unrelated to this tool and add 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 first sentence is front-loaded and useful, but the following three lines are marketing/upsell material that does not help an agent invoke the tool. Most of the description does not earn 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 9-parameter analysis tool with no annotations and no output schema, the description omits usage guidance, behavioral details, parameter semantics, and return behavior. Only the purpose and entitlement requirement are present, leaving the agent with significant 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 tool has 9 parameters, and the description says nothing about any of them, including the required 'chain' parameter or what 'mode', 'method', 'fdm_aware', and 'n_samples' actually control. Schema coverage is 56%, with several descriptions limited to default values, so the description should compensate 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 first sentence gives a specific verb+resource: chain-walking tolerance stack analysis on a multi-part assembly. However, it does not distinguish this from related assembly or clearance tools in the sibling list, and the remaining text is unrelated promotional 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 only contextual guidance is an entitlement note ('Requires Kiln Pro'), which is a prerequisite rather than when-to-use guidance. There is no mention of when to choose this over alternatives such as check_assembly_clearances or validate_assembly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_artifact_between_orgsB
Move an artifact from one org's ownership to another.
Kiln Business would set up the shared workspace — teams, member roles, and access grants — so the whole shop works from one library. Requires Kiln Business. Upgrade: https://kiln3d.com/pricing?src=agent&tool=transfer_artifact_between_orgs
| Name | Required | Description | Default |
|---|---|---|---|
| to_org_id | Yes | ||
| artifact_id | Yes | ||
| from_org_id | Yes | ||
| artifact_type | 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 disclose one real behavioral constraint — the Kiln Business plan gate — which is more than the schema provides. However, for a cross-org ownership mutation it says nothing about whether the source org loses the artifact (move vs copy), whether the operation is reversible, what permissions or dual-org membership are required, or what happens on partial 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 operative sentence is correctly front-loaded and the whole thing is short. But the 'shared workspace — teams, member roles, and access grants' sentence is marketing filler that does not help an agent decide or invoke, and the upgrade URL is promotional rather than operational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive-feeling, cross-org ownership mutation with no annotations, no output schema, and zero parameter documentation, the description is thin. An agent still cannot tell what `artifact_type` values are legal, whether the artifact is moved or duplicated, or what a successful response confirms.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all four parameters are bare strings. The description's 'from one org's ownership to another' loosely maps to `from_org_id`/`to_org_id`, but `artifact_type` has no enum and no documented values anywhere, and `artifact_id` is unaddressed. The description does not compensate 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 first sentence gives a specific verb and resource ('Move an artifact from one org's ownership to another'), which is unambiguous about the operation and its endpoints. It does not, however, differentiate itself from the close sibling `backfill_artifact_into_org`, which an agent could easily confuse with 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?
'Requires Kiln Business' is a concrete prerequisite that gates invocation, which is genuinely useful. But there is no statement of when to choose this over the org-related siblings, no note on what conditions must hold (e.g. membership in both orgs), and the intervening sentence about shared workspaces is a sales pitch rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_bed_levelB
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?
With no annotations, the description carries the full behavioral burden. It usefully discloses that a configured G-code command is sent, but it does not say whether the call blocks, how long probing takes, whether the printer must be idle, what safety implications exist, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the primary action before listing the optional argument. The Args block is slightly verbose for a single parameter but 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?
For a simple one-parameter hardware action with no annotations or output schema, the description covers the action and default-printer behavior. However, it leaves out operational context such as idle-state requirements, expected duration, side effects, and result 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 coverage is 0%, but there is only one parameter and the description explains its meaning: it identifies the target printer and may be omitted for the default. That is sufficient semantic compensation for this simple 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?
The description gives a specific verb and resource: trigger bed leveling / mesh probing and send G29 or BED_MESH_CALIBRATE. It is clear what the tool does, though it does not explicitly distinguish itself from close siblings such as bed_level_status, set_leveling_policy, or calibrate_direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is that printer_name may be omitted to use the default printer. The description does not state when to use this tool instead of related tools like bed_level_status or calibrate_direct, nor does it mention prerequisites such as the printer being idle.
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 | Default: false. | |
| confirm | No | Default: false. | |
| open_sessions | 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: it explains why closing is safe (printers keep printing), what it can actually end (monitoring/watch loops), that it refuses while a job is in flight, that this session's own server is never closed, and that calling without confirm returns a plan rather than acting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, and the sectioned 'WHY THIS IS SAFE' / 'AGENT CONTRACT' structure is scannable. It is longer than most definitions and slightly repetitive, but nearly every sentence carries decision-relevant information rather than 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 destructive-capable, unannotated tool with no output schema, the description supplies the missing safety profile, the dry-run/confirm semantics, the blocked-state behavior, and the required user interaction. Nothing an agent needs to call this correctly 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?
All three parameters are explained beyond the schema: confirm triggers actual closure, open_sessions is the user-supplied session count that determines how many most-recently-started servers are kept, and force is gated on explicit user insistence. Schema coverage is 67% (open_sessions has no schema description), and the description fills that gap, though it doesn't clarify the type/edge cases for open_sessions.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Close leftover Kiln servers left behind by closed sessions.' It also explains the origin of those leftovers (agent sessions spawning background servers that clients don't close), which distinguishes it clearly from siblings like restart_server or clean_agent_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 ties the tool to the pile-up warning in health_check / kiln_health / get_started, and gives a concrete invocation protocol: ask the user for open_sessions, confirm before acting, and do not reach for force when blocked. When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
troubleshoot_printerARead-only
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.
Two things in ``symptom`` are read as exact signals rather than as words,
and both narrow the answer sharply, so say them if you know them:
* a fault code anywhere in the text (``"1200-8007"``, ``"12008007"``);
* which step of a load/unload wizard failed (``"fails at step 5"``).
Every code the call names -- in ``hms_code`` or anywhere in ``symptom``,
so two codes read off ``printer_status`` fit in one call -- is read
through the same reader ``printer_status`` uses and returned under
``fault_readings`` (code, namespace, reading, and the fix when Kiln has
one). When the printer's playbook carries none of the codes named, the
response says so in ``codes_without_a_playbook`` rather than answering
the codes with word matches alone.
A step number is the most useful sentence a user can offer about a load
failure: the response's ``load_step_reading`` says whether that step is
upstream of the melt zone, which rules a nozzle clog in or out before
anyone unscrews anything.
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 | Default: "". | |
| hms_code | No | Default: "". | |
| printer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read (readOnlyHint=true, destructiveHint=false), yet the description adds substantial extra context: the response echoes a normalized HMS code plus a wiki link, Kiln Pro gating controls whether a decoded cause/fix/severity is returned, and codes with no playbook are surfaced in codes_without_a_playbook rather than answered with word matches. It also discloses that codes are resolved through the same reader printer_status uses and what load_step_reading means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the hms_code path are front-loaded, and most sentences carry real information about response fields and signal handling. It is on the long side for a three-parameter read tool and includes occasional narrative flourish (e.g. 'before anyone unscrews anything'), which costs some tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain returns, and it does: fault_readings (code, namespace, reading, fix), codes_without_a_playbook, load_step_reading, the echoed normalized code, and the Kiln Pro decoded payload. An agent has enough to call it correctly and 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 schema descriptions are effectively empty ('Default: ""'), so the prose carries the load: it explains that hms_code accepts any separator or case, gives example values for symptom, and states symptom is optional when hms_code is present. printer_id is only glossed as 'Printer model identifier', leaving ambiguity about model vs. serial.
Input schemas describe structure but not intent. Descriptions should explain non-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 and resource ('Diagnose a printer issue by searching the known failure modes database') and adds scope (per printer model). It is clear what the tool does, though it never distinguishes itself from near-neighbours like troubleshoot_print_issue or get_print_diagnostic, so an agent must guess between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives solid in-tool guidance: pass hms_code on Bambu Lab machines, symptom is optional when hms_code is given, and code/step-number signals narrow the answer. However it offers no when-to-use-this-vs-an-alternative routing against the many sibling diagnostic tools, so usage is implied rather than delimited.
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.
A tweak that leaves a piece floating with nothing under it is
refused like a compile is (``code: "FLOATING_PIECES"``, the fix
in ``error``). ``color`` shows the part in the colour the user
asked for, as on ``compile_scad``.
Args:
brief_id: The saved goal's id from ``design_session``; pass it so
this make joins the goal (recorded against it; Kiln Pro checks the
result against it). Empty when there is no goal.
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").
color: The colour the user asked for, shown on the preview and
the stage (a name or ``#rrggbb``). Not a print setting.INLINE 3D STAGE: on success this tool 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.
MAKE DOORS: design_session, Kiln's front door for making an object, is not installed here (signed in to Kiln it runs on Kiln's servers). On this install compile_scad IS the make → preview → iterate loop: make it, show the preview, iterate.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Default: "". | |
| brief_id | No | 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 carries the full burden and does disclose meaningful behavior beyond the schema: the validation step refuses floating pieces with a specific error code (FLOATING_PIECES) and a fix in 'error', material-limit validation runs, color affects preview/stage, and the tool opens an interactive 3D stage with automatic mesh decimation. It omits whether any state is persisted and what permissions are needed, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and the sections (Args, stage behavior, MAKE DOORS) are logically grouped. It is long and the MAKE DOORS note is somewhat digressive meta-commentary, but nearly every sentence earns its place by adding behavioral or parameter 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 moderately complex mutation tool with 6 params, no annotations, and no output schema, the description covers purpose, parameter meaning, and a key failure mode (FLOATING_PIECES). It could say more about the returned artifact/persistence since no output schema exists, but it is largely complete for correct 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 only 33% (mostly 'Default: ""'), so the description must compensate, and it fully does via the Args block: it explains brief_id's goal-joining role, parameter_name with an example ('wall_thickness'), new_value as numeric, material as optional limit validation, and color as a name or #rrggbb that is not a print setting. This adds substantial meaning beyond 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?
States a specific verb+resource ('Update a parameter in OpenSCAD code and recompile to STL') and then distinguishes itself from the pure-compile sibling by emphasizing it is 'The complete parametric tweaking workflow... all in one step.' An agent can tell this apart from compile_scad, update_scad_parameter, and validate_scad_parameters without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('Perfect for "make it 5mm wider" requests') and explains the brief_id goal-joining condition. However, it never explicitly names or excludes the closest sibling alternative (update_scad_parameter) to tell the agent when to prefer this combined step over those, and the 'MAKE DOORS' note discusses compile_scad rather than this tool, which slightly muddies routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_decoration_presetB
Restore a previously-archived decoration preset to default listings.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=unarchive_decoration_preset
| Name | Required | Description | Default |
|---|---|---|---|
| preset_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 behavioral burden. It mentions the effect of restoring to default listings and the Kiln Pro requirement, but omits permissions, irreversibility, error conditions, and what happens if the preset is not archived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional sentence is useful and front-loaded, but most of the remaining text is promotional copy and an upgrade URL. The 'Everything in Free...' line does not help an agent invoke the tool and distracts from the required 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 mutation tool with no annotations and no output schema, the description does not provide enough context about permissions, side effects, or the preset_id parameter. It is sufficient to identify the action but not to call it confidently in all 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?
There is one required parameter, preset_id, with 0% schema description coverage. The description implies that the ID refers to a previously-archived decoration preset, but adds no format, constraints, or selection guidance beyond that inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: restore a previously-archived decoration preset to default listings. It clearly identifies the object as a decoration preset, distinguishing it from sibling tools for designs or 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 phrase 'previously-archived decoration preset' implies the tool should be used only when a preset is archived, and 'Requires Kiln Pro' adds a prerequisite. However, there are no explicit alternatives, exclusions, or guidance about 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.
unarchive_designB
Restore a previously-archived design to default listings.
| Name | Required | Description | Default |
|---|---|---|---|
| design_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 does disclose the key behavioral outcome (the design returns to default listings), which is genuinely useful, but omits whether the call errors if the design is not archived, whether it needs special auth, and whether it is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; every word earns its place and the state outcome is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 trivial single-parameter state toggle with no annotations and no output schema, the description conveys the operation and its end state adequately. Only the precondition/error semantics are missing, which is a minor gap for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple 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 should compensate for the single undocumented design_id parameter, and it adds nothing about format, source, or how to obtain the ID. The parameter name is self-evident, which keeps this from being a 1.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('restore'/'unarchive') and resource ('design') and clarifies the resulting state ('to default listings'). It is unambiguously the inverse of archive_design, though it never names a sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative routing. The word 'previously-archived' hints at a precondition, but the agent gets no guidance on failure behavior, permissions, or how this relates to unarchive_feature/unarchive_decoration_preset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_featureC
Restore a previously-archived mechanical feature to default listings.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=unarchive_feature
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | 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, and it provides almost nothing: it never says whether the feature must be archived first, whether the restore is reversible, who is authorized, or what gets returned. The 'Requires Kiln Pro' line is ambiguous promotional copy, not a clear disclosure of whether this specific call is gated, and the pricing URL is marketing noise rather than 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 first sentence is well-formed and front-loaded, but three of the four lines are promotional copy about Pro-tier features and an upgrade link that do not help an agent invoke the tool. That is waste, not 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?
The basic operation is inferable from the first sentence, which is enough for a single-parameter mutation with no output schema. However, with zero annotations the description should at minimum clarify the Pro-gating ambiguity and the preconditions for restoring, and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole required parameter feature_id has 0% schema description coverage, and the description says nothing about its expected format or where to obtain it. The one sentence of real content describes the effect on the feature, not the identifier needed to invoke the 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 first sentence gives a specific verb and resource: restore an archived mechanical feature to default listings. That is clearly distinct from the sibling archive_feature, though it is not differentiated from close siblings like unarchive_design or unarchive_decoration_preset, whose names alone must do that work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this rather than archive_feature's inverse or the design/preset unarchive variants, nor any stated preconditions such as the feature needing to currently be archived. The only remaining text is an upsell.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_last_head_changeC
One-tap recovery: snap branch_id back to the old_head of its most recent head-mutating reflog entry.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=undo_last_head_change
| Name | Required | Description | Default |
|---|---|---|---|
| operator | No | ||
| branch_id | Yes | ||
| artifact_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden, and it does disclose a meaningful behavioral trait: only *head-mutating* reflog entries count, so non-head-mutating entries are skipped. However it says nothing about permission/auth requirements, reversibility of the undo, or what happens when no head-mutating entry 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 first sentence is tight and correctly front-loaded, but three of the four lines are promotional/upsell copy ('Everything in Free... Requires Kiln Pro... Upgrade: <url>') that does nothing to help an agent invoke the tool. Roughly half the payload is 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 mutation tool with zero annotations, no output schema, and 0% schema coverage, the description leaves major gaps: what artifact_type and operator control, error behavior when no reflog entry qualifies, and any auth/tier prerequisites. The mechanism sentence is good but insufficient on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters, so the description must compensate. It clarifies branch_id as the pointer being moved, but artifact_type and operator are given no meaning anywhere, leaving two of three parameters fully opaque.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb ('snap back'), a precise resource (branch_id), and the exact mechanism (the old_head of the most recent head-mutating reflog entry). That mechanism is distinctive, but the description never names or contrasts against close siblings such as restore_from_reflog_entry, show_reflog, or rollback_design_version, so it stays at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One-tap recovery' implies the scenario (undoing an accidental head move), but there is no explicit when-to-use, no when-not-to-use, and no routing to the alternative reflog/rollback tools listed as siblings. The inferrable context is the only guidance present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unload_filamentA
Pull filament out of the hotend — back into the AMS on Bambu, a heated retract elsewhere.
Same temperature gate, verification, ``outcome`` vocabulary and wait
bound as ``load_filament``: on Bambu ``extrusion_verified`` is ``True``
once the AMS reports no tray feeding the nozzle (``tray_now`` 255); on
Klipper an ``UNLOAD_FILAMENT`` / ``M702`` macro is used when the config
has one; otherwise the hotend is heated and ``length_mm`` is retracted
(default 80).
Args:
material / temperature / length_mm / wait_seconds / keep_hot /
printer_name: as ``load_filament``. Unload never retracts at
the end (the filament is already out) but still turns the
heater off unless ``keep_hot`` asks otherwise.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_hot | No | Default: false. | |
| material | No | ||
| length_mm | No | ||
| temperature | No | ||
| printer_name | No | ||
| wait_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 and does well: it names the temperature gate, the wait bound, the platform-specific verification signal (extrusion_verified when tray_now is 255 on Bambu, UNLOAD_FILAMENT/M702 on Klipper), the fallback heated retract with default length_mm 80, and the side effect that the heater is switched off unless keep_hot is set. It stops short of describing failure modes or what happens if the filament is already absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then platform branches, then argument deltas — no filler sentence. The Args block is compressed and the one clarification that differs from load_filament (no end-of-cycle retract, heater still off) is called out explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 six-parameter, zero-annotation, no-output-schema hardware tool this is solid: procedure, platform variance, verification signal and side effects are all covered. The remaining hole is that the return shape is only gestured at via 'outcome vocabulary' inherited from load_filament, and half the argument meanings live in another tool's 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?
Schema description coverage is only 17%, so the description must compensate, and it enumerates all six parameters while giving real meaning only for length_mm (default 80), keep_hot (heater stays on) and temperature (the shared gate). The rest are deferred wholesale to 'as load_filament', which an agent without that sibling's description loaded cannot resolve.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Pull filament out of the hotend') plus an explicit distinction from the AMS-back-into-tray Bambu behaviour and the heated-retract path elsewhere. An agent can tell this apart from load_filament or purge_filament without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation is self-evident from the name and first line, and the description tells the agent that parameter semantics mirror load_filament. However, it never states when to prefer this over purge_filament or load_filament, nor any precondition such as the printer being idle or the hotend needing to be at temperature before calling.
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?
With no annotations, the description carries the full burden and does well: it discloses adapter-specific backends (Moonraker Klipper update manager, OctoPrint Software Update plugin), the hard precondition that the printer must not be printing, and the important default that omitting component upgrades all components with pending updates. It does not say whether the printer reboots or goes offline during the update, or what is returned, which is the remaining 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?
Front-loaded with the core action and scope, then alternative routing, then platform notes, then args and preconditions. Every sentence adds information, though the Moonraker/OctoPrint backend sentences are marginally niche for a length that is already substantial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-annotation mutation tool with no output schema, this covers scope, alternative tool, backend variance, default semantics, and preconditions. What is missing is post-invocation behavior — reboot/downtime, interruption risk, and reversibility (there is a rollback_firmware sibling suggesting undo exists but is not 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?
Schema coverage is 0% for the single parameter, so the description must compensate and largely does: it explains that component is an optional component name, gives concrete examples ('klipper', 'moonraker'), and defines the omit behavior (upgrade all components with available updates). The omission default is the most valuable piece of parameter semantics and is stated clearly.
Input schemas describe structure but not intent. Descriptions should explain 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 and resource ('Start a firmware update') and immediately narrows scope ('default/connected printer, adapter-level, by component'). It also names the sibling it is not, so the agent can distinguish it from update_printer_firmware without reading schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 routes to update_printer_firmware for fleet/specific-name/version-pinning cases, and gives a precondition workflow ('Check firmware_status first'). When-to-use, when-not-to-use, and the prerequisite are all stated.
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 the full behavioral burden. It discloses the key traits: it writes into an active session, feeds live rule evaluation (thermal runaway, flow anomalies), and should be repeated periodically. It does not state failure behavior for an inactive/invalid session, whether partial snapshots are accepted or how omitted fields are treated, or any auth/rate 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?
Purpose, rationale, and cadence are front-loaded before the argument list, so the agent gets the decision-relevant content first. The 14-line Args block is long but earns its place given zero schema coverage; only minor trimming is 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?
For a 14-parameter write tool with no annotations, the description covers purpose, cadence, and every parameter, and an output schema exists so return values need no explanation. The remaining gap is that it never notes only session_id is required while the other 13 may be omitted, nor what happens when the session is not active.
Complex tools with many parameters or behaviors need more documentation. Simple 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 schema only has bare titles — so the description must compensate entirely, and it does: all 14 parameters are given meaning plus units (C, mm, mm/min, %, seconds, layer number) and the notable '100 = normal' convention for flow rate. This is materially 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 first sentence gives a specific verb and resource: 'Push a telemetry snapshot to an active interception session.' It also explains the downstream effect (rules evaluating live device state), which makes the tool's role unambiguous. It stops short of naming a sibling (e.g. get_interception_status, start_gcode_interception) to contrast against, so it is clear but not fully 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?
'Call this periodically during printing (e.g. every few seconds)' supplies an explicit trigger and cadence, and the rules paragraph explains why. There is no guidance on when not to call, what to do if no session is active, or how it relates to sibling tools, so exclusions are missing.
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 the full behavioral burden. It identifies a mutation action and mentions version pinning, but does not disclose likely side effects such as printer downtime, required idle state, power/auth preconditions, or rollback 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?
Front-loads the core action, follows with the key routing alternative, then lists only the two relevant parameters. No unnecessary text or repeated 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?
Covers selection guidance and both parameters, which is useful. However, for a mutation tool with no annotations and no output schema, it omits operational consequences and outcome expectations that an agent would need before invoking a firmware update.
Complex tools with many parameters or behaviors need more documentation. Simple 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 documents both parameters: printer_name identifies the target printer, and target_version specifies the version or defaults to latest when None. It lacks format examples or constraints, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Start a firmware update') and resource ('specific printer by name'), plus fleet-level scope and version pinning. It explicitly distinguishes itself from the single-printer sibling update_firmware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this in multi-printer setups and to use update_firmware instead for single-printer setups. The when/when-not routing is clear enough for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_printer_siteB
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 exist, so the description carries the full burden. It does add real behavioral value by disclosing the Enterprise license requirement, but it omits whether tags replace or merge with existing tags, whether re-assigning a site silently moves the printer, and whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, and the Args block is compact with no filler. The docstring-style formatting is slightly more structured than strictly necessary, but every line carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description covers the parameters and the license gate but leaves gaps an agent needs for a mutation: overwrite vs. merge semantics for tags and site, error behavior if the printer or site is unknown, and no confirmation-loop expectations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 largely does: it explains 'name' as the registered printer name, gives concrete site label examples ('nyc-lab', 'chicago-floor-2'), and specifies the tags syntax as comma-separated key=value pairs with a worked example. Only 'name' remains 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?
States a specific verb and resource: 'Assign a printer to a physical site/location with optional tags.' This is clearly distinguishable from read-only site siblings such as list_fleet_sites or fleet_status_by_site, though the description never explicitly names an alternative to disambiguate against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only conditional guidance is 'Requires Enterprise license,' which reads as an eligibility gate rather than usage guidance. There is no statement of when to call this versus re-registering a printer, listing sites, or moving a printer between sites, and no when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scad_parameterA
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. A derived parameter is
refused with a message naming its formula and the parameters to
change instead.
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?
With no annotations, the description carries the full burden and delivers real behavior: comments and formatting are preserved, and derived parameters are refused with the formula and the parameters to change instead. That is substantive detail beyond a bare restatement, though it does not clarify whether modified code is returned or mutated in place.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the mechanism, then the refusal behavior; no filler sentences. The Args block is somewhat redundant with the schema but is a common, low-cost convention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no annotations and no output schema, the description covers purpose, mechanics, and the key refusal edge case well. The one notable gap is that the return value (updated source code vs. confirmation) is never 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?
Schema description coverage is 0%, so the description should compensate. The Args block mostly restates names (scad_code as source string, new_value as numeric), with only marginal added meaning such as "name of the variable to update" and the numeric constraint already implied by 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 a specific verb+resource (update a parameter value in OpenSCAD code) and adds the mechanism: finds the named variable declaration and replaces its value. It clearly separates this from whole-model regeneration, though it never names siblings like modify_scad_module or insert_into_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?
"Use this to tweak dimensions without regenerating the entire model" gives a clear use case, and the derived-parameter refusal acts as an implicit when-not condition. It stops short of naming an explicit alternative tool for the derived case.
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 | Default: false. | |
| confirm | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so: it forbids calling mid-print ('Swapping Kiln mid-print is unsafe'), requires user confirmation before mutating installed software, and discloses the critical post-condition that the new version lands on disk while the running process still has old code, requiring a restart relayed to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the agent contract is bulleted, which makes the safety rules scannable. The 'Apple-grade upgrade path' line is marketing padding and the indentation/formatting is slightly heavy, but nearly every sentence carries actionable instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, it covers safety, confirmation, and post-update restart behavior well. Minor gaps remain: it never mentions authentication requirements (relevant given siblings like kiln_signin) or what failure looks like if the update cannot be fetched.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are empty boilerplate ('Default: false.'), so the description supplies real semantics: confirm=True performs the update while omission returns a no-op offer, and force overrides the mid-print safety defer only on explicit user insistence. This meaningfully exceeds 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?
States a specific verb and resource with scope: 'Update the Kiln package to the latest version — for the user.' It also distinguishes the trigger condition (newer Kiln available or an upgrade-required signal) so it clearly separates itself from generic firmware/license siblings like update_firmware or activate_license.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (new version available or upgrade-required signal returned), how to invoke it (ask the user, then pass confirm=True only after agreement), and what not to do (don't make the user run a pip command). No alternative tool is named, but the invocation protocol is fully specified.
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?
With no annotations, the description carries the full burden and largely meets it: transport is auto-selected, the file must exist and be readable, and the bytes pass a dialect scan and a bed-fit gate tied to the named machine. It omits auth/permission needs, overwrite behavior on name collisions, and failure/error semantics, which keeps it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and transport summary, then structured Args covering both parameters. It is long, and the parenthetical about what the docstring 'used to say' is historical narrative rather than caller-relevant instruction, but the bulk of the length is earned by the zero-coverage schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation tool with no annotations and no output schema, the definition covers input requirements, per-printer validation behavior, and the post-condition that the file appears in printer_files() and can be started with start_print(). Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and does: file_path is documented as an absolute, readable path whose extension follows the target printer, with per-machine examples and the Bambu .3mf-first rule plus the homing-gate refusal for bare .gcode. printer_name is documented as optional, defaulting to the default printer, with the note that dialect and bed-fit checks follow the named machine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upload) and resource (a local G-code file) plus the target (a printer), and the transport sentence clarifies what 'upload' concretely means across Bambu/OctoPrint/Moonraker/serial. An agent can distinguish this from siblings like upload_file_confirm, download_and_upload and analyze_print_file without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing context: when slice_model produced the file, upload its recommended_upload_path rather than choosing outputs by hand, and printer_status() reports accepted extensions per machine. It never names a sibling to use instead or states a when-not condition, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
usage_summaryB
Return the current billing cycle's usage snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the entire burden, and it says only that a snapshot is returned. It does not disclose which usage metrics are included, whether overage or quota state is shown, latency or auth requirements, or whether the snapshot is cached versus live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is structurally sound. It is arguably too terse to be useful, but that gap is captured under contextual completeness rather than wasted wording here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read tool the description is minimally viable, but with no annotations and no output schema the agent still cannot predict what the snapshot contains or how it differs from printer_usage_summary. One additional clause on scope or contents would close the 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 tool takes zero parameters, so the baseline is 4 per the rubric. The description correctly implies no inputs are needed to obtain the billing-cycle snapshot, and there is nothing for it to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Return ... usage snapshot') and scopes it to the current billing cycle, which is more than a bare restatement of the name. It does not, however, differentiate itself from the near-identical sibling 'printer_usage_summary', leaving the agent to guess which one to 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?
No guidance on when this tool is appropriate versus alternatives such as printer_usage_summary, project_cost_summary, or client_cost_report. The agent gets a one-line statement of purpose and no routing logic.
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`` and ``printability_grade``
(analyze_printability's, for ``material`` and ``printer_id``;
``None`` when the analysis could not run), and
``readiness_score`` (0-100, the tally of the checks) with its
``score_breakdown``.
| Name | Required | Description | Default |
|---|---|---|---|
| material | No | Default: "". | |
| input_path | Yes | ||
| printer_id | No | Default: "". |
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 does well: it discloses step-level resilience (unavailable modules cause a skip, not a failure), the optional-check skip semantics, and the 0-100 scoring. The notable omission is mutation behavior — 'auto-repair' is performed but it never says whether the source file is modified in place or whether a repaired artifact is written anywhere, which is exactly what an agent needs before calling 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?
Front-loaded with the purpose and step list, then parameters, then returns — a sensible order. It loses a point for the marketing-flavored sentence 'Every model passes Kiln's engineering review before it touches your printer' and for a dense, hard-to-parse returns paragraph that partly duplicates the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-step pipeline with three params and no annotations, the description is close to sufficient: steps, skip behavior, scoring, and outputs are all covered, and an output schema exists so return detail is a bonus. The missing piece is mutation/artifact semantics of the auto-repair step, which materially affects whether an agent calls it on a source file.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% but the schema descriptions are near-empty ('Default: ""'), so the description does the real work: it lists accepted formats, gives example printer IDs and material names, and explains that an empty value skips that check. Minor gap: no guidance on path form (absolute vs relative) or on what happens with an unsupported extension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (validate/prepare a 3D model before printing) and enumerates the concrete steps: format check, mesh analysis, watertight check, auto-repair, printability, structural, bed-fit, material. However, it never distinguishes itself from the near-identical sibling 'validate_and_prepare_mesh' or from 'analyze_printability' / 'check_print_readiness', so the agent cannot route between them from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Before printing' implies the moment of use, and the param notes explain when bed-fit and material checks are skipped. But there is no explicit when-not guidance and no named alternatives, which is a real gap given siblings like validate_and_prepare_mesh, validate_generated_mesh, and preflight_check that plausibly overlap.
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. Leave unset to
check for the nozzle Kiln has for ``printer_id``.
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 | Default: "PLA". | |
| file_path | Yes | ||
| auto_scale | No | Default: false. | |
| printer_id | No | Default: "". | |
| auto_repair | No | Default: true. | |
| layer_height | No | Default: 0.2. | |
| build_volume_x | No | ||
| build_volume_y | No | ||
| build_volume_z | No | ||
| nozzle_diameter | No | ||
| min_printability_score | No | Default: 40. |
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 in-place mutation ('The mesh file may be modified in place if auto_repair or auto_scale is enabled'), that the returned path may differ from the input, STEP conversion behavior, and the NO_BACKEND failure mode with a remedy. It stops short of covering permissions, cost, or rate limits, so it 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 purpose is front-loaded and the see-also/routing guidance comes before the behavioral notes, which is good ordering. There is minor redundancy between the opening line ('validate, repair, analyze, and prepare') and the later chain summary ('validation → auto-repair → printability analysis → build volume check'), but the arg annotations each earn their 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 an 11-parameter mutation-capable pipeline with no annotations and no output schema, the description covers purpose, sibling routing, mutation semantics, error handling, and per-parameter meaning. The main gap is that it does not describe the shape of the validation/printability report the agent will need to act on, but it does note the returned file path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 55% (mostly bare defaults), so the description must compensate and does: it explains nozzle_diameter fallback ('leave unset to check for the nozzle Kiln has for printer_id'), printer_id supplying build volume, accepted file formats including STEP conversion, and the meaning of min_printability_score as a pass threshold. 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 opening line names a specific verb set and resource ('Full validation pipeline: validate, repair, analyze, and prepare a mesh for printing'), and it explicitly distinguishes itself from two siblings (validate_and_prepare, validate_generated_mesh). An agent can tell exactly what this tool does and how it differs without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative pipelines explicitly — 'See also: validate_and_prepare for a more comprehensive 10-step pipeline' — and states the selection condition: 'Use this instead of validate_generated_mesh when you want the full pipeline.' That is a concrete when-to-use/when-to-prefer-sibling routing rule.
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?
With no annotations, the description carries the full behavioral burden. It discloses that clearance checks and joint validations run and that printer_id can enrich screw-hole output under kiln-pro, but it does not state whether validation mutates state, what permissions or locks are required, or how failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the Args section is clearly structured. The printer_id explanation is somewhat detailed, but the detail is relevant to expected behavior rather than 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?
There is no output schema and no annotations, so the description should carry more of the return and safety context. It says the validated assembly state is returned with results populated, but it does not describe the result shape, error behavior, or whether the input assembly is modified.
Complex tools with many parameters or behaviors need more documentation. Simple 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 for both parameters: assembly_json is described as current assembly state, and printer_id is explained with an example and conditional behavior. A minor gap is that the schema also accepts assembly_json as an object, while the description only mentions a JSON 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 states a specific verb and resource: validate an assembly for correctness and printability, including clearance checks and joint validations. It is clear what the tool does, though it does not explicitly distinguish itself from nearby siblings such as check_assembly_clearances or create_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?
Usage is implied by the validation purpose, and the printer_id note gives some conditional guidance. However, the description does not name alternatives like check_assembly_clearances or state when not to use this tool, so tool selection is left largely to inference.
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 the full burden; it discloses the return shape (pass/fail per check with specific fix suggestions) which matters since there is no output schema. It does not address permissions, cost, or whether the model is modified, 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?
Front-loaded with the core purpose, then scope, return value, and workflow in short sentences. The Args block is somewhat redundant with the schema field names but is compact and adds value rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema validation tool, the description supplies purpose, scope, workflow placement, and return semantics, which is nearly everything an agent needs to call it correctly. Only the absence of explicit sibling routing and edge-case behavior keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate; it documents all three parameters - file_path (STL or OBJ path), requirements (the same text used by analyze_design_requirements), and optional material with an example value. Coverage is complete, though the material semantics stay 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?
States a specific verb (validate) and resource (3D model against functional design requirements) and enumerates the constraint families checked (structural, dimensional, manufacturability). This effectively separates it from generic mesh checks like validate_generated_mesh, though it never names a sibling 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?
Gives an explicit ordering rule (AFTER generating, BEFORE printing) and a failure workflow (use fix suggestions to improve the generation prompt and regenerate), and ties the requirements arg to analyze_design_requirements. No explicit when-not guidance or named alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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?
With no annotations, the description carries the disclosure burden and does well: it states the generic-limit scope, differentiates blocking errors (temperature limits, firmware commands) from non-blocking warnings, and implies a non-executing preview via the send_gcode comparison. It never explicitly says the tool is read-only or executes nothing, which keeps it just 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?
Front-loaded with scope and the sibling routing before any details, then Args and Returns blocks. Every sentence serves selection or invocation; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description enumerates all five return fields, and it covers the generic-vs-printer-specific boundary. Only the missing explicit 'does not execute/send anything' statement and the array-input form keep it from being 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 coverage is 0%, so the description must compensate, and it does: 'One or more G-code commands separated by newlines' explains the expected string format. It does not mention that the schema also accepts an array of strings, which is the one 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?
States a specific verb and resource ('Validate G-code syntax and basic safety') and immediately delimits scope ('generic, no printer-specific limits'), which cleanly separates it from the sibling validate_gcode_safe. An agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative (validate_gcode_safe with a printer_id) and the condition that selects it (PTFE temp caps, speed limits). It also supplies a concrete use case: previewing what send_gcode would accept or reject.
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 | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does well: it names the checks (PTFE temp caps, speed limits), the profile-aware mode, and the conservative-default fallback when no printer is given. It does not describe the result shape (pass/fail, warnings) which is the main remaining 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?
Front-loaded with the purpose and the sibling comparison before the Args block. The Args section largely mirrors the schema, which is mild redundancy, but overall it is tight and 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?
For a simple 2-parameter validation tool with no output schema, the description covers purpose, selection guidance, and fallback semantics adequately. The one omission is what a validation result contains, which is minor for a boolean-ish 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?
Schema coverage is only 50% (commands is undocumented, printer_id only says 'Default: ""'), so the description must compensate. It does: commands is clarified as newline-separated G-code, and printer_id is described as an optional model ID enabling profile-aware validation, adding real 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?
States a specific verb and resource ('Validate G-code') plus the distinguishing feature ('printer-specific safety limits'). It explicitly names the sibling validate_gcode and why this variant differs, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit preference rule: use this over validate_gcode when the target printer is known, and states the fallback behavior when printer_id is omitted. Both the when-to-use and the counterfactual case are covered.
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, GLB, or 3MF, has reasonable
dimensions, an acceptable polygon count, and is manifold
(watertight).
Args:
file_path: Path to an STL, OBJ, GLB, or 3MF 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, so the description carries the full behavioral burden. It lists the four checks but says nothing about whether the call is side-effect free, whether it fails/throws on an invalid file or reports problems in the result, what the response looks like, or how long validation takes on large meshes. Enumerating the checks is the only substantive 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 key purpose statement is front-loaded and the check list is compact. The trailing 'Args: file_path …' block is essentially schema restatement and slightly redundant with the structured input, 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?
With no annotations and no output schema, the description is the only place an agent can learn the result shape — and it does not say what a validation returns (boolean, issue list, thresholds). It is adequate as an intent statement but insufficient for an agent to interpret or act on 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?
Schema description coverage is 0% — the single parameter has only a title 'File Path'. The description partially compensates by naming accepted formats (STL, OBJ, GLB, 3MF), which is real added meaning, but it does not say whether the path is local/remote, must already exist, or whether units matter.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Validate a 3D mesh file') and a scope ('for printing readiness'), then enumerates exactly what is checked: format validity, dimensions, polygon count, manifoldness. It does not name or contrast any of the many overlapping siblings (diagnose_mesh, mesh_quality_scorecard, check_print_readiness, validate_and_prepare_mesh), so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'for printing readiness' implies the usage context — run this before printing a generated mesh — but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative. With ~15 mesh-analysis and readiness-check siblings, a routing sentence would have been valuable.
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 scad_code: OpenSCAD source code to validate — the same parameter
name ``compile_scad`` / ``analyze_scad_code`` / ``tweak_and_compile_scad``
take, so a session that has been compiling can validate without
learning a second spelling.
:param code: Alias of ``scad_code`` kept for callers that learned it.
:returns: Dict with ``valid``, ``errors``, and ``warnings``.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Default: "". | |
| scad_code | No | Default: "". |
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 reasonably well: it discloses that the tool compiles code (implying compute cost), that it produces no geometry, and that output is structured error/warning data with line numbers. It omits whether validation has side effects, whether compilation is sandboxed/limited in time, and whether all diagnostics are returned or truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose and the routing hint in the first two sentences; the rest is compact. Minor deduction for leaked reST markup (:param:, :returns:, double backticks) that reads as documentation boilerplate rather than agent-facing 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?
No output schema exists, and the description compensates by naming the return keys valid/errors/warnings, which is the key missing piece. For a two-parameter, zero-required validation tool this is nearly complete; only failure/limit behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the schema's own descriptions are vacuous ("Default: \"\""), so the description is doing real work: it explains that scad_code is the canonical spelling shared with compile_scad/analyze_scad_code and that code is a backwards-compatible alias. It still doesn't say which to prefer when both are supplied or what an empty value means.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Validate OpenSCAD code") and immediately scopes it with "without generating geometry", which cleanly separates it from compile_scad and tweak_and_compile_scad in the sibling list. The return content (structured errors/warnings with line numbers) further pins down what validation means here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 check code before calling generate_model with OpenSCAD", giving a concrete precondition/ordering rule. It does not state when to skip validation or how this differs from the sibling analyze_scad_code in usage terms, so it stops short of full alternative routing.
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?
With no annotations, the description carries the full burden. It usefully discloses the internal mechanism (conditional webcam snapshot, examination of job record and events, production of a report with recommendations) and the default behaviors. It omits the safety profile — whether anything on the printer is mutated, permission requirements, or how the optional snapshot write interacts with the filesystem.
Agents need to know what a tool does to the 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 purpose sentence followed by a structured Args block and a Returns line. Every section earns its place given the zero schema coverage, with no filler sentences, though the doubled line breaks make it slightly airier than 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?
For a 3-parameter tool with no output schema and no annotations, the description covers purpose, per-parameter defaults, and the shape of the return value. The only missing element an agent might want is routing guidance among the numerous overlapping print-analysis 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?
Schema description coverage is 0%, so the description must compensate, and it does: it explains that job_id defaults to the most recent completed job, printer_name defaults to the default printer, and save_snapshot is an optional file path for the post-print image. This adds real semantics beyond the bare anyOf string types. Minor gap: no format example 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?
States a specific verb+resource ('Validate print quality') and scopes it temporally ('after a completed print job'), which distinguishes it from live monitoring tools like monitor_print_vision or diagnose_print_failure_live. It does not, however, explicitly name a sibling it replaces or differs from, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'after a completed print job' implies the correct usage window and the description notes default fallbacks, but it never says when to prefer this over the many similar analysis tools (analyze_print_snapshot, analyze_print_failure, check_print_health) or when not to use it. Guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_scad_parametersA
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?
With no annotations, the description carries the full burden. It implies a non-mutating pre-check and discloses that behavior changes when material is supplied (material-specific limits), but it never states whether the operation is read-only, what the result looks like (violation list vs. boolean), or how it behaves when scad_code cannot be parsed.
Agents need to know what a tool does to the 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 summary sentence followed by supporting detail and a compact Args block; nothing is wasted. The Args section partly duplicates information an agent could infer, but it is short enough not to hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mean the description is the only source of behavioral detail. It explains inputs and intent well but leaves the return contract (what a validation failure looks like) and any preconditions uncovered, which matters for a tool whose whole value is its verdict.
Complex tools with many parameters or behaviors need more documentation. Simple 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, and it largely does: scad_code is described as an OpenSCAD source string and material as an optional material ID with concrete examples ('pla', 'petg') plus the semantic effect of supplying it. It stops short of stating what happens when material is omitted (generic 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?
States a specific verb and resource: validating OpenSCAD parameter values against material design limits, with examples (wall thickness, hole diameter). It clearly separates itself from a pure syntax checker by framing it as a pre-compilation parameter-limit check, though it never names the sibling validate_openscad_code or parse_scad_parameters to draw the boundary 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?
The phrase 'Catches issues before compilation and printing' implies the right moment to call it, but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as validate_openscad_code for syntax or check_nozzle_capacity_for_print for machine limits. The usage context is implied rather than stated.
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 | Default: "". | |
| street | Yes | ||
| country | Yes | ||
| postal_code | No | Default: "". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool checks required fields, validates postal codes per country (US ZIP, Canadian postal, UK postcode), normalizes the address, and returns warnings for missing optional fields. However, it omits auth requirements, exact error behavior for invalid required fields or postal codes, and any rate/side-effect 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 purpose is front-loaded in the first sentence, followed by structured Args and behavior notes. The Args section repeats some schema titles but earns its place by adding format and validation 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?
There is no output schema and no annotations, so the description must fill more context. It explains validation behavior, normalization, and warns about missing optional fields, but does not fully specify the response shape or how invalid required fields and postal codes are reported.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40%, so the description must compensate. It adds meaningful parameter semantics beyond the schema: the country must be ISO 3166-1 alpha-2, state is recommended for US addresses, postal code is validated per country format, and street includes an example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: "Validate and normalize a shipping address for fulfillment orders." It is clearly distinct from sibling tools about saving, deleting, or listing shipping profiles, because it describes validation/normalization rather than persistence or 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?
It tells the agent when to use the result: "Use the normalized address in the response when placing fulfillment orders." This gives clear workflow context, though it does not explicitly name alternatives or 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.
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.
verify_decoration_preset_releaseC
Verify a preset release's signature and optionally its content.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=verify_decoration_preset_release
| Name | Required | Description | Default |
|---|---|---|---|
| release_id | Yes | ||
| recompute_from_preset | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only says the tool verifies a signature and optionally content; it does not explain permissions, side effects, what verification checks, or what the result indicates. The three lines of marketing/upgrade text add noise rather than behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful purpose statement is front-loaded in one sentence, but it is followed by three lines of irrelevant promotional copy and an upgrade URL. Those lines do not help an agent invoke the tool and dilute the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 verification tool with no annotations, no output schema, and two parameters, the description is too thin. It does not explain what a successful verification looks like, what content verification covers, or how the parameters affect behavior, leaving key invocation details undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description does not explain release_id at all. The phrase "optionally its content" may vaguely relate to recompute_from_preset, but it does not clarify what that parameter changes or when it should be used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: "Verify a preset release's signature and optionally its content." This is clear enough for an agent to understand the core operation. It does not, however, distinguish this tool from nearby siblings such as verify_feature_release or verify_design_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor when to enable content verification via recompute_from_preset. The only contextual statement is a generic upsell line saying "Requires Kiln Pro," which is not actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_design_releaseC
Verify a release's signature and (optionally) its mesh fingerprint, embedded assembly-manual hash, and measured spec record.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=verify_design_release
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | No | ||
| release_id | No | ||
| release_name | No | ||
| recompute_fingerprint | No | Default: false. | |
| recompute_manual_hash | No | Default: false. | |
| recompute_receipt_hash | No | Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does not deliver: it never says whether verification is read-only, what a failure looks like, whether the optional recompute flags are expensive, or what prerequisites exist. The only precondition mentioned ('Requires Kiln Pro') is buried in an upsell block rather than framed as an access requirement, which an agent may misread as marketing rather than a gating fact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is well front-loaded, but the second and third paragraphs are off-topic promotional copy (calibration, mid-print edits, textures) plus a pricing URL that consumes roughly half the description without helping invoke the tool. This is padding, not structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a verification tool with 6 optional parameters, no annotations, and no output schema, the description omits the essentials: what the verification result actually is, how to identify the release, and any preconditions. The promotional block occupies space that should have carried this 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?
Schema coverage is 50%, and the description does map the optional recompute flags to their targets (mesh fingerprint, embedded assembly-manual hash, measured spec record), which adds meaning beyond the bare 'Default: false' schema notes. However it does not clarify the identifier parameters (design_id / release_id / release_name) — specifically which one is needed when all six parameters are optional — leaving a real ambiguity unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb (Verify) and the precise resource and scope: a release's signature plus optionally its mesh fingerprint, assembly-manual hash, and spec record. That is enough to place it against verify_feature_release and verify_decoration_preset_release, though it never names those siblings or states the distinguishing resource (design release vs feature/decorations release).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not, or alternative guidance at all; the only routing signal is an upgrade link. The second paragraph is licensing marketing copy about calibration, mid-print edits, and textures, none of which describes when this verification tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_feature_releaseC
Verify an Ed25519 feature release.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=verify_feature_release
| Name | Required | Description | Default |
|---|---|---|---|
| feature_id | No | ||
| release_id | No | ||
| release_name | No | ||
| recompute_fingerprint | No | Default: false. |
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 conveys only that Ed25519 signatures are involved; it says nothing about what verification checks, what a failed verification means, whether it is read-only, or what the caller should do with the result. Half the text is unrelated promotional material, which actively dilutes the behavioral signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one useful sentence is front-loaded, but three of four sentences are advertisement ('calibration that learns your printer', 'unlimited textures', upgrade link) that earn no place in a tool definition and obscure the actual contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with no annotations and no output schema, the agent is left guessing about parameter meaning, required inputs (zero required parameters), return shape, and failure semantics. The single sentence about Ed25519 is the only substantive content, so the definition is inadequate for correct invocation despite the honest scope statement.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 25% — only recompute_fingerprint has any documentation ('Default: false.'). feature_id, release_id, and release_name are entirely undocumented in both schema and description, and the description adds no meaning about identifier formats or how recompute_fingerprint affects the verification result.
Input schemas describe structure but not intent. Descriptions should explain non-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 a specific verb and resource ('Verify an Ed25519 feature release'), which is genuinely informative. However, the remaining sentences are subscription-tier marketing copy that describe Kiln Pro features rather than the tool, and the description never distinguishes this tool from its obvious siblings verify_design_release, verify_decoration_preset_release, and sign_feature_release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this verification versus signing, listing, or verifying a design/preset release. The 'Requires Kiln Pro' and upgrade-URL lines imply a gating condition without clarifying whether it applies to the tool call itself or to underlying product capability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_mesh_fitB
Prove that separate parts can PHYSICALLY assemble, and that a hinged part can turn — the ONE fit check, exact shared-material math, not a picture.
| Name | Required | Description | Default |
|---|---|---|---|
| joint | No | ||
| units | No | Default: "auto". | |
| recipe | No | ||
| part_paths | No | ||
| tolerance_mm | No | Default: 0.2. |
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 come from exact shared-material math rather than rendering, which is genuinely useful behavioral context. It does not state whether the call is read-only, what it returns (pass/fail verdict vs. interference report), or the cost of running it, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core claim first. The rhetorical emphasis ('PHYSICALLY', 'ONE', 'not a picture') uses space but does real differentiation work, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters with two nested objects, no annotations, no output schema, and no documentation of the joint/recipe structures. The description never explains what a result looks like or which inputs are required for the assembly case versus the hinge case, which is inadequate at 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 coverage is only 40%; only 'units' and 'tolerance_mm' are described in the schema. The description says nothing about 'joint', 'recipe', or 'part_paths' — including which of recipe vs. part_paths drives the check — so it does not compensate 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 states a specific verb and resource: proving that separate parts physically assemble and that a hinged part can rotate. The phrase 'the ONE fit check ... not a picture' distinguishes it from visual/screenshot-based verification siblings, though it does not name any specific sibling such as check_assembly_clearances 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 ONE fit check' implies this is the definitive check to run when physical assembly or hinge motion must be proven, and 'not a picture' implies it replaces a visual check. However, no sibling tool is named and no explicit when-not condition is given, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_mesh_measurementsC
Measure a mesh file against the numbers it's supposed to hit and get back a receipt: what was asked, what was measured, what matched.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=verify_mesh_measurements
| Name | Required | Description | Default |
|---|---|---|---|
| mesh_path | Yes | ||
| measurements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the result is a receipt containing what was asked, measured, and matched, and that Kiln Pro is required, but it does not clarify read-only behavior, side effects, tolerance handling, or failure 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?
The first sentence is front-loaded and useful, but the remaining two sentences are promotional tier/upsell content unrelated to invoking the tool. They add noise and distract from the operational definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description needs to carry more weight. It gives only a high-level receipt description and omits parameter structure, matching tolerances, error behavior, and practical invocation 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% and neither parameter is explained in detail. The description conceptually maps 'mesh file' to mesh_path and 'numbers it's supposed to hit' to measurements, but it does not describe path format, expected measurement item structure, or units.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource: measuring a mesh against expected measurements and returning a receipt. It is clear what the tool does, though it does not explicitly distinguish itself from nearby siblings like verify_mesh_fit or validate_generated_mesh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 mesh must be checked against expected numbers, but it gives no explicit when-to-use guidance, prerequisites beyond 'Requires Kiln Pro', or alternatives. The agent is left to infer whether this is for pre-print QA, post-import validation, or another workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_provenance_integrityC
Re-walk the provenance log's hash chain; report any breaks.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=verify_provenance_integrity
| 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 disclosure burden. It says a hash chain is re-walked and breaks reported, but never states whether the operation is read-only, what a 'break' result looks like, or whether it needs prior provenance entries. The pricing block confusingly implies a tier requirement with feature claims that do not apply to this 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 first sentence is tight and front-loaded, but the following three sentences are pure marketing boilerplate for Kiln Pro that waste space and introduce false associations with calibration and decoration features.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 verification tool with no output schema, the description should explain what the returned report contains and what counts as a break. Instead it spends its length on an upsell, leaving the actual behavior underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly presents the tool as taking no input 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 opening clause names a specific verb and resource: re-walk the provenance log's hash chain and report breaks. However, the remaining three lines describe printer calibration, textures and decorations, which have nothing to do with hash-chain verification and actively muddy what the tool does. No differentiation from near siblings such as verify_audit_integrity, verify_design_release or get_provenance_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?
There is no statement of when to run this versus get_provenance_history, verify_audit_integrity or the various release-verification tools. The only additional text is an unrelated upsell, which gives no usable selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visual_diff_meshesC
Render a composited mesh-diff image per angle.
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=visual_diff_meshes
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Default: 800. | |
| angles | No | ||
| height | No | Default: 600. | |
| after_mesh_path | Yes | ||
| before_mesh_path | 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 does disclose a licensing requirement (Kiln Pro), which is genuinely useful, but it never says what happens without Pro, whether images are returned inline or written to disk, how long rendering takes, or whether the operation mutates anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional sentence is correctly front-loaded and compact, but three of the four lines are marketing upsell describing unrelated Pro features (calibration, mid-print edits, textures) that add no information about this tool and bury the call to 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 5-parameter, no-annotation, no-output-schema rendering tool, the description omits the output form (path, image list, or inline), the angles format, and failure behavior under a free tier. Only the basic purpose and the Pro requirement are conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 40% and the description compensates almost nothing: 'per angle' vaguely hints at the angles parameter but gives no format, units, or default, and before_mesh_path/after_mesh_path are undocumented in both places. The rest of the text is unrelated to 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 first sentence states a specific verb and resource: render a composited mesh-diff image, one per angle. That is enough to separate it from the many list_/cloud_ siblings and from compare_mesh_versions, though it never explicitly names the alternative it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus compare_mesh_versions, diff_design_versions, or compare_renders. The only conditional information is the paywall note 'Requires Kiln Pro', which is a prerequisite rather than usage selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_branch_treeC
Render a design / preset / feature branch tree as a Mermaid flowchart TD diagram.
Kiln Pro would preserve this version so you can branch, restyle, compare outcomes, and return without losing today's design. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=visualize_branch_tree
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Default: "rich". | |
| artifact_id | Yes | ||
| max_commits | No | Default: 50. | |
| artifact_type | No | Default: "design". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose two useful traits — the output is Mermaid ``flowchart TD`` text and the tool is gated behind Kiln Pro — but the bulk of the second paragraph ('preserve this version so you can branch, restyle, compare outcomes') describes version-preservation behavior, not visualization, and never states read-only status, pagination semantics of max_commits, or what the returned diagram covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded first sentence is excellent and self-contained. Everything after it is boilerplate: a paywall upsell sentence that does not describe this tool's behavior, followed by a URL. Roughly half the text fails to earn its place and actively distracts from the operational 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?
For a 4-parameter tool with no annotations and no output schema, the description leaves real gaps: the required artifact_id has no description anywhere, 'detail: rich' is unexplained, and max_commits (a pagination control) is never mentioned. An agent would have to guess at argument values and cannot tell how large a tree it will get back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the baseline is 3. The description adds marginal value by listing the three artifact kinds (design / preset / feature), which effectively documents the allowed values of artifact_type even though the schema provides no enum; it says nothing about artifact_id, detail levels, or max_commits.
Input schemas describe structure but not intent. Descriptions should explain non-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 names a specific verb (Render), a specific resource (design / preset / feature branch tree) and even the output format (Mermaid ``flowchart TD``), which an agent can act on directly. It does not explicitly distinguish itself from close siblings such as show_branch_history, show_design_lineage or compare_branches, and the second paragraph drifts into unrelated 'preserve this version' marketing copy that blurs the purpose slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it renders a tree, so presumably you call it when you want a visual of branch structure. There is no guidance on when to pick this over show_branch_history, show_design_lineage, or compare_branches, though the 'Requires Kiln Pro' line does at least signal a tier precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_modelA
Still pictures of any 3D file from multiple camera angles — the still door, not the 3D stage.
FOR THE PERSON'S LOOK BEFORE A PRINT, OPEN THE STAGE: ``show_on_stage(file_path)`` puts a file that already exists — a mesh, or the sliced print file — on Kiln's interactive 3D stage, which the print gate asks for first (``issue_preview_token(door="stage")``). These renders are for checking a model yourself. When the user is signed in the result also carries a browser stage link (``viewer_url``), the door for a host that draws no panel.
INSPECTION-ONLY UNLESS THE STAGE DREW IT: the result's ``renderer`` says which look these pixels are. ``stage`` (the stage photographed) and ``stage_paint`` (the stage's look painted) are accepted by ``issue_preview_token(door="png")`` for print sign-off; a raw ``openscad`` render is not — it has no plate and none of the stage's lighting, and a person once approved the wrong colours from one. Use it to inspect, and sign off from the stage, the viewer link, or a stage still.
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 to check a model from all sides — after each change, and
before printing.
**When to use this vs other preview tools:**
- ``show_on_stage`` — the interactive 3D stage on an existing file; what the person turns over before a print
- ``visualize_model`` — still renders of any file, 6 angles, to check it yourself
- ``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 | Default: "". | |
| width | No | Default: 800. | |
| angles | No | ||
| height | No | Default: 600. | |
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety/behavior burden and does much of it: it discloses return fields (renderer, quality_score, dark_material, viewer_url), the renderer value semantics that gate print approval, adaptive background for dark models, and colored-3MF handling. It does not state permissions, rate limits, or cost, so it falls short of full behavioral coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and the Args block is clean, but the prose is stylized and redundant: the show_on_stage/visualize_model distinction is made twice, once in the opening narrative and again in the 'When to use this vs other preview tools' list. The stage/sign-off caveat is valuable but the delivery inflates the length considerably.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns, and it does: six named PNG views, quality_score and dark_material flags, the renderer field and its accepted values, and the conditional viewer_url. Combined with full parameter coverage, an agent has everything needed to call and 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?
Schema coverage is only 60% (angles and file_path have no schema description), and the description compensates fully: it enumerates the valid angle values and the all-6 default, gives width/height defaults, explains that color is a hex filament color with a neutral-grey default, and notes color is ignored for colored 3MF. This is meaning well 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 states a specific verb and resource ('Still pictures of any 3D file from multiple camera angles') and immediately distinguishes itself from the interactive stage, and the later section names the sibling family explicitly. The agent can tell this is a static multi-angle renderer distinct from show_on_stage, preview_generated_model, and render_model_preview without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('after each change, and before printing', 'to check a model yourself') and a bulleted comparison against three named alternatives with the distinguishing criterion for each. It also states when-not: an openscad render is not acceptable for print sign-off, and sign-off should come from the stage.
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.
5. **Hardware stop** -- the print carries a hardware plan (pauses
written in for nuts, magnets or bearings) and a stop is a few
minutes away, the printer has stopped for the parts, or it went
past a stop without stopping: ``outcome: "hardware_stop"`` with a
``hardware`` block saying what goes in. Tell the person; at the
stop itself, resume only on their word that every piece is in
(``resume_print(hardware_confirmed=true)``). Then watch again.
**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 | Default: 7200. | |
| printer_name | No | ||
| save_to_disk | No | Default: false. | |
| max_snapshots | No | Default: 5. | |
| poll_interval | No | Default: 15. | |
| stall_timeout | No | Default: 600. | |
| cancel_at_percent | No | Default: 0.0. | |
| snapshot_interval | No | Default: 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full burden and does so well: it discloses that a background thread is launched, that the call returns immediately with a watch_id, the exact conditions under which the watcher terminates, the hardware_stop outcome and required human confirmation before resume_print(hardware_confirmed=true), and the camera-hash ground-truth check that flags telemetry_mismatch. These are non-obvious behaviors an agent could not infer 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?
Purpose is front-loaded in the first line and the numbered termination list is easy to scan. It is on the long side and the Args section partially restates defaults already present in the schema, plus the hardware-stop item runs several sentences, so it is efficient but not maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, annotation-free, no-output-schema tool, the description covers return identity (watch_id), all termination outcomes including the special hardware_stop payload block, and the snapshot-flagging behavior. An agent has enough to call it correctly and to interpret 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 coverage is 88% but only documents defaults; the description's Args section adds real meaning — units (seconds), semantics (stall_timeout=0 disables stall detection, cancel_at_percent=0 disables, snapshot_interval vs poll_interval distinction), the save path (~/.kiln/timelapses/<watch_id>/) and persistence behavior, plus a worked example for cancel_at_percent=50.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Start background monitoring of an in-progress print,' and names the companion tools (watch_print_status, stop_watch_print) so the agent knows the lifecycle. It stops short of distinguishing itself from similar siblings like monitor_print, await_print_completion, or monitor_print_vision that appear in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context: cancel_at_percent is recommended 'for test prints, calibration runs, or any case where you want to stop at a specific progress point,' and save_to_disk is tied to the follow-up list_snapshots query. It enumerates all five termination conditions, which effectively tells the agent when the call returns. It does not state exclusions versus alternative monitoring tools.
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 | Default: 60. | |
| watch_id | Yes | ||
| event_types | No | ||
| block_until_event | No | Default: false. |
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 it well: it discloses the block/timeout semantics, the default event-type set and why each is included, the MCP client timeout must exceed `timeout`, and the three distinct return shapes (`events_received`, `timed_out: True`, `watcher_already_finished: True`). It also pre-empts the edge case where a recovered print never fires `print.terminal`.
Agents need to know what a tool does to the 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 and the key polling-vs-blocking decision, then a clean Args block, then return-value behavior. It restates `block_until_event` and its default in both prose and Args, which is slightly redundant, but every paragraph carries operational 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 exists, yet the description defines the return payload variants an agent must branch on, and includes the timeout-budget advice needed to call it without the client killing the call mid-wait. Nothing essential is missing for correct 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 only 50% (only the two defaults are documented in the schema), yet the description documents all four parameters with meaning, defaults, and rationale — including the concrete default event-type list and an example of customizing it to `vision.frame_captured`. This is meaningfully 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?
States a specific verb+resource ('Check the current status of a background print watcher') and enumerates what the result contains (progress, collected snapshots, finished flag). It also ties itself to the sibling `watch_print` that produces the `watch_id`, so an agent can place it in the workflow without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts the two modes: default returns immediately, `block_until_event=True` waits server-side, and it recommends looping a single blocking call instead of polling every N seconds. It names no sibling alternatives from the very large tool list (e.g. `monitor_print`, `print_status_lite`, `await_print_completion`), so cross-tool routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webcam_streamA
Control the local live-video relay for the print monitor.
ONE connection to the printer's camera, re-served as an MJPEG stream on
this machine so every viewer shares it. Reads an HTTP MJPEG webcam
(OctoPrint, Moonraker, a camera you registered) or a Bambu A1 / P1
camera's own port-6000 feed. The reply's ``capability`` says whether
this printer can be relayed and, when not, why — an X1 / P2S / H2
camera streams RTSPS, which the relay does not carry (snapshots still
work). ``stream`` carries the frame's age and the measured frame rate:
``live`` is false when the picture may be frozen.
Local-only: the relay reads the camera over your LAN and serves on
loopback, so on the hosted server it says so instead of starting.
Snapshots (``printer_snapshot``, ``monitor_print``) are unchanged.
A refused start on a printer type that has a camera check carries
``check_available: true``; ``action="check"`` then looks at what that
printer's likely camera addresses actually serve.
Args:
printer_name: Target printer. Omit for the default printer.
action: One of ``"start"``, ``"stop"``, ``"status"``, or
``"check"``. ``"check"`` runs only when asked: it tries each
address this printer type's camera is known to answer on, on
the printer's own host, with one GET each (a printer that gives
out its camera address on request is asked for it first, as a
start does), and replies with
``checks`` (what each served — a live stream, a still, a WebRTC
page, a web page, an error, or nothing — and where the address
comes from), a ``summary`` and a ``next_step``. It registers
nothing; when it finds a live stream, ``next_step`` says how to
register that address as the printer's camera. Local-only,
like ``"start"``.
port: Local port for the stream server (default 8081).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Default: 8081. | |
| action | No | Default: "status". | |
| printer_name | 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 thoroughly: it discloses the single shared upstream connection, the local-only/loopback restriction that causes refusal on the hosted server, the capability field that explains unrelayable camera types (RTSPS), the liveness signal, and the check_available/check flow. These are exactly the operational constraints an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and scope are front-loaded and information-dense, but there is redundancy — "Local-only" is stated twice and the long parenthetical describing check's probing behavior could be trimmed. Mostly every sentence carries signal, so the verbosity is a minor deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 compensates by describing the return shape (capability with reasons, stream with frame age and measured rate, checks/summary/next_step for check). For a three-parameter, no-annotation tool, nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema omits the action enum entirely, yet the description enumerates "start", "stop", "status", and "check" and spells out what each does, including check's one-GET-per-address probing and non-registering behavior. printer_name's default-to-default-printer semantics are also added 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 first sentence names a specific verb and resource: "Control the local live-video relay for the print monitor." The description then distinguishes it from sibling tools by explicitly noting that snapshots via printer_snapshot and monitor_print are unchanged, so an agent can tell which tool does what without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four actions are each given context, including the conditional rule that "check" runs only when the caller asks, and it clarifies that stills remain the province of printer_snapshot/monitor_print. However, it never states a positive selection rule such as "use this when you need live video rather than a still," leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wipe_nozzleA
Clean the nozzle tip on the printer's own wipe pad.
Heats to the loaded material's window (or the temperature given), parks
over the purge chute while heating, snaps the tail with the vendor's
own retract, then runs the wipe-pad pass the machine's start sequence
runs and reports where the head ended up. Only where the declared
model's pad pass is served one plan at a time through Kiln's hosted service for a printer paired to your Kiln sign-in, free, and kept on your machine so it works offline
(``printer_model`` in config.yaml names the model). Any other model is
refused with the reason rather than moved to a guessed coordinate: use
the printer's own screen, or start a print — its start sequence wipes
on the pad. No model ever borrows a sibling's position.
Same gate as ``purge_filament``: refused while printing, below 170 °C,
above the safety ceiling, outside the loaded spool's own window. Also
refused while paused — the head is parked over the part and Kiln does
not travel mid-print. The pad is touched the machine's own way, on the
way down in temperature. ``extrusion_verified`` stays ``None``: Bambu
acknowledges no G-code, so "no fault raised" is the strongest thing the
printer can say — look at the tip.
Args:
material: e.g. ``"PLA"`` — picks a temperature when none is given.
temperature: Hotend target in °C. Omit to use the middle of the
spool's (AMS) or material's window.
slot: AMS tray whose temperature window applies (Bambu). Omit to
use the tray currently feeding the nozzle.
wait_seconds: How long after the wipe to watch for a fault code
(default 45).
keep_hot: Leave the heater ON afterwards, for a caller about to do
something else hot. Off by default: every op ends with the
heater off and says so; where the machine's own cool-down is
served, the part fan goes on and Kiln turns it off on its own
once the nozzle reads the hand-off temperature -- the answer
does not wait for that, and ``printer_status`` shows it.
plate_clear: A PERSON's statement that the plate is empty, given on
THIS call. Read on every call by a wipe whose plan presses the
plate (its Z datum is taken on the plate, or the head has to
cross the plate to reach the pad), whatever the plate record
says -- the record cannot see a print started from the printer's
own screen; without it the tool refuses with
``PLATE_CLEAR_REQUIRED`` and, where the printer has a camera,
``snapshot_path`` -- look, then call again with it set. Never
set it on a person's behalf.
step: Send only this step of the wipe's plan (1-based); the answer
describes the next one, and the finish (heater off, the
cool-down) runs after the last step. Step mode is how a wipe
no one has yet run on a real machine is benched -- one motion,
one report, one go -- and the only way such a wipe runs.
plan_only: Describe the steps; send nothing.
printer_name: Which printer. Omit for the default one.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | ||
| step | No | ||
| keep_hot | No | Default: false. | |
| material | No | ||
| plan_only | No | Default: false. | |
| plate_clear | No | Default: false. | |
| temperature | No | ||
| printer_name | No | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavior burden and does so: it discloses the safety gate, end-of-op state (heater off, cool-down fan handled by Kiln), that extrusion_verified stays None because Bambu acknowledges no G-code, the plan_only/step benching mode, and the plate_clear refusal with snapshot_path. Nothing about side effects or required assertions is left 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?
Front-loads the purpose, then conditions, then a clean Args block, and most sentences earn their place given the complexity. However, the sentence about the hosted service ('served one plan at a time through Kiln's hosted service ... free, and kept on your machine') is a dense run-on that is hard to parse, and the pad/gate material is restated across paragraphs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with no annotations and no output schema, the description covers everything an agent needs: refusal codes, what the response reports ('where the head ended up'), what it deliberately does not report (extrusion_verified), and the state the machine is left in. No missing preconditions or return expectations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 33% and the schema descriptions are trivial ('Default: false.'), so the description must compensate — and it does, documenting all 9 args with semantics the schema lacks: material picks a temperature, temperature/slot interact with AMS windows, wait_seconds defaults to 45, keep_hot changes ending state, plate_clear is a person's assertion never to be set on their behalf, and step/plan_only define plan execution modes.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource ('Clean the nozzle tip on the printer's own wipe pad') and the body spells out the exact motion sequence (heat to window, park over purge chute, tail snap, wipe-pad pass). It explicitly distinguishes itself from purge_filament and from the manual alternatives (printer screen / start a print), so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States precisely when the tool works ('only where the declared model's pad pass is served ... printer paired to your Kiln sign-in') and when it does not, with the fallback named. It enumerates refusal conditions (printing, below 170 °C, above ceiling, outside spool window, paused) and the PLATE_CLEAR_REQUIRED case, which is exactly the when/when-not detail an agent needs.
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 for the start sequence.
Omitted, the temperature the G-code itself first heats to.
bed_temp: Bed temperature in °C, likewise.
filament_type: Filament type string — ``"PLA"``, ``"PETG"``,
``"ABS"``, etc. Omitted, the type the slicer wrote into the
G-code (every Kiln slice carries the material it was weighed
as). The response's ``filament_type`` is what the printer is
told, in Bambu's own vocabulary.
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).
bed_type: The plate fitted: ``"textured_plate"``, ``"hot_plate"``
(smooth PEI), ``"cool_plate"``, ``"eng_plate"`` or
``"supertack_plate"``. Omitted, the textured plate. The
printer's start sequence trims the nozzle height for the plate
it is told, so say it when the plate is not the textured one.
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.
When ``filament_colors`` are given, the result says whether they are on
the printer, as ``colour_availability`` (absent when Kiln cannot see
what is loaded). Relay its ``say`` as written and add nothing about
filament: never suggest buying filament unless the person asks for one
or says yes to the offer in ``say``. On a yes, call
``find_closest_filaments`` with these colours and the print's material.
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | ||
| bed_type | No | ||
| stl_path | No | ||
| gcode_path | Yes | ||
| hotend_temp | No | ||
| resume_mode | No | Default: false. | |
| filament_type | No | ||
| num_filaments | No | Default: 1. | |
| 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 the full burden and does well: it discloses the Bambu-only scope, the slicing prerequisites, per-parameter defaults (temp, filament type, bed plate), the printer-facing consequence of bed_type (nozzle height trimming), auto-thumbnail generation via OpenSCAD, and the returned dict's output_path. It omits failure modes, overwrite behavior if output_path already exists, and disk/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 core purpose and constraint are front-loaded in one sentence, then the Args block is scannable and dense with useful detail. The closing guidance about relaying colour_availability's `say` verbatim and not upselling filament is long and operational rather than definitional, and resume_mode is silently dropped from an otherwise complete Args list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with no annotations and no output schema, the description supplies prerequisites, defaults, formats, side effects (thumbnail embedding), return shape, and downstream calls. An agent can invoke it correctly without opening the schema, aside from the unexplained resume_mode flag.
Complex tools with many parameters or behaviors need more documentation. Simple 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 only 17%, but the description documents 11 of the 12 parameters with real semantics: units (°C), accepted bed_type enum values, hex color format with an example, absolute-path requirements, and default fallback behavior for omitted temps and filament type. The only undocumented parameter is resume_mode, which is the sole gap in an otherwise compensating 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 first sentence gives a specific verb and resource with a constraint: 'Wrap raw PrusaSlicer G-code in a Bambu-compatible 3MF (Bambu Lab only)'. The motivating paragraph explains why the packaging step is needed. It never names the near-identical sibling wrap_gcode_as_resume_3mf, so sibling differentiation rests on the reader inferring 'normal print vs resume'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the preconditions for use (G-code must be sliced with --use-relative-e-distances and empty start/end G-code) and the follow-on workflow (upload_file() then start_print()), which is genuine when-to-use guidance. There is no explicit 'do not use this when…' or pointer to the resume/merge-multicolor variants, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wrap_gcode_as_resume_3mfC
Wrap resume gcode as a Bambu 3MF with start-gcode BYPASSED (Pro).
Everything in Free, plus calibration that learns your printer, mid-print edits, and unlimited textures and decorations. Requires Kiln Pro. Upgrade: https://kiln3d.com/pricing?src=agent&tool=wrap_gcode_as_resume_3mf
| Name | Required | Description | Default |
|---|---|---|---|
| bed_temp | No | Default: 65. | |
| gcode_path | Yes | ||
| hotend_temp | No | Default: 220. | |
| output_path | No | Default: "". | |
| filament_type | No | Default: "PLA". | |
| source_3mf_path | No | Default: "". | |
| prime_extruder_on_resume | No | Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that start-gcode is bypassed and that Kiln Pro is required — a real precondition. But it omits what happens on a non-Pro account, how source_3mf_path vs output_path interact, and whether the wrap validates or mutates the input 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 one useful sentence is front-loaded, but the remaining two-thirds of the text is a tier upsell and a URL that do not help an agent select or invoke the tool. 'Requires Kiln Pro' earns its place; 'Everything in Free, plus calibration... unlimited textures' does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description establishes purpose and the Pro gate but leaves meaningful gaps: the effect of bypassing start-gcode, the relationship between source_3mf_path and output_path, and failure modes for unlicensed callers.
Complex tools with many parameters or behaviors need more documentation. Simple 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 86%, so the schema already carries the defaults and parameter meanings, giving a baseline of 3. The description adds nothing about bed_temp, hotend_temp, source_3mf_path, or prime_extruder_on_resume, though the bypass note hints at why explicit temperatures are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-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 gives a specific verb and resource (wrap resume gcode as a Bambu 3MF) plus a distinguishing behavior (start-gcode BYPASSED) and a tier marker (Pro). It does not name the obvious sibling wrap_gcode_as_3mf, so the agent must infer the difference, but the 'resume' qualifier and bypass note do most of the work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'resume' qualifier implies this is for interrupted-print recovery G-code, but the description never says when to pick this over wrap_gcode_as_3mf or any recovery tool, nor does it state any exclusions or prerequisites beyond a link to the pricing page.
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.
691 tool updates
v1.5.0- Added
abrasive_escalation - Changed
acquire_printer_lock4 fields changed- removed
Input schema / properties / holder / defaultRemoved value: -"agent" - added
Input schema / properties / holder / descriptionAdded value: +"Default: \"agent\"." - removed
Input schema / properties / timeout_seconds / defaultRemoved value: -30 - added
Input schema / properties / timeout_seconds / descriptionAdded value: +"Default: 30.0."
- Changed
add_assembly_interface8 fields changed- added
Input schema / properties / assembly_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Input schema / properties / assembly_json / typeRemoved value: -"string" - removed
Input schema / properties / clearance_mm / defaultRemoved value: -0.2 - added
Input schema / properties / clearance_mm / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / fastener / defaultRemoved value: -null - removed
Input schema / properties / joint_type / defaultRemoved value: -"clearance_fit" - added
Input schema / properties / joint_type / descriptionAdded value: +"Default: \"clearance_fit\"." - removed
Input schema / properties / magnet_polarity_aligned / defaultRemoved value: -null
- Changed
add_assembly_part12 fields changed- added
Input schema / properties / assembly_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Input schema / properties / assembly_json / typeRemoved value: -"string" - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / position_x / defaultRemoved value: -0 - added
Input schema / properties / position_x / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / position_y / defaultRemoved value: -0 - added
Input schema / properties / position_y / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / position_z / defaultRemoved value: -0 - added
Input schema / properties / position_z / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / role / defaultRemoved value: -"structural" - added
Input schema / properties / role / descriptionAdded value: +"Default: \"structural\"."
- Added
add_feature_during_print - Added
add_feature_during_print_fleet - Changed
add_interception_rule9 fields changed- removed
Input schema / properties / blocked_commands / defaultRemoved value: -null - removed
Input schema / properties / message / defaultRemoved value: -"" - added
Input schema / properties / message / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / modify_params / defaultRemoved value: -null - removed
Input schema / properties / pattern / defaultRemoved value: -null - removed
Input schema / properties / priority / defaultRemoved value: -"medium" - added
Input schema / properties / priority / descriptionAdded value: +"Default: \"medium\"." - removed
Input schema / properties / threshold / defaultRemoved value: -null - removed
Input schema / properties / threshold_max / defaultRemoved value: -null
- Changed
add_mesh_chamfer12 fields changed- removed
Input schema / properties / angle_threshold_deg / defaultRemoved value: -60 - added
Input schema / properties / angle_threshold_deg / descriptionAdded value: +"Default: 60.0." - removed
Input schema / properties / distance_mm / defaultRemoved value: -0.5 - added
Input schema / properties / distance_mm / descriptionAdded value: +"Default: 0.5." - added
Input schema / properties / edgesAdded value: +{ + "description": "Default: \"\".", + "title": "Edges", + "type": "string" +} - added
Input schema / properties / layer_height_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Layer Height Mm" +} - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - added
Input schema / properties / nozzle_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Nozzle Mm" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / plan_onlyAdded value: +{ + "description": "Default: false.", + "title": "Plan Only", + "type": "boolean" +} - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Added
add_mesh_comment - Changed
add_mesh_fillet12 fields changed- removed
Input schema / properties / angle_threshold_deg / defaultRemoved value: -60 - added
Input schema / properties / angle_threshold_deg / descriptionAdded value: +"Default: 60.0." - added
Input schema / properties / edgesAdded value: +{ + "description": "Default: \"\".", + "title": "Edges", + "type": "string" +} - added
Input schema / properties / layer_height_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Layer Height Mm" +} - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - added
Input schema / properties / nozzle_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Nozzle Mm" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / plan_onlyAdded value: +{ + "description": "Default: false.", + "title": "Plan Only", + "type": "boolean" +} - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +} - removed
Input schema / properties / radius_mm / defaultRemoved value: -1 - added
Input schema / properties / radius_mm / descriptionAdded value: +"Default: 1.0."
- Added
add_pin_joints - Added
add_qr_to_product - Changed
add_safety_profile5 fields changed- added
Input schema / properties / printer_nameAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Name", + "type": "string" +} - removed
Input schema / properties / profile / additionalPropertiesRemoved value: -true - added
Input schema / properties / profile / anyOfAdded value: +[ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / profile / typeRemoved value: -"object" - changed
Input schema / requiredPrevious value: -[ - "printer_model", - "profile" -]New value: +[ + "printer_model" +]
- Changed
add_spool10 fields changed- removed
Input schema / properties / brand / defaultRemoved value: -null - removed
Input schema / properties / color / defaultRemoved value: -null - removed
Input schema / properties / cost_usd / defaultRemoved value: -null - added
Input schema / properties / material / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / material / typeRemoved value: -"string" - added
Input schema / properties / remaining_gramsAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Remaining Grams" +} - added
Input schema / properties / spool_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Spool Id" +} - removed
Input schema / properties / weight_grams / defaultRemoved value: -1000 - added
Input schema / properties / weight_grams / descriptionAdded value: +"Default: 1000.0." - removed
Input schema / requiredRemoved value: -[ - "material" -]
- Added
add_team_member - Added
advise_kit_scale - Added
ams_filament_drying - Changed
analyze_design_requirements1 field changed- removed
Input schema / properties / material / defaultRemoved value: -null
- Added
analyze_frame_bracing - Changed
analyze_generation_feedback9 fields changed- removed
Input schema / properties / failure_mode / defaultRemoved value: -null - removed
Input schema / properties / has_bridges / defaultRemoved value: -false - added
Input schema / properties / has_bridges / descriptionAdded value: +"Default: false." - removed
Input schema / properties / has_floating_parts / defaultRemoved value: -false - added
Input schema / properties / has_floating_parts / descriptionAdded value: +"Default: false." - removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -null - removed
Input schema / properties / min_wall_thickness / defaultRemoved value: -null - removed
Input schema / properties / non_manifold / defaultRemoved value: -false - added
Input schema / properties / non_manifold / descriptionAdded value: +"Default: false."
- Added
analyze_mid_print_impact - Changed
analyze_model_geometry2 fields changed- removed
Input schema / properties / model_path / defaultRemoved value: -null - removed
Input schema / properties / model_stats / defaultRemoved value: -null
- Changed
analyze_print_failure_smart5 fields changed- removed
Input schema / properties / error_message / defaultRemoved value: -null - removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / progress / defaultRemoved value: -0 - added
Input schema / properties / progress / descriptionAdded value: +"Default: 0.0."
- Changed
analyze_printability15 fields changed- removed
Input schema / properties / build_volume_x / defaultRemoved value: -null - removed
Input schema / properties / build_volume_y / defaultRemoved value: -null - removed
Input schema / properties / build_volume_z / defaultRemoved value: -null - removed
Input schema / properties / layer_height / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - added
Input schema / properties / max_overhang_angle / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -45 - removed
Input schema / properties / max_overhang_angle / typeRemoved value: -"number" - added
Input schema / properties / nozzle_diameter / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter / typeRemoved value: -"number" - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
analyze_structural_risks4 fields changed- removed
Input schema / properties / min_cross_section_mm2 / defaultRemoved value: -4 - added
Input schema / properties / min_cross_section_mm2 / descriptionAdded value: +"Default: 4.0." - removed
Input schema / properties / sharp_angle_threshold_deg / defaultRemoved value: -60 - added
Input schema / properties / sharp_angle_threshold_deg / descriptionAdded value: +"Default: 60.0."
- Changed
analyze_warping_risk4 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
annotate_decoration_preset_branch - Added
annotate_design_branch - Added
annotate_feature_branch - Added
answer_material_question - Added
answer_printer_question - Added
apply_calibration_recommendations - Changed
apply_decoration6 fields changed- removed
Input schema / properties / face / defaultRemoved value: -"auto" - added
Input schema / properties / face / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
apply_decoration_preset - Changed
apply_design_reinforcements13 fields changed- removed
Input schema / properties / base_height_mm / defaultRemoved value: -2 - added
Input schema / properties / base_height_mm / descriptionAdded value: +"Default: 2.0." - added
Input schema / properties / fastenerAdded value: +{ + "description": "Default: \"\".", + "title": "Fastener", + "type": "string" +} - removed
Input schema / properties / fillet_radius_mm / defaultRemoved value: -1.5 - added
Input schema / properties / fillet_radius_mm / descriptionAdded value: +"Default: 1.5." - added
Input schema / properties / layer_height_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Layer Height Mm" +} - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - added
Input schema / properties / nozzle_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Nozzle Mm" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +} - removed
Input schema / properties / wall_thicken_mm / defaultRemoved value: -0.6 - added
Input schema / properties / wall_thicken_mm / descriptionAdded value: +"Default: 0.6."
- Added
apply_geometric_texture - Added
apply_image_texture - Added
apply_procedural_texture - Added
apply_role_template - Added
archive_decoration_preset - Added
archive_design - Added
archive_feature - Changed
arrange_parts_on_plate10 fields changed- removed
Input schema / properties / copies / defaultRemoved value: -"" - added
Input schema / properties / copies / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / plate_depth_mm / defaultRemoved value: -256 - added
Input schema / properties / plate_depth_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / plate_width_mm / defaultRemoved value: -256 - added
Input schema / properties / plate_width_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / spacing_mm / defaultRemoved value: -5 - added
Input schema / properties / spacing_mm / descriptionAdded value: +"Default: 5.0."
- Added
assess_bom_sourcing_risk - Added
assess_calibration_status - Added
assess_conformal_coating_application - Added
assess_drawing_manufacturability - Added
assess_fair_reaccomplishment - Added
assess_fleet_power_loss - Added
attach_part_feature - Changed
audit_original_design12 fields changed- removed
Input schema / properties / build_volume_x / defaultRemoved value: -null - removed
Input schema / properties / build_volume_y / defaultRemoved value: -null - removed
Input schema / properties / build_volume_z / defaultRemoved value: -null - removed
Input schema / properties / layer_height / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -45 - added
Input schema / properties / max_overhang_angle / descriptionAdded value: +"Default: 45.0." - added
Input schema / properties / nozzle_diameter / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter / typeRemoved value: -"number" - removed
Input schema / properties / printer_model / defaultRemoved value: -null
- Added
auto_add_rubber_feet - Changed
auto_arrange_parts_on_plate8 fields changed- removed
Input schema / properties / gap_mm / defaultRemoved value: -5 - added
Input schema / properties / gap_mm / descriptionAdded value: +"Default: 5.0." - removed
Input schema / properties / plate_depth / defaultRemoved value: -256 - added
Input schema / properties / plate_depth / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / plate_width / defaultRemoved value: -256 - added
Input schema / properties / plate_width / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
auto_color_by_height5 fields changed- removed
Input schema / properties / color_palette / defaultRemoved value: -null - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - removed
Input schema / properties / num_colors / defaultRemoved value: -4 - added
Input schema / properties / num_colors / descriptionAdded value: +"Default: 4." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Changed
auto_color_by_region7 fields changed- removed
Input schema / properties / color_palette / defaultRemoved value: -null - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - removed
Input schema / properties / method / defaultRemoved value: -"z_height" - added
Input schema / properties / method / descriptionAdded value: +"Default: \"z_height\"." - removed
Input schema / properties / num_colors / defaultRemoved value: -4 - added
Input schema / properties / num_colors / descriptionAdded value: +"Default: 4." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Added
auto_detect_nozzle - Added
auto_generate_manual_for_print - Added
auto_multicolor_from_texture - Changed
auto_orient_model7 fields changed- removed
Input schema / properties / apply / defaultRemoved value: -false - added
Input schema / properties / apply / descriptionAdded value: +"Default: false." - removed
Input schema / properties / candidates / defaultRemoved value: -24 - added
Input schema / properties / candidates / descriptionAdded value: +"Default: 24." - removed
Input schema / properties / nozzle_diameter / defaultRemoved value: -0.4 - added
Input schema / properties / nozzle_diameter / descriptionAdded value: +"Default: 0.4." - removed
Input schema / properties / output_path / defaultRemoved value: -null
- Added
auto_recess_pocket - Added
auto_recover - Changed
await_generation6 fields changed- removed
Input schema / properties / poll_interval / defaultRemoved value: -10 - added
Input schema / properties / poll_interval / descriptionAdded value: +"Default: 10." - removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"." - removed
Input schema / properties / timeout / defaultRemoved value: -600 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 600."
- Changed
await_print_completion7 fields changed- removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / poll_interval / defaultRemoved value: -15 - added
Input schema / properties / poll_interval / descriptionAdded value: +"Default: 15." - removed
Input schema / properties / timeout / defaultRemoved value: -7200 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 7200."
- Added
backfill_artifact_into_org - Changed
backup_database3 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -null - removed
Input schema / properties / redact / defaultRemoved value: -true - added
Input schema / properties / redact / descriptionAdded value: +"Default: true."
- Added
batch_decorate - Added
batch_estimate_plate_part_costs - Added
batch_generate_products - Changed
bed_level_status1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
best_design_version - Added
bisect_bad - Added
bisect_current - Added
bisect_end - Added
bisect_good - Added
bisect_skip - Added
bisect_start - Changed
boolean_mesh_op2 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Changed
browse_models7 fields changed- removed
Input schema / properties / browse_type / defaultRemoved value: -"popular" - added
Input schema / properties / browse_type / descriptionAdded value: +"Default: \"popular\"." - removed
Input schema / properties / category / defaultRemoved value: -null - removed
Input schema / properties / page / defaultRemoved value: -1 - added
Input schema / properties / page / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / per_page / defaultRemoved value: -10 - added
Input schema / properties / per_page / descriptionAdded value: +"Default: 10."
- Changed
build_generation_prompt3 fields changed- removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / printer_model / defaultRemoved value: -null - removed
Input schema / properties / provider / defaultRemoved value: -null
- Changed
build_material_overrides1 field changed- removed
Input schema / properties / printer_id / defaultRemoved value: -null
- Added
build_organic_mesh - Changed
build_parametric_prompt2 fields changed- removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / printer_model / defaultRemoved value: -null
- Changed
cache_design2 fields changed- removed
Input schema / properties / label / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -null
- Changed
cache_design_with_source6 fields changed- removed
Input schema / properties / filament_type / defaultRemoved value: -null - removed
Input schema / properties / generation_prompt / defaultRemoved value: -"" - added
Input schema / properties / generation_prompt / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / provider / defaultRemoved value: -"openscad" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"openscad\"." - removed
Input schema / properties / tags / defaultRemoved value: -null
- Changed
cache_model7 fields changed- changed
Input schema / properties / dimensions / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / dimensions / defaultRemoved value: -null - changed
Input schema / properties / metadata / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / metadata / defaultRemoved value: -null - removed
Input schema / properties / prompt / defaultRemoved value: -null - removed
Input schema / properties / source_id / defaultRemoved value: -null - removed
Input schema / properties / tags / defaultRemoved value: -null
- Changed
calibrate_direct1 field changed- removed
Input schema / properties / options / defaultRemoved value: -null
- Changed
cancel_print6 fields changed- removed
Input schema / properties / expected_bed_target / defaultRemoved value: -null - removed
Input schema / properties / expected_chamber_target / defaultRemoved value: -null - removed
Input schema / properties / expected_tool_target / defaultRemoved value: -null - removed
Input schema / properties / preserve_temperatures / defaultRemoved value: -false - added
Input schema / properties / preserve_temperatures / descriptionAdded value: +"Default: false." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
cancel_print_recovery2 fields changed- removed
Input schema / properties / reason / defaultRemoved value: -"" - added
Input schema / properties / reason / descriptionAdded value: +"Default: \"\"."
- Changed
cancel_queued_jobs3 fields changed- removed
Input schema / properties / dry_run / defaultRemoved value: -false - added
Input schema / properties / dry_run / descriptionAdded value: +"Default: false." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
center_model_on_bed8 fields changed- removed
Input schema / properties / bed_x_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_x_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / bed_y_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_y_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
check_ambient_conditions1 field changed- removed
Input schema / properties / material / defaultRemoved value: -null
- Changed
check_assembly_clearances4 fields changed- added
Input schema / properties / assembly_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Input schema / properties / assembly_json / typeRemoved value: -"string" - removed
Input schema / properties / default_clearance_mm / defaultRemoved value: -0.2 - added
Input schema / properties / default_clearance_mm / descriptionAdded value: +"Default: 0.2."
- Added
check_assembly_stands - Changed
check_autonomy8 fields changed- removed
Input schema / properties / bed_temp / defaultRemoved value: -0 - added
Input schema / properties / bed_temp / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / estimated_time_seconds / defaultRemoved value: -0 - added
Input schema / properties / estimated_time_seconds / descriptionAdded value: +"Default: 0." - removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / tool_temp / defaultRemoved value: -0 - added
Input schema / properties / tool_temp / descriptionAdded value: +"Default: 0.0."
- Added
check_chemical_resistance - Added
check_design_regression - Added
check_magnet_design - Changed
check_material_environment1 field changed- added
Input schema / properties / requirementsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Requirements" +}
- Changed
check_material_match1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
check_material_sufficiency1 field changed- removed
Input schema / properties / material_type / defaultRemoved value: -null
- Added
check_nozzle_capacity_for_print - Added
check_power_loss_recovery - Changed
check_print_health4 fields changed- removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / model_path / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
check_print_readiness13 fields changed- removed
Input schema / properties / auto_fix / defaultRemoved value: -false - added
Input schema / properties / auto_fix / descriptionAdded value: +"Default: false." - removed
Input schema / properties / bed_x_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_x_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / bed_y_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_y_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / bed_z_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_z_mm / descriptionAdded value: +"Default: 256.0." - added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"pla\".", + "title": "Material", + "type": "string" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
check_skin_contact_declaration - Added
check_skin_contact_suitability - Added
cherry_pick_decoration_modification - Added
cherry_pick_feature_modification - Added
cherry_pick_modification - Added
classify_calibration_confidence - Changed
clear_emergency_stop2 fields changed- removed
Input schema / properties / acknowledged_by / defaultRemoved value: -"operator" - added
Input schema / properties / acknowledged_by / descriptionAdded value: +"Default: \"operator\"."
- Changed
clear_printer_error1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
cloud_backup_configure - Added
cloud_clone_design - Added
cloud_clone_feature - Added
cloud_clone_preset - Added
cloud_documents - Added
cloud_list_remote_branches - Added
cloud_list_remote_releases - Added
cloud_pull_branch - Added
cloud_pull_feature_branch - Added
cloud_pull_preset_branch - Added
cloud_push_branch - Added
cloud_push_feature_branch - Added
cloud_push_feature_release - Added
cloud_push_preset_branch - Added
cloud_push_preset_release - Added
cloud_remote_list - Added
cloud_retire_remote_branch - Changed
cloud_sync_configure2 fields changed- removed
Input schema / properties / interval / defaultRemoved value: -60 - added
Input schema / properties / interval / descriptionAdded value: +"Default: 60.0."
- Added
compare_branches - Added
compare_design_versions - Changed
compare_print_options12 fields changed- removed
Input schema / properties / electricity_rate / defaultRemoved value: -0.12 - added
Input schema / properties / electricity_rate / descriptionAdded value: +"Default: 0.12." - removed
Input schema / properties / fulfillment_material_id / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +} - removed
Input schema / properties / printer_wattage / defaultRemoved value: -200 - added
Input schema / properties / printer_wattage / descriptionAdded value: +"Default: 200.0." - removed
Input schema / properties / quantity / defaultRemoved value: -1 - added
Input schema / properties / quantity / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / shipping_country / defaultRemoved value: -"US" - added
Input schema / properties / shipping_country / descriptionAdded value: +"Default: \"US\"."
- Changed
compare_renders8 fields changed- removed
Input schema / properties / angle / defaultRemoved value: -"isometric" - added
Input schema / properties / angle / descriptionAdded value: +"Default: \"isometric\"." - removed
Input schema / properties / colors / defaultRemoved value: -null - removed
Input schema / properties / height / defaultRemoved value: -600 - added
Input schema / properties / height / descriptionAdded value: +"Default: 600." - removed
Input schema / properties / labels / defaultRemoved value: -null - removed
Input schema / properties / width / defaultRemoved value: -800 - added
Input schema / properties / width / descriptionAdded value: +"Default: 800."
- Changed
compile_scad9 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - added
Input schema / properties / colorAdded value: +{ + "description": "Default: \"\".", + "title": "Color", + "type": "string" +} - added
Input schema / properties / fastenerAdded value: +{ + "description": "Default: \"\".", + "title": "Fastener", + "type": "string" +} - removed
Input schema / properties / scad_code / defaultRemoved value: -"" - added
Input schema / properties / scad_code / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / scad_path / defaultRemoved value: -"" - added
Input schema / properties / scad_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / timeout / defaultRemoved value: -300 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 300."
- Changed
complete_print_recovery5 fields changed- removed
Input schema / properties / alternative_printers / defaultRemoved value: -null - removed
Input schema / properties / completion_pct_at_failure / defaultRemoved value: -0 - added
Input schema / properties / completion_pct_at_failure / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / notes / defaultRemoved value: -"" - added
Input schema / properties / notes / descriptionAdded value: +"Default: \"\"."
- Changed
compose_assembly_parts2 fields changed- added
Input schema / properties / assembly_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Input schema / properties / assembly_json / typeRemoved value: -"string"
- Changed
compose_multicolor_3mf6 fields changed- added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"\".", + "title": "Material", + "type": "string" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / plate_depthAdded value: +{ + "description": "Default: 256.0.", + "title": "Plate Depth", + "type": "number" +} - added
Input schema / properties / plate_widthAdded value: +{ + "description": "Default: 256.0.", + "title": "Plate Width", + "type": "number" +} - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Changed
compose_part_from_primitives11 fields changed- removed
Input schema / properties / bed_x_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_x_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / bed_y_mm / defaultRemoved value: -256 - added
Input schema / properties / bed_y_mm / descriptionAdded value: +"Default: 256.0." - added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / center_on_bed / defaultRemoved value: -true - added
Input schema / properties / center_on_bed / descriptionAdded value: +"Default: true." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
compute_iso_fit - Changed
configure_sso12 fields changed- removed
Input schema / properties / allowed_domains / defaultRemoved value: -"" - added
Input schema / properties / allowed_domains / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / client_secret / defaultRemoved value: -"" - added
Input schema / properties / client_secret / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / protocol / defaultRemoved value: -"oidc" - added
Input schema / properties / protocol / descriptionAdded value: +"Default: \"oidc\"." - removed
Input schema / properties / redirect_uri / defaultRemoved value: -"" - added
Input schema / properties / redirect_uri / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / role_mapping / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } +] - removed
Input schema / properties / role_mapping / defaultRemoved value: -"" - added
Input schema / properties / role_mapping / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / role_mapping / typeRemoved value: -"string"
- Removed
connect_provider_account - Added
consent_window_status - Changed
contribute_community_print8 fields changed- removed
Input schema / properties / failure_mode / defaultRemoved value: -null - removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / print_time_seconds / defaultRemoved value: -0 - added
Input schema / properties / print_time_seconds / descriptionAdded value: +"Default: 0." - removed
Input schema / properties / quality_grade / defaultRemoved value: -"B" - added
Input schema / properties / quality_grade / descriptionAdded value: +"Default: \"B\"."
- Added
create_decoration_preset - Added
create_decoration_preset_branch - Added
create_design - Added
create_design_branch - Added
create_feature_branch - Changed
create_print_service_order13 fields changed- removed
Input schema / properties / color / defaultRemoved value: -null - removed
Input schema / properties / intent / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - removed
Input schema / properties / max_budget_usd / defaultRemoved value: -null - removed
Input schema / properties / model_path / defaultRemoved value: -null - removed
Input schema / properties / model_url / defaultRemoved value: -null - removed
Input schema / properties / prefer_local / defaultRemoved value: -true - added
Input schema / properties / prefer_local / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / prompt / defaultRemoved value: -null - removed
Input schema / properties / quantity / defaultRemoved value: -1 - added
Input schema / properties / quantity / descriptionAdded value: +"Default: 1."
- Changed
create_project3 fields changed- removed
Input schema / properties / budget / defaultRemoved value: -null - removed
Input schema / properties / description / defaultRemoved value: -"" - added
Input schema / properties / description / descriptionAdded value: +"Default: \"\"."
- Added
create_team - Added
cross_branch_ab_report - Added
cross_feature_ab_report - Added
cross_preset_ab_report - Changed
cross_section_view6 fields changed- removed
Input schema / properties / offset_mm / defaultRemoved value: -"" - added
Input schema / properties / offset_mm / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / offset_ratio / defaultRemoved value: -0.5 - added
Input schema / properties / offset_ratio / descriptionAdded value: +"Default: 0.5." - removed
Input schema / properties / plane / defaultRemoved value: -"z" - added
Input schema / properties / plane / descriptionAdded value: +"Default: \"z\"."
- Added
cutter_wear_status - Added
deboss_during_print - Added
decorate_during_print - Added
decorate_during_print_fleet - Changed
decorate_surface28 fields changed- removed
Input schema / properties / absolute_size_mm / defaultRemoved value: -0 - added
Input schema / properties / absolute_size_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / content_type / defaultRemoved value: -"auto" - added
Input schema / properties / content_type / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / depth_mm / defaultRemoved value: -0 - added
Input schema / properties / depth_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / face / defaultRemoved value: -"auto" - added
Input schema / properties / face / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / image_style / defaultRemoved value: -"auto" - added
Input schema / properties / image_style / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / mode / defaultRemoved value: -"deboss" - added
Input schema / properties / mode / descriptionAdded value: +"Default: \"deboss\"." - removed
Input schema / properties / offset_x_mm / defaultRemoved value: -0 - added
Input schema / properties / offset_x_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / offset_y_mm / defaultRemoved value: -0 - added
Input schema / properties / offset_y_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / placement / defaultRemoved value: -"center" - added
Input schema / properties / placement / descriptionAdded value: +"Default: \"center\"." - removed
Input schema / properties / scale / defaultRemoved value: -0.7 - added
Input schema / properties / scale / descriptionAdded value: +"Default: 0.7." - removed
Input schema / properties / svg_id / defaultRemoved value: -"" - added
Input schema / properties / svg_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / svg_layer / defaultRemoved value: -"" - added
Input schema / properties / svg_layer / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / template_id / defaultRemoved value: -"" - added
Input schema / properties / template_id / descriptionAdded value: +"Default: \"\"."
- Added
decoration_history - Changed
delete_agent_note3 fields changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / scope / defaultRemoved value: -"global" - added
Input schema / properties / scope / descriptionAdded value: +"Default: \"global\"."
- Added
delete_custom_palette - Added
delete_decoration - Added
delete_design - Added
delete_feature - Added
delete_team - Added
derive_assembly_plan - Added
describe_face - Changed
design_advisor4 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_model / defaultRemoved value: -"" - added
Input schema / properties / printer_model / descriptionAdded value: +"Default: \"\"."
- Added
design_for_load - Added
design_hole_for_product - Changed
design_improvement_plan4 fields changed- removed
Input schema / properties / min_cross_section_mm2 / defaultRemoved value: -4 - added
Input schema / properties / min_cross_section_mm2 / descriptionAdded value: +"Default: 4.0." - removed
Input schema / properties / sharp_angle_threshold_deg / defaultRemoved value: -60 - added
Input schema / properties / sharp_angle_threshold_deg / descriptionAdded value: +"Default: 60.0."
- Added
design_session - Changed
design_to_gcode_pipeline10 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / infill_percent / defaultRemoved value: -20 - added
Input schema / properties / infill_percent / descriptionAdded value: +"Default: 20.0." - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / output_dir / defaultRemoved value: -"" - added
Input schema / properties / output_dir / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_model / defaultRemoved value: -"" - added
Input schema / properties / printer_model / descriptionAdded value: +"Default: \"\"."
- Added
design_version_health - Added
detect_decoration_preset_merge_conflicts - Added
detect_feature_merge_conflicts - Added
detect_merge_conflicts - Changed
detect_mesh_pockets2 fields changed- removed
Input schema / properties / min_depth_mm / defaultRemoved value: -0.3 - added
Input schema / properties / min_depth_mm / descriptionAdded value: +"Default: 0.3."
- Changed
detect_print_failure2 fields changed- removed
Input schema / properties / job_info / defaultRemoved value: -null - removed
Input schema / properties / telemetry_history / defaultRemoved value: -null
- Changed
diagnose_print_failure_live4 fields changed- removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / model_path / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
diff_assembly_manuals - Changed
discover_printers2 fields changed- removed
Input schema / properties / timeout / defaultRemoved value: -5 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 5.0."
- Added
dismiss_regression_alert - Changed
download_and_upload5 fields changed- removed
Input schema / properties / file_id / defaultRemoved value: -null - removed
Input schema / properties / model_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / source / defaultRemoved value: -"thingiverse" - added
Input schema / properties / source / descriptionAdded value: +"Default: \"thingiverse\"."
- Changed
download_generated_model4 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / output_path / defaultRemoved value: -null - removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"."
- Changed
download_model9 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / dest_dir / defaultRemoved value: -null - removed
Input schema / properties / download_all / defaultRemoved value: -false - added
Input schema / properties / download_all / descriptionAdded value: +"Default: false." - removed
Input schema / properties / file_id / defaultRemoved value: -null - removed
Input schema / properties / file_name / defaultRemoved value: -null - removed
Input schema / properties / model_id / defaultRemoved value: -null - removed
Input schema / properties / source / defaultRemoved value: -"thingiverse" - added
Input schema / properties / source / descriptionAdded value: +"Default: \"thingiverse\"."
- Added
drying_advisor - Added
embed_manual_in_3mf - Changed
emergency_status3 fields changed- removed
Input schema / properties / include_unlatched / defaultRemoved value: -false - added
Input schema / properties / include_unlatched / descriptionAdded value: +"Default: false." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
emergency_stop6 fields changed- removed
Input schema / properties / note / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / reason / defaultRemoved value: -"user_request" - added
Input schema / properties / reason / descriptionAdded value: +"Default: \"user_request\"." - removed
Input schema / properties / source / defaultRemoved value: -"mcp" - added
Input schema / properties / source / descriptionAdded value: +"Default: \"mcp\"."
- Changed
emergency_trip_input4 fields changed- removed
Input schema / properties / input_name / defaultRemoved value: -"external_button" - added
Input schema / properties / input_name / descriptionAdded value: +"Default: \"external_button\"." - removed
Input schema / properties / note / defaultRemoved value: -null - removed
Input schema / properties / token / defaultRemoved value: -null
- Changed
estimate_adaptive_time_savings2 fields changed- removed
Input schema / properties / uniform_height_mm / defaultRemoved value: -0.2 - added
Input schema / properties / uniform_height_mm / descriptionAdded value: +"Default: 0.2."
- Added
estimate_batch_cost - Changed
estimate_before_design33 fields changed- removed
Input schema / properties / depth_mm / defaultRemoved value: -0 - added
Input schema / properties / depth_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / electricity_rate / defaultRemoved value: -0.12 - added
Input schema / properties / electricity_rate / descriptionAdded value: +"Default: 0.12." - removed
Input schema / properties / height_mm / defaultRemoved value: -0 - added
Input schema / properties / height_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / infill_percent / defaultRemoved value: --1 - added
Input schema / properties / infill_percent / descriptionAdded value: +"Default: -1.0." - removed
Input schema / properties / layer_height_mm / defaultRemoved value: -0 - added
Input schema / properties / layer_height_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / material_fractions / defaultRemoved value: -"" - added
Input schema / properties / material_fractions / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / material_roles / defaultRemoved value: -"" - added
Input schema / properties / material_roles / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / materials / defaultRemoved value: -"PLA" - added
Input schema / properties / materials / descriptionAdded value: +"Default: \"PLA\"." - added
Input schema / properties / nozzle_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_mm / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_mm / typeRemoved value: -"number" - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_wattage / defaultRemoved value: -200 - added
Input schema / properties / printer_wattage / descriptionAdded value: +"Default: 200.0." - removed
Input schema / properties / template_id / defaultRemoved value: -"" - added
Input schema / properties / template_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / template_overrides / defaultRemoved value: -"" - added
Input schema / properties / template_overrides / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / tool_changer_addon / defaultRemoved value: -"" - added
Input schema / properties / tool_changer_addon / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / wall_layers / defaultRemoved value: -3 - added
Input schema / properties / wall_layers / descriptionAdded value: +"Default: 3." - removed
Input schema / properties / width_mm / defaultRemoved value: -0 - added
Input schema / properties / width_mm / descriptionAdded value: +"Default: 0.0."
- Changed
estimate_cost7 fields changed- removed
Input schema / properties / electricity_rate / defaultRemoved value: -0.12 - added
Input schema / properties / electricity_rate / descriptionAdded value: +"Default: 0.12." - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +} - removed
Input schema / properties / printer_wattage / defaultRemoved value: -200 - added
Input schema / properties / printer_wattage / descriptionAdded value: +"Default: 200.0."
- Added
estimate_decoration_cost - Changed
estimate_material_cost9 fields changed- removed
Input schema / properties / cost_per_kg / defaultRemoved value: -0 - added
Input schema / properties / cost_per_kg / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / infill_pct / defaultRemoved value: -20 - added
Input schema / properties / infill_pct / descriptionAdded value: +"Default: 20.0." - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - added
Input schema / properties / nozzle_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Nozzle Mm" +} - removed
Input schema / properties / wall_layers / defaultRemoved value: -3 - added
Input schema / properties / wall_layers / descriptionAdded value: +"Default: 3."
- Changed
estimate_mesh_print_time6 fields changed- removed
Input schema / properties / layer_height_mm / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height_mm / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - removed
Input schema / properties / print_speed_mm_s / defaultRemoved value: -60 - added
Input schema / properties / print_speed_mm_s / descriptionAdded value: +"Default: 60.0."
- Changed
estimate_mesh_weight6 fields changed- removed
Input schema / properties / infill_percent / defaultRemoved value: -20 - added
Input schema / properties / infill_percent / descriptionAdded value: +"Default: 20.0." - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - removed
Input schema / properties / wall_thickness_mm / defaultRemoved value: -1.2 - added
Input schema / properties / wall_thickness_mm / descriptionAdded value: +"Default: 1.2."
- Added
estimate_plate_part_costs - Changed
estimate_price6 fields changed- removed
Input schema / properties / dimensions_x_mm / defaultRemoved value: -null - removed
Input schema / properties / dimensions_y_mm / defaultRemoved value: -null - removed
Input schema / properties / dimensions_z_mm / defaultRemoved value: -null - removed
Input schema / properties / quantity / defaultRemoved value: -1 - added
Input schema / properties / quantity / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / volume_cm3 / defaultRemoved value: -null
- Changed
estimate_print_cost_from_mesh21 fields changed- removed
Input schema / properties / adhesion_type / defaultRemoved value: -"none" - added
Input schema / properties / adhesion_type / descriptionAdded value: +"Default: \"none\"." - removed
Input schema / properties / electricity_rate / defaultRemoved value: -0.12 - added
Input schema / properties / electricity_rate / descriptionAdded value: +"Default: 0.12." - removed
Input schema / properties / include_supports / defaultRemoved value: -false - added
Input schema / properties / include_supports / descriptionAdded value: +"Default: false." - removed
Input schema / properties / infill_percent / defaultRemoved value: -20 - added
Input schema / properties / infill_percent / descriptionAdded value: +"Default: 20.0." - removed
Input schema / properties / layer_height_mm / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height_mm / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"." - added
Input schema / properties / nozzle_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_mm / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_mm / typeRemoved value: -"number" - removed
Input schema / properties / printer_wattage / defaultRemoved value: -200 - added
Input schema / properties / printer_wattage / descriptionAdded value: +"Default: 200.0." - removed
Input schema / properties / support_density / defaultRemoved value: -15 - added
Input schema / properties / support_density / descriptionAdded value: +"Default: 15.0." - removed
Input schema / properties / wall_layers / defaultRemoved value: -3 - added
Input schema / properties / wall_layers / descriptionAdded value: +"Default: 3."
- Changed
estimate_print_progress3 fields changed- removed
Input schema / properties / current_layer / defaultRemoved value: -null - removed
Input schema / properties / elapsed_seconds / defaultRemoved value: -null - removed
Input schema / properties / total_layers / defaultRemoved value: -null
- Changed
estimate_print_time9 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / profile / defaultRemoved value: -"" - added
Input schema / properties / profile / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / slicer_path / defaultRemoved value: -"" - added
Input schema / properties / slicer_path / descriptionAdded value: +"Default: \"\"."
- Changed
estimate_structural_load2 fields changed- removed
Input schema / properties / load_across_layers / defaultRemoved value: -true - added
Input schema / properties / load_across_layers / descriptionAdded value: +"Default: true."
- Changed
estimate_supports2 fields changed- removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -45 - added
Input schema / properties / max_overhang_angle / descriptionAdded value: +"Default: 45.0."
- Changed
estimate_timeline5 fields changed- removed
Input schema / properties / country / defaultRemoved value: -"US" - added
Input schema / properties / country / descriptionAdded value: +"Default: \"US\"." - removed
Input schema / properties / quantity / defaultRemoved value: -1 - added
Input schema / properties / quantity / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / shipping_days / defaultRemoved value: -null
- Added
evaluate_fleet_reroute - Added
evaluate_pr_approval - Added
explain_calibration_for_design - Changed
export_adaptive_slicer_config2 fields changed- removed
Input schema / properties / slicer / defaultRemoved value: -"prusaslicer" - added
Input schema / properties / slicer / descriptionAdded value: +"Default: \"prusaslicer\"."
- Added
export_audit_log - Changed
export_audit_trail12 fields changed- removed
Input schema / properties / action / defaultRemoved value: -"" - added
Input schema / properties / action / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / end_time / defaultRemoved value: -0 - added
Input schema / properties / end_time / descriptionAdded value: +"Default: 0." - removed
Input schema / properties / format / defaultRemoved value: -"json" - added
Input schema / properties / format / descriptionAdded value: +"Default: \"json\"." - removed
Input schema / properties / session_id / defaultRemoved value: -"" - added
Input schema / properties / session_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / start_time / defaultRemoved value: -0 - added
Input schema / properties / start_time / descriptionAdded value: +"Default: 0." - removed
Input schema / properties / tool_name / defaultRemoved value: -"" - added
Input schema / properties / tool_name / descriptionAdded value: +"Default: \"\"."
- Changed
export_model_3mf2 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Added
export_step - Changed
extract_model_from_3mf2 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Changed
extract_plate_object4 fields changed- removed
Input schema / properties / output_dir / defaultRemoved value: -"" - added
Input schema / properties / output_dir / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / plate_number / defaultRemoved value: -1 - added
Input schema / properties / plate_number / descriptionAdded value: +"Default: 1."
- Changed
failure_history4 fields changed- removed
Input schema / properties / failure_type / defaultRemoved value: -null - removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
find_closest_filaments - Added
find_manual_siblings - Removed
find_material_match - Changed
find_material_substitute3 fields changed- removed
Input schema / properties / min_score / defaultRemoved value: -0.5 - added
Input schema / properties / min_score / descriptionAdded value: +"Default: 0.5." - removed
Input schema / properties / reason / defaultRemoved value: -null
- Changed
find_printers_with_material3 fields changed- removed
Input schema / properties / color / defaultRemoved value: -null - removed
Input schema / properties / min_grams / defaultRemoved value: -0 - added
Input schema / properties / min_grams / descriptionAdded value: +"Default: 0.0."
- Removed
find_provider_capacity - Changed
find_similar_prints12 fields changed- removed
Input schema / properties / complexity_score / defaultRemoved value: -0 - added
Input schema / properties / complexity_score / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / limit / defaultRemoved value: -10 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 10." - removed
Input schema / properties / surface_area_mm2 / defaultRemoved value: -0 - added
Input schema / properties / surface_area_mm2 / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / threshold / defaultRemoved value: -0.8 - added
Input schema / properties / threshold / descriptionAdded value: +"Default: 0.8." - removed
Input schema / properties / volume_mm3 / defaultRemoved value: -0 - added
Input schema / properties / volume_mm3 / descriptionAdded value: +"Default: 0.0."
- Added
fingerprint_feature - Changed
firmware_resume_print9 fields changed- removed
Input schema / properties / fan_speed_pct / defaultRemoved value: -100 - added
Input schema / properties / fan_speed_pct / descriptionAdded value: +"Default: 100.0." - removed
Input schema / properties / flow_rate_pct / defaultRemoved value: -100 - added
Input schema / properties / flow_rate_pct / descriptionAdded value: +"Default: 100.0." - removed
Input schema / properties / layer_number / defaultRemoved value: -null - removed
Input schema / properties / prime_length_mm / defaultRemoved value: -30 - added
Input schema / properties / prime_length_mm / descriptionAdded value: +"Default: 30.0." - removed
Input schema / properties / z_clearance_mm / defaultRemoved value: -2 - added
Input schema / properties / z_clearance_mm / descriptionAdded value: +"Default: 2.0."
- Added
fleet_cancel - Added
fleet_colour_match - Added
fleet_hardware_stops - Added
fleet_nozzle_agreement - Added
fleet_pause - Added
fleet_resume - Added
fleet_set_speed - Added
fleet_skip_objects - Changed
fleet_submit_job5 fields changed- removed
Input schema / properties / idempotency_key / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -null - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / priority / defaultRemoved value: -null
- Added
food_safety_for_printer - Changed
force_print_oversize4 fields changed- removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / ttl_minutes / defaultRemoved value: -5 - added
Input schema / properties / ttl_minutes / descriptionAdded value: +"Default: 5."
- Changed
forecast_material_consumption2 fields changed- removed
Input schema / properties / days_ahead / defaultRemoved value: -30 - added
Input schema / properties / days_ahead / descriptionAdded value: +"Default: 30."
- Changed
fulfillment_materials4 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -50 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 50." - removed
Input schema / properties / search / defaultRemoved value: -null - removed
Input schema / properties / technology / defaultRemoved value: -null
- Changed
fulfillment_order21 fields changed- removed
Input schema / properties / business_tax_id / defaultRemoved value: -"" - added
Input schema / properties / business_tax_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / jurisdiction / defaultRemoved value: -"" - added
Input schema / properties / jurisdiction / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / payment_hold_id / defaultRemoved value: -"" - added
Input schema / properties / payment_hold_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / preview_file_path / defaultRemoved value: -"" - added
Input schema / properties / preview_file_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / preview_token / defaultRemoved value: -"" - added
Input schema / properties / preview_token / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / quoted_currency / defaultRemoved value: -"USD" - added
Input schema / properties / quoted_currency / descriptionAdded value: +"Default: \"USD\"." - removed
Input schema / properties / quoted_price / defaultRemoved value: -0 - added
Input schema / properties / quoted_price / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / shipping_address / defaultRemoved value: -null - removed
Input schema / properties / shipping_confirmation_token / defaultRemoved value: -"" - added
Input schema / properties / shipping_confirmation_token / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / shipping_option_id / defaultRemoved value: -"" - added
Input schema / properties / shipping_option_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / shipping_profile_name / defaultRemoved value: -"" - added
Input schema / properties / shipping_profile_name / descriptionAdded value: +"Default: \"\"."
- Changed
fulfillment_quote4 fields changed- removed
Input schema / properties / quantity / defaultRemoved value: -1 - added
Input schema / properties / quantity / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / shipping_country / defaultRemoved value: -"US" - added
Input schema / properties / shipping_country / descriptionAdded value: +"Default: \"US\"."
- Changed
generate_adaptive_slicing_plan8 fields changed- removed
Input schema / properties / mode / defaultRemoved value: -"balanced" - added
Input schema / properties / mode / descriptionAdded value: +"Default: \"balanced\"." - removed
Input schema / properties / model_name / defaultRemoved value: -"" - added
Input schema / properties / model_name / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / nozzle_diameter_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter_mm / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter_mm / typeRemoved value: -"number" - removed
Input schema / properties / printer / defaultRemoved value: -null
- Changed
generate_and_print11 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - added
Input schema / properties / materialAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Material" +} - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / profile / defaultRemoved value: -null - removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"." - removed
Input schema / properties / style / defaultRemoved value: -null - removed
Input schema / properties / timeout / defaultRemoved value: -600 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 600."
- Added
generate_ashtray - Added
generate_assembly_manual - Added
generate_bookmark - Added
generate_coaster - Added
generate_decorated_product - Added
generate_fridge_magnet - Added
generate_frisbee - Changed
generate_from_template2 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / parameters / defaultRemoved value: -null
- Added
generate_jewelry_tray - Added
generate_keychain - Added
generate_license_plate_frame - Added
generate_magnet_qc_plan - Changed
generate_model7 fields changed- removed
Input schema / properties / format / defaultRemoved value: -"stl" - added
Input schema / properties / format / descriptionAdded value: +"Default: \"stl\"." - removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"." - removed
Input schema / properties / style / defaultRemoved value: -null
- Changed
generate_model_from_image3 fields changed- removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"." - removed
Input schema / properties / style / defaultRemoved value: -null
- Changed
generate_model_with_provider21 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / build_volume_x / defaultRemoved value: -null - removed
Input schema / properties / build_volume_y / defaultRemoved value: -null - removed
Input schema / properties / build_volume_z / defaultRemoved value: -null - removed
Input schema / properties / layer_height / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / max_attempts / defaultRemoved value: -2 - added
Input schema / properties / max_attempts / descriptionAdded value: +"Default: 2." - removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -45 - added
Input schema / properties / max_overhang_angle / descriptionAdded value: +"Default: 45.0." - added
Input schema / properties / nozzle_diameter / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter / typeRemoved value: -"number" - removed
Input schema / properties / output_dir / defaultRemoved value: -null - removed
Input schema / properties / printer_model / defaultRemoved value: -null - removed
Input schema / properties / provider / defaultRemoved value: -"auto" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / style / defaultRemoved value: -null - removed
Input schema / properties / timeout / defaultRemoved value: -600 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 600."
- Added
generate_nameplate - Added
generate_ornament - Added
generate_pen_cup - Added
generate_pet_bowl - Added
generate_pet_tag - Added
generate_product_base - Added
generate_qr_decoration - Added
generate_recovery_gcode - Added
generate_rolling_tray - Added
generate_soap_dish - Added
generate_technical_drawing - Changed
generate_template_variations3 fields changed- removed
Input schema / properties / parameter_ranges / defaultRemoved value: -null - removed
Input schema / properties / variation_count / defaultRemoved value: -3 - added
Input schema / properties / variation_count / descriptionAdded value: +"Default: 3."
- Changed
generate_texture4 fields changed- removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"." - removed
Input schema / properties / style / defaultRemoved value: -"realistic" - added
Input schema / properties / style / descriptionAdded value: +"Default: \"realistic\"."
- Added
generate_wall_plaque - Changed
generation_status2 fields changed- removed
Input schema / properties / provider / defaultRemoved value: -"meshy" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"meshy\"."
- Changed
get_active_material1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
get_agent_context2 fields changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / scope / defaultRemoved value: -null
- Added
get_auto_tuned_settings - Added
get_calibration_freshness - Added
get_calibration_health_recommendations - Added
get_comment_thread - Changed
get_community_insight2 fields changed- removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"."
- Added
get_community_wear_baseline - Removed
get_compatible_materials - Added
get_decoration_preset - Added
get_design - Added
get_design_ancestry - Added
get_design_pull_request - Added
get_face_emboss_depth - Added
get_feature - Changed
get_fulfillment_quote_cached2 fields changed- removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / provider / defaultRemoved value: -null
- Changed
get_interception_history2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -50 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 50."
- Changed
get_joint_recommendation6 fields changed- removed
Input schema / properties / material_a / defaultRemoved value: -"PLA" - added
Input schema / properties / material_a / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / material_b / defaultRemoved value: -"PLA" - added
Input schema / properties / material_b / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / mating / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null
- Added
get_maintenance_prediction - Added
get_manual_revision - Changed
get_material1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
get_material_consumption_history2 fields changed- removed
Input schema / properties / days / defaultRemoved value: -30 - added
Input schema / properties / days / descriptionAdded value: +"Default: 30."
- Removed
get_material_info - Removed
get_material_purchase_urls - Changed
get_material_slicing_profile3 fields changed- added
Input schema / properties / nozzle_diameter_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter_mm / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter_mm / typeRemoved value: -"number"
- Added
get_material_success_rates - Added
get_material_warnings - Changed
get_model_print_history10 fields changed- removed
Input schema / properties / file_hash / defaultRemoved value: -"" - added
Input schema / properties / file_hash / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / geometric_signature / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / model_path / defaultRemoved value: -"" - added
Input schema / properties / model_path / descriptionAdded value: +"Default: \"\"."
- Added
get_my_nozzle_wear_patterns - Added
get_nozzle_state - Added
get_optimal_settings - Added
get_parser_health_summary - Added
get_part_passport - Changed
get_post_processing_guide1 field changed- removed
Input schema / properties / goal / defaultRemoved value: -null
- Added
get_print_confidence - Changed
get_print_diagnostic1 field changed- removed
Input schema / properties / printer / defaultRemoved value: -null
- Added
get_print_learning_summary - Changed
get_printer_insights2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20."
- Added
get_printer_melt_rate - Added
get_product_color_roles - Added
get_product_faces - Added
get_provenance_history - Changed
get_recovery_plan5 fields changed- removed
Input schema / properties / has_filament_sensor / defaultRemoved value: -false - added
Input schema / properties / has_filament_sensor / descriptionAdded value: +"Default: false." - removed
Input schema / properties / has_power_loss_recovery / defaultRemoved value: -false - added
Input schema / properties / has_power_loss_recovery / descriptionAdded value: +"Default: false." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
get_reflog_entry - Added
get_regression_alerts - Changed
get_session_log3 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -100 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 100." - removed
Input schema / properties / session_id / defaultRemoved value: -null
- Changed
get_started1 field changed- added
Input schema / properties / chat_appAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Chat App" +}
- Added
get_telemetry_preferences - Added
github_start_device_login - Added
give_print_code - Added
grant_scope - Changed
hand_back_printer1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
hollow_mesh_model4 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / wall_thickness_mm / defaultRemoved value: -2 - added
Input schema / properties / wall_thickness_mm / descriptionAdded value: +"Default: 2.0."
- Added
home_axes - Added
import_external_feature - Added
import_external_mesh - Added
import_model_parts - Changed
import_step_file6 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / merge_bodies / defaultRemoved value: -true - added
Input schema / properties / merge_bodies / descriptionAdded value: +"Default: true." - removed
Input schema / properties / output_dir / defaultRemoved value: -null - removed
Input schema / properties / output_format / defaultRemoved value: -"auto" - added
Input schema / properties / output_format / descriptionAdded value: +"Default: \"auto\"."
- Added
import_third_party_calibration - Changed
improve_generation_prompt10 fields changed- removed
Input schema / properties / enforce_sanity / defaultRemoved value: -true - added
Input schema / properties / enforce_sanity / descriptionAdded value: +"Default: true." - removed
Input schema / properties / failure_mode / defaultRemoved value: -null - removed
Input schema / properties / file_path / defaultRemoved value: -null - removed
Input schema / properties / has_bridges / defaultRemoved value: -false - added
Input schema / properties / has_bridges / descriptionAdded value: +"Default: false." - removed
Input schema / properties / iteration / defaultRemoved value: -1 - added
Input schema / properties / iteration / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / max_overhang_angle / defaultRemoved value: -null - removed
Input schema / properties / min_wall_thickness / defaultRemoved value: -null
- Changed
infer_print_settings2 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"."
- Added
ingest_material_datasheet - Added
ingest_measurement - Changed
insert_into_scad2 fields changed- removed
Input schema / properties / position / defaultRemoved value: -"end" - added
Input schema / properties / position / descriptionAdded value: +"Default: \"end\"."
- Added
inspect_design - Added
inspect_mesh_view - Added
intake_engineering_drawing - Changed
issue_preview_token4 fields changed- added
Input schema / properties / doorAdded value: +{ + "description": "Default: \"\".", + "title": "Door", + "type": "string" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / ttl_seconds / defaultRemoved value: -600 - added
Input schema / properties / ttl_seconds / descriptionAdded value: +"Default: 600."
- Changed
issue_shipping_confirmation_token15 fields changed- removed
Input schema / properties / overwrite_saved_profile / defaultRemoved value: -false - added
Input schema / properties / overwrite_saved_profile / descriptionAdded value: +"Default: false." - removed
Input schema / properties / save_profile_decision / defaultRemoved value: -"" - added
Input schema / properties / save_profile_decision / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / save_profile_name / defaultRemoved value: -"" - added
Input schema / properties / save_profile_name / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / set_default_profile / defaultRemoved value: -false - added
Input schema / properties / set_default_profile / descriptionAdded value: +"Default: false." - removed
Input schema / properties / shipping_address / defaultRemoved value: -null - removed
Input schema / properties / shipping_option_id / defaultRemoved value: -"" - added
Input schema / properties / shipping_option_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / shipping_profile_name / defaultRemoved value: -"" - added
Input schema / properties / shipping_profile_name / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / ttl_seconds / defaultRemoved value: -600 - added
Input schema / properties / ttl_seconds / descriptionAdded value: +"Default: 600."
- Added
iterate_decoration - Changed
iterate_design10 fields changed- removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / max_iterations / defaultRemoved value: -3 - added
Input schema / properties / max_iterations / descriptionAdded value: +"Default: 3." - removed
Input schema / properties / printer_model / defaultRemoved value: -"" - added
Input schema / properties / printer_model / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / provider / defaultRemoved value: -"openscad" - added
Input schema / properties / provider / descriptionAdded value: +"Default: \"openscad\"."
- Changed
job_history3 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / status / defaultRemoved value: -null
- Added
keep_design - Added
keep_painted_detail - Added
kiln_monitor_control - Added
kiln_monitor_snapshot - Added
kiln_spend_caps_confirm_change - Added
kiln_spend_caps_confirm_order_approval - Added
kiln_spend_caps_request_change - Added
kiln_spend_caps_request_order_approval - Added
kiln_spend_caps_show - Added
kiln_viewer_payload - Added
license_status_live - Added
list_approval_gates - Added
list_bisect_sessions - Changed
list_cached_designs3 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -50 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 50." - removed
Input schema / properties / material / defaultRemoved value: -null
- Changed
list_cached_models4 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -50 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 50." - removed
Input schema / properties / offset / defaultRemoved value: -0 - added
Input schema / properties / offset / descriptionAdded value: +"Default: 0."
- Added
list_cherry_pick_candidates - Added
list_custom_palettes - Added
list_decoratable_faces - Added
list_decoration_cherry_pick_candidates - Added
list_decoration_preset_branches - Added
list_decoration_preset_releases - Added
list_decoration_preset_versions - Added
list_decoration_presets - Changed
list_decorations6 fields changed- removed
Input schema / properties / category / defaultRemoved value: -"" - added
Input schema / properties / category / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / content_type / defaultRemoved value: -"" - added
Input schema / properties / content_type / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / tag / defaultRemoved value: -"" - added
Input schema / properties / tag / descriptionAdded value: +"Default: \"\"."
- Added
list_design_branches - Changed
list_design_components1 field changed- removed
Input schema / properties / category / defaultRemoved value: -null
- Added
list_design_goals - Added
list_design_pull_requests - Added
list_design_releases - Changed
list_design_versions2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20."
- Added
list_designs - Added
list_feature_branches - Added
list_feature_cherry_pick_candidates - Added
list_feature_kinds - Added
list_feature_releases - Added
list_feature_versions - Added
list_features - Added
list_ingested_materials - Added
list_manual_history - Removed
list_material_catalog - Added
list_mesh_comments - Changed
list_multi_material_addons2 fields changed- removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
list_my_orgs - Added
list_my_teams - Added
list_nozzle_states - Added
list_org_members - Changed
list_plate_objects2 fields changed- removed
Input schema / properties / plate_number / defaultRemoved value: -1 - added
Input schema / properties / plate_number / descriptionAdded value: +"Default: 1."
- Added
list_procedural_textures - Added
list_product_types - Added
list_proven_recipes - Removed
list_provider_capacity - Changed
list_published_models3 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -50 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 50." - removed
Input schema / properties / marketplace / defaultRemoved value: -null
- Added
list_role_templates - Added
list_scopes - Changed
list_shipping_profiles2 fields changed- removed
Input schema / properties / include_addresses / defaultRemoved value: -false - added
Input schema / properties / include_addresses / descriptionAdded value: +"Default: false."
- Changed
list_snapshots5 fields changed- removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / phase / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
list_team_members - Added
list_teams - Added
list_technical_drawings - Added
load_filament - Added
lock_design - Changed
log_project_cost4 fields changed- removed
Input schema / properties / description / defaultRemoved value: -"" - added
Input schema / properties / description / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
look_at_plate - Added
lookup_fastener - Added
maintenance_due - Added
make_printable - Added
manage_fair_characteristics - Added
manage_fair_evidence_bundle - Added
manage_fair_registry - Added
manage_protection_outcomes - Added
manage_supplier_document_evidence - Changed
manage_team_member2 fields changed- removed
Input schema / properties / role / defaultRemoved value: -"engineer" - added
Input schema / properties / role / descriptionAdded value: +"Default: \"engineer\"."
- Added
may_i_print - Added
merge_decoration_preset_branches - Added
merge_design_branches - Added
merge_feature_branches - Changed
merge_multicolor_gcode4 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / parts / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / parts / typeRemoved value: -"string"
- Changed
merge_stl2 fields changed- removed
Input schema / properties / positions / defaultRemoved value: -"" - added
Input schema / properties / positions / descriptionAdded value: +"Default: \"\"."
- Changed
mesh_quality_scorecard2 fields changed- added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"pla\".", + "title": "Material", + "type": "string" +} - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Changed
mirror_mesh_model4 fields changed- removed
Input schema / properties / axis / defaultRemoved value: -"x" - added
Input schema / properties / axis / descriptionAdded value: +"Default: \"x\"." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Changed
monitor_print6 fields changed- removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / include_snapshot / defaultRemoved value: -true - added
Input schema / properties / include_snapshot / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_name / defaultRemoved value: -null - added
Input schema / properties / show_panelAdded value: +{ + "description": "Default: false.", + "title": "Show Panel", + "type": "boolean" +}
- Changed
monitor_print_vision8 fields changed- removed
Input schema / properties / auto_pause / defaultRemoved value: -null - removed
Input schema / properties / failure_confidence / defaultRemoved value: -null - removed
Input schema / properties / failure_type / defaultRemoved value: -null - removed
Input schema / properties / include_snapshot / defaultRemoved value: -true - added
Input schema / properties / include_snapshot / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / save_snapshot / defaultRemoved value: -null - added
Input schema / properties / show_panelAdded value: +{ + "description": "Default: false.", + "title": "Show Panel", + "type": "boolean" +}
- Changed
multi_color_copies10 fields changed- removed
Input schema / properties / ams_slots / defaultRemoved value: -null - removed
Input schema / properties / colors / defaultRemoved value: -null - removed
Input schema / properties / copies / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / slicer_path / defaultRemoved value: -null - removed
Input schema / properties / spacing_mm / defaultRemoved value: -10 - added
Input schema / properties / spacing_mm / descriptionAdded value: +"Default: 10.0."
- Changed
multi_copy_print8 fields changed- changed
Input schema / properties / overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / overrides / defaultRemoved value: -null - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / slicer_path / defaultRemoved value: -null - removed
Input schema / properties / spacing_mm / defaultRemoved value: -10 - added
Input schema / properties / spacing_mm / descriptionAdded value: +"Default: 10.0."
- Changed
multi_material_print10 fields changed- removed
Input schema / properties / auto_ams / defaultRemoved value: -true - added
Input schema / properties / auto_ams / descriptionAdded value: +"Default: true." - changed
Input schema / properties / extra_overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / extra_overrides / defaultRemoved value: -null - added
Input schema / properties / objects_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "additionalProperties": true, + "type": "object" + }, + "type": "array" + } +] - removed
Input schema / properties / objects_json / typeRemoved value: -"string" - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / slicer_path / defaultRemoved value: -null
- Added
nozzle_drift_attribution - Added
nozzle_wear_status - Added
open_billing_portal - Changed
optimize_print_orientation4 fields changed- added
Input schema / properties / materialAdded value: +{ + "description": "Default: \"pla\".", + "title": "Material", + "type": "string" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / printer_idAdded value: +{ + "description": "Default: \"\".", + "title": "Printer Id", + "type": "string" +}
- Changed
optimize_template_params8 fields changed- removed
Input schema / properties / constraints / defaultRemoved value: -"" - added
Input schema / properties / constraints / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / max_variants / defaultRemoved value: -27 - added
Input schema / properties / max_variants / descriptionAdded value: +"Default: 27." - removed
Input schema / properties / output_dir / defaultRemoved value: -"" - added
Input schema / properties / output_dir / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / samples_per_param / defaultRemoved value: -3 - added
Input schema / properties / samples_per_param / descriptionAdded value: +"Default: 3."
- Added
paint_decoration_faces - Added
paint_mesh_regions - Added
park_head - Changed
pause_print3 fields changed- removed
Input schema / properties / keep_temps / defaultRemoved value: -true - added
Input schema / properties / keep_temps / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
plan_assembly_split2 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"."
- Changed
plan_failure_recovery2 fields changed- removed
Input schema / properties / printer_capabilities / defaultRemoved value: -null - removed
Input schema / properties / safety_profile / defaultRemoved value: -null
- Added
plan_hardware_insertion - Added
plan_kit_plates - Changed
plan_multi_copy_split2 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"pla" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"pla\"."
- Added
plan_object_skip - Changed
plan_print_recovery1 field changed- removed
Input schema / properties / failure_type / defaultRemoved value: -null
- Added
plan_supports - Added
plate_status - Changed
predict_print_failure9 fields changed- removed
Input schema / properties / max_bridge_mm / defaultRemoved value: -15 - added
Input schema / properties / max_bridge_mm / descriptionAdded value: +"Default: 15.0." - removed
Input schema / properties / max_overhang_deg / defaultRemoved value: -55 - added
Input schema / properties / max_overhang_deg / descriptionAdded value: +"Default: 55.0." - added
Input schema / properties / min_wall_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / min_wall_mm / defaultRemoved value: -0.8 - removed
Input schema / properties / min_wall_mm / typeRemoved value: -"number" - added
Input schema / properties / nozzle_mmAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Nozzle Mm" +} - added
Input schema / properties / printer_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Id" +}
- Changed
predict_print_settings2 fields changed- removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"."
- Changed
preflight_check6 fields changed- removed
Input schema / properties / accept_paused / defaultRemoved value: -false - added
Input schema / properties / accept_paused / descriptionAdded value: +"Default: false." - removed
Input schema / properties / expected_material / defaultRemoved value: -null - removed
Input schema / properties / file_path / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / remote_file / defaultRemoved value: -null
- Changed
prepare_ai_model_for_print6 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / target_height_mm / defaultRemoved value: -0 - added
Input schema / properties / target_height_mm / descriptionAdded value: +"Default: 0."
- Added
prepopulate_fair_draft - Added
preview_decorated_mesh - Added
preview_overage_charge - Added
preview_texture_2d - Added
print_cost_intelligence - Changed
print_history4 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / status / defaultRemoved value: -null
- Changed
print_plate_object15 fields changed- removed
Input schema / properties / ams_mapping / defaultRemoved value: -null - removed
Input schema / properties / bed_leveling / defaultRemoved value: -true - added
Input schema / properties / bed_leveling / descriptionAdded value: +"Default: true." - removed
Input schema / properties / bed_type / defaultRemoved value: -"auto" - added
Input schema / properties / bed_type / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / flow_cali / defaultRemoved value: -true - added
Input schema / properties / flow_cali / descriptionAdded value: +"Default: true." - removed
Input schema / properties / plate_number / defaultRemoved value: -1 - added
Input schema / properties / plate_number / descriptionAdded value: +"Default: 1." - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / use_ams / defaultRemoved value: -"auto" - added
Input schema / properties / use_ams / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / vibration_cali / defaultRemoved value: -true - added
Input schema / properties / vibration_cali / descriptionAdded value: +"Default: true."
- Changed
print_service_quote2 fields changed- removed
Input schema / properties / option / defaultRemoved value: -"recommended" - added
Input schema / properties / option / descriptionAdded value: +"Default: \"recommended\"."
- Changed
print_status_lite1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
printer_bench - Changed
printer_snapshot2 fields changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / save_path / defaultRemoved value: -null
- Changed
printer_status3 fields changed- removed
Input schema / properties / detail / defaultRemoved value: -"full" - added
Input schema / properties / detail / descriptionAdded value: +"Default: \"full\"." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
printer_trend_analysis1 field changed- removed
Input schema / properties / lookback_days / defaultRemoved value: -null
- Added
promote_kit_piece - Added
propose_design_change - Added
propose_sourcing_remediation - Removed
provider_job_status - Added
prune_design_render_cache - Changed
publish_model7 fields changed- removed
Input schema / properties / include_certificate / defaultRemoved value: -true - added
Input schema / properties / include_certificate / descriptionAdded value: +"Default: true." - removed
Input schema / properties / include_print_settings / defaultRemoved value: -true - added
Input schema / properties / include_print_settings / descriptionAdded value: +"Default: true." - removed
Input schema / properties / license / defaultRemoved value: -"cc-by" - added
Input schema / properties / license / descriptionAdded value: +"Default: \"cc-by\"." - removed
Input schema / properties / target_marketplaces / defaultRemoved value: -null
- Changed
publish_print_twin1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
pull_reflog_from_cloud - Added
purge_filament - Added
push_palettes_to_cloud - Added
push_reflog_to_cloud - Added
query_per_machine_offset - Changed
quick_adaptive_plan9 fields changed- removed
Input schema / properties / mode / defaultRemoved value: -"balanced" - added
Input schema / properties / mode / descriptionAdded value: +"Default: \"balanced\"." - removed
Input schema / properties / model_name / defaultRemoved value: -"" - added
Input schema / properties / model_name / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / nozzle_diameter_mm / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter_mm / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter_mm / typeRemoved value: -"number" - removed
Input schema / properties / printer / defaultRemoved value: -null - removed
Input schema / properties / regions / defaultRemoved value: -null
- Added
read_design_sidecar - Added
read_material_datasheet - Added
rebase_design_branch - Added
rebase_feature_branch - Added
rebase_preset_branch - Changed
rebuild_design2 fields changed- removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"."
- Added
recategorize_artifact - Changed
recent_events3 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / type / defaultRemoved value: -null
- Changed
recommend_adhesion_settings3 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -null
- Added
recommend_adhesive - Changed
recommend_design_material6 fields changed- removed
Input schema / properties / max_hotend_temp_c / defaultRemoved value: -300 - added
Input schema / properties / max_hotend_temp_c / descriptionAdded value: +"Default: 300." - removed
Input schema / properties / printer_has_direct_drive / defaultRemoved value: -true - added
Input schema / properties / printer_has_direct_drive / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_has_enclosure / defaultRemoved value: -false - added
Input schema / properties / printer_has_enclosure / descriptionAdded value: +"Default: false."
- Changed
recommend_design_reinforcements2 fields changed- removed
Input schema / properties / min_cross_section_mm2 / defaultRemoved value: -4 - added
Input schema / properties / min_cross_section_mm2 / descriptionAdded value: +"Default: 4.0."
- Added
recommend_hardware_pocket - Added
recommend_hole - Added
recommend_joint_strategy - Added
recommend_magnet_for_product - Changed
recommend_material9 fields changed- removed
Input schema / properties / budget_usd / defaultRemoved value: -null - removed
Input schema / properties / has_enclosure / defaultRemoved value: -false - added
Input schema / properties / has_enclosure / descriptionAdded value: +"Default: false." - removed
Input schema / properties / has_heated_bed / defaultRemoved value: -true - added
Input schema / properties / has_heated_bed / descriptionAdded value: +"Default: true." - removed
Input schema / properties / on_hand_only / defaultRemoved value: -false - added
Input schema / properties / on_hand_only / descriptionAdded value: +"Default: false." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
recommend_running_clearance - Changed
recommend_settings3 fields changed- removed
Input schema / properties / file_hash / defaultRemoved value: -null - removed
Input schema / properties / material_type / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
recommend_static_dissipative_material - Added
recommend_text_size - Added
record_bond_outcome - Added
record_calibration_correction - Added
record_chemical_outcome - Added
record_cutter_replacement - Added
record_decoration_preset_outcome - Added
record_decoration_success - Added
record_design_version_outcome - Added
record_esd_measurement - Added
record_extrusion_event - Added
record_filament_colour - Added
record_hardware_insertion - Added
record_hardware_outcome - Added
record_load_outcome - Added
record_magnet_outcome - Changed
record_print_dna7 fields changed- removed
Input schema / properties / failure_mode / defaultRemoved value: -null - removed
Input schema / properties / geometric_signature_v2 / defaultRemoved value: -"" - added
Input schema / properties / geometric_signature_v2 / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / print_time_seconds / defaultRemoved value: -0 - added
Input schema / properties / print_time_seconds / descriptionAdded value: +"Default: 0." - removed
Input schema / properties / quality_grade / defaultRemoved value: -"B" - added
Input schema / properties / quality_grade / descriptionAdded value: +"Default: \"B\"."
- Changed
record_print_outcome17 fields changed- removed
Input schema / properties / auto_classify / defaultRemoved value: -false - added
Input schema / properties / auto_classify / descriptionAdded value: +"Default: false." - removed
Input schema / properties / auto_recorded / defaultRemoved value: -false - added
Input schema / properties / auto_recorded / descriptionAdded value: +"Default: false." - removed
Input schema / properties / decoration_settings / defaultRemoved value: -null - removed
Input schema / properties / decoration_slug / defaultRemoved value: -null - removed
Input schema / properties / determined_by / defaultRemoved value: -null - removed
Input schema / properties / environment / defaultRemoved value: -null - removed
Input schema / properties / failure_mode / defaultRemoved value: -null - removed
Input schema / properties / file_hash / defaultRemoved value: -null - removed
Input schema / properties / file_name / defaultRemoved value: -null - removed
Input schema / properties / material_type / defaultRemoved value: -null - removed
Input schema / properties / notes / defaultRemoved value: -null - removed
Input schema / properties / print_error / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / quality_grade / defaultRemoved value: -null - removed
Input schema / properties / settings / defaultRemoved value: -null
- Added
record_proven_recipe - Changed
record_recovery_check2 fields changed- removed
Input schema / properties / notes / defaultRemoved value: -"" - added
Input schema / properties / notes / descriptionAdded value: +"Default: \"\"."
- Changed
record_revenue6 fields changed- removed
Input schema / properties / currency / defaultRemoved value: -"USD" - added
Input schema / properties / currency / descriptionAdded value: +"Default: \"USD\"." - removed
Input schema / properties / description / defaultRemoved value: -"" - added
Input schema / properties / description / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / transaction_type / defaultRemoved value: -"sale" - added
Input schema / properties / transaction_type / descriptionAdded value: +"Default: \"sale\"."
- Added
record_skin_contact_outcome - Added
recover_power_loss_print - Added
recover_texture_detail - Added
regenerate_3mf_thumbnail - Changed
register_printer12 fields changed- removed
Input schema / properties / api_key / defaultRemoved value: -null - removed
Input schema / properties / baudrate / defaultRemoved value: -null - added
Input schema / properties / camera_snapshot_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Camera Snapshot Url" +} - added
Input schema / properties / camera_stream_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Camera Stream Url" +} - removed
Input schema / properties / persist / defaultRemoved value: -true - added
Input schema / properties / persist / descriptionAdded value: +"Default: true." - removed
Input schema / properties / printer_model / defaultRemoved value: -null - removed
Input schema / properties / serial / defaultRemoved value: -null - removed
Input schema / properties / verify_connection / defaultRemoved value: -true - added
Input schema / properties / verify_connection / descriptionAdded value: +"Default: true." - removed
Input schema / properties / verify_ssl / defaultRemoved value: -true - added
Input schema / properties / verify_ssl / descriptionAdded value: +"Default: true."
- Changed
register_webhook4 fields changed- removed
Input schema / properties / description / defaultRemoved value: -"" - added
Input schema / properties / description / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / events / defaultRemoved value: -null - removed
Input schema / properties / secret / defaultRemoved value: -null
- Changed
release_printer_lock2 fields changed- removed
Input schema / properties / holder / defaultRemoved value: -"agent" - added
Input schema / properties / holder / descriptionAdded value: +"Default: \"agent\"."
- Added
remove_approval_gate - Changed
remove_mesh_floating_regions6 fields changed- removed
Input schema / properties / keep_largest / defaultRemoved value: -true - added
Input schema / properties / keep_largest / descriptionAdded value: +"Default: true." - removed
Input schema / properties / min_triangle_pct / defaultRemoved value: -1 - added
Input schema / properties / min_triangle_pct / descriptionAdded value: +"Default: 1.0." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Added
remove_team_member - Added
rename_decoration_preset - Added
rename_design - Added
rename_design_branch - Added
rename_feature - Added
render_design_mesh - Changed
render_model_preview6 fields changed- removed
Input schema / properties / color / defaultRemoved value: -"" - added
Input schema / properties / color / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / height / defaultRemoved value: -600 - added
Input schema / properties / height / descriptionAdded value: +"Default: 600." - removed
Input schema / properties / width / defaultRemoved value: -800 - added
Input schema / properties / width / descriptionAdded value: +"Default: 800."
- Added
reopen_comment_thread - Added
repair_guide - Changed
repair_mesh6 fields changed- removed
Input schema / properties / close_holes / defaultRemoved value: -false - added
Input schema / properties / close_holes / descriptionAdded value: +"Default: false." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / weld_tolerance / defaultRemoved value: -"" - added
Input schema / properties / weld_tolerance / descriptionAdded value: +"Default: \"\"."
- Changed
repair_mesh_advanced6 fields changed- removed
Input schema / properties / close_holes / defaultRemoved value: -true - added
Input schema / properties / close_holes / descriptionAdded value: +"Default: true." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / weld_tolerance / defaultRemoved value: -"" - added
Input schema / properties / weld_tolerance / descriptionAdded value: +"Default: \"\"."
- Added
reply_to_comment - Added
report_issue - Removed
report_printer_overage - Changed
reprint_with_material8 fields changed- changed
Input schema / properties / ams_mapping / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / ams_mapping / defaultRemoved value: -null - changed
Input schema / properties / extra_overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / extra_overrides / defaultRemoved value: -null - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / use_ams / defaultRemoved value: -null
- Added
request_calibration_test_print - Added
require_recent_auth - Changed
rescale_model6 fields changed- removed
Input schema / properties / max_dimension_mm / defaultRemoved value: -null - removed
Input schema / properties / scale_factor / defaultRemoved value: -null - removed
Input schema / properties / scale_x / defaultRemoved value: -null - removed
Input schema / properties / scale_y / defaultRemoved value: -null - removed
Input schema / properties / scale_z / defaultRemoved value: -null - removed
Input schema / properties / target_height_mm / defaultRemoved value: -null
- Changed
reslice_with_overrides10 fields changed- removed
Input schema / properties / auto_center / defaultRemoved value: -true - added
Input schema / properties / auto_center / descriptionAdded value: +"Default: true." - added
Input schema / properties / materialAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Material" +} - removed
Input schema / properties / output_dir / defaultRemoved value: -null - changed
Input schema / properties / overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / overrides / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Name" +} - removed
Input schema / properties / slicer_path / defaultRemoved value: -null
- Added
resolve_comment_thread - Changed
resolve_filament_profile2 fields changed- removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Added
resolve_template_decoration - Changed
restart_server2 fields changed- removed
Input schema / properties / clean_env / defaultRemoved value: -true - added
Input schema / properties / clean_env / descriptionAdded value: +"Default: true."
- Added
restore_from_reflog_entry - Added
resume_interrupted_print - Changed
resume_print4 fields changed- removed
Input schema / properties / force / defaultRemoved value: -false - added
Input schema / properties / force / descriptionAdded value: +"Default: false." - added
Input schema / properties / hardware_confirmedAdded value: +{ + "description": "Default: false.", + "title": "Hardware Confirmed", + "type": "boolean" +} - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
retire_decoration_preset_branch - Added
retire_decoration_preset_release - Added
retire_design_branch - Added
retire_design_release - Added
retire_feature_branch - Added
retire_feature_release - Added
retire_manual_revision - Changed
retry_print_with_fix11 fields changed- changed
Input schema / properties / custom_overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / custom_overrides / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / preview_token / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / skip_diagnosis / defaultRemoved value: -false - added
Input schema / properties / skip_diagnosis / descriptionAdded value: +"Default: false." - removed
Input schema / properties / skip_validation / defaultRemoved value: -false - added
Input schema / properties / skip_validation / descriptionAdded value: +"Default: false."
- Changed
revenue_dashboard2 fields changed- removed
Input schema / properties / days / defaultRemoved value: -30 - added
Input schema / properties / days / descriptionAdded value: +"Default: 30."
- Added
revert_calibration_recommendations - Added
revert_mid_print_fleet - Added
review_design_pull_request - Added
review_magnet_supplier_packet - Added
revoke_consent_window - Added
revoke_scope - Added
rollback_decoration - Added
rollback_feature - Changed
rollback_printer_firmware1 field changed- removed
Input schema / properties / target_version / defaultRemoved value: -null
- Changed
rotate_encryption_key4 fields changed- removed
Input schema / properties / dry_run / defaultRemoved value: -true - added
Input schema / properties / dry_run / descriptionAdded value: +"Default: true." - removed
Input schema / properties / pattern / defaultRemoved value: -"*.gcode" - added
Input schema / properties / pattern / descriptionAdded value: +"Default: \"*.gcode\"."
- Changed
rotate_model7 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -null - removed
Input schema / properties / rotation_x / defaultRemoved value: -0 - added
Input schema / properties / rotation_x / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / rotation_y / defaultRemoved value: -0 - added
Input schema / properties / rotation_y / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / rotation_z / defaultRemoved value: -0 - added
Input schema / properties / rotation_z / descriptionAdded value: +"Default: 0.0."
- Changed
route_print_job2 fields changed- removed
Input schema / properties / priority / defaultRemoved value: -null - removed
Input schema / properties / quality / defaultRemoved value: -null
- Changed
run_benchmark5 fields changed- removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / profile_path / defaultRemoved value: -null - removed
Input schema / properties / skip_validation / defaultRemoved value: -false - added
Input schema / properties / skip_validation / descriptionAdded value: +"Default: false."
- Changed
run_calibrate2 fields changed- removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
run_quick_print11 fields changed- changed
Input schema / properties / ams_mapping / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / ams_mapping / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / profile_path / defaultRemoved value: -null - removed
Input schema / properties / skip_validation / defaultRemoved value: -false - added
Input schema / properties / skip_validation / descriptionAdded value: +"Default: false." - removed
Input schema / properties / use_ams / defaultRemoved value: -null
- Changed
run_reslice_and_print14 fields changed- changed
Input schema / properties / ams_mapping / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / ams_mapping / defaultRemoved value: -null - removed
Input schema / properties / material / defaultRemoved value: -null - changed
Input schema / properties / overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / overrides / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / profile_path / defaultRemoved value: -null - removed
Input schema / properties / skip_validation / defaultRemoved value: -false - added
Input schema / properties / skip_validation / descriptionAdded value: +"Default: false." - removed
Input schema / properties / slicer_path / defaultRemoved value: -null - removed
Input schema / properties / use_ams / defaultRemoved value: -null
- Added
run_speed_schedule - Changed
safety_audit4 fields changed- removed
Input schema / properties / action / defaultRemoved value: -null - removed
Input schema / properties / limit / defaultRemoved value: -25 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 25." - removed
Input schema / properties / tool_name / defaultRemoved value: -null
- Changed
save_agent_note4 fields changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / scope / defaultRemoved value: -"global" - added
Input schema / properties / scope / descriptionAdded value: +"Default: \"global\"." - removed
Input schema / properties / ttl_seconds / defaultRemoved value: -null
- Added
save_custom_palette - Changed
save_decoration16 fields changed- removed
Input schema / properties / content_data / defaultRemoved value: -"" - added
Input schema / properties / content_data / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / content_type / defaultRemoved value: -"auto" - added
Input schema / properties / content_type / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / depth_mm / defaultRemoved value: -0 - added
Input schema / properties / depth_mm / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / image_style / defaultRemoved value: -"auto" - added
Input schema / properties / image_style / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / mode / defaultRemoved value: -"emboss" - added
Input schema / properties / mode / descriptionAdded value: +"Default: \"emboss\"." - removed
Input schema / properties / source_path / defaultRemoved value: -"" - added
Input schema / properties / source_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / tags / defaultRemoved value: -"" - added
Input schema / properties / tags / descriptionAdded value: +"Default: \"\"."
- Changed
save_design_version14 fields changed- removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / intent_hash / defaultRemoved value: -"" - added
Input schema / properties / intent_hash / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / notes / defaultRemoved value: -"" - added
Input schema / properties / notes / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / parameters / defaultRemoved value: -null - removed
Input schema / properties / parent_version_id / defaultRemoved value: -"" - added
Input schema / properties / parent_version_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / prompt / defaultRemoved value: -"" - added
Input schema / properties / prompt / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / provenance / defaultRemoved value: -null - removed
Input schema / properties / stl_path / defaultRemoved value: -"" - added
Input schema / properties / stl_path / descriptionAdded value: +"Default: \"\"."
- Added
save_feature - Changed
save_print_checkpoint7 fields changed- removed
Input schema / properties / bed_temp / defaultRemoved value: -null - removed
Input schema / properties / fan_speed_pct / defaultRemoved value: -null - removed
Input schema / properties / filament_used_mm / defaultRemoved value: -null - removed
Input schema / properties / flow_rate_pct / defaultRemoved value: -null - removed
Input schema / properties / hotend_temp / defaultRemoved value: -null - removed
Input schema / properties / layer_number / defaultRemoved value: -null - removed
Input schema / properties / z_height / defaultRemoved value: -null
- Changed
save_shipping_profile6 fields changed- removed
Input schema / properties / consent_to_store / defaultRemoved value: -false - added
Input schema / properties / consent_to_store / descriptionAdded value: +"Default: false." - removed
Input schema / properties / overwrite / defaultRemoved value: -false - added
Input schema / properties / overwrite / descriptionAdded value: +"Default: false." - removed
Input schema / properties / set_default / defaultRemoved value: -false - added
Input schema / properties / set_default / descriptionAdded value: +"Default: false."
- Changed
scale_mesh_to_fit10 fields changed- removed
Input schema / properties / max_x_mm / defaultRemoved value: -256 - added
Input schema / properties / max_x_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / max_y_mm / defaultRemoved value: -256 - added
Input schema / properties / max_y_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / max_z_mm / defaultRemoved value: -256 - added
Input schema / properties / max_z_mm / descriptionAdded value: +"Default: 256.0." - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
search_all_models7 fields changed- removed
Input schema / properties / page / defaultRemoved value: -1 - added
Input schema / properties / page / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / per_page / defaultRemoved value: -10 - added
Input schema / properties / per_page / descriptionAdded value: +"Default: 10." - removed
Input schema / properties / sort / defaultRemoved value: -"relevant" - added
Input schema / properties / sort / descriptionAdded value: +"Default: \"relevant\"." - removed
Input schema / properties / sources / defaultRemoved value: -null
- Changed
search_cached_models5 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -20 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 20." - removed
Input schema / properties / query / defaultRemoved value: -null - removed
Input schema / properties / source / defaultRemoved value: -null - removed
Input schema / properties / tags / defaultRemoved value: -null
- Changed
search_design_templates4 fields changed- removed
Input schema / properties / category_filter / defaultRemoved value: -"" - added
Input schema / properties / category_filter / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / max_results / defaultRemoved value: -10 - added
Input schema / properties / max_results / descriptionAdded value: +"Default: 10."
- Changed
search_design_versions2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -10 - added
Input schema / properties / limit / descriptionAdded value: +"Default: 10."
- Removed
search_material_catalog - Changed
search_models6 fields changed- removed
Input schema / properties / page / defaultRemoved value: -1 - added
Input schema / properties / page / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / per_page / defaultRemoved value: -10 - added
Input schema / properties / per_page / descriptionAdded value: +"Default: 10." - removed
Input schema / properties / sort / defaultRemoved value: -"relevant" - added
Input schema / properties / sort / descriptionAdded value: +"Default: \"relevant\"."
- Added
segment_mesh_regions - Changed
select_printer_variant2 fields changed- removed
Input schema / properties / variant_id / defaultRemoved value: -"" - added
Input schema / properties / variant_id / descriptionAdded value: +"Default: \"\"."
- Changed
send_gcode2 fields changed- removed
Input schema / properties / dry_run / defaultRemoved value: -false - added
Input schema / properties / dry_run / descriptionAdded value: +"Default: false."
- Added
separate_overlapping_parts - Added
set_approval_gate - Changed
set_fan4 fields changed- removed
Input schema / properties / node / defaultRemoved value: -"part" - added
Input schema / properties / node / descriptionAdded value: +"Default: \"part\"." - removed
Input schema / properties / percent / defaultRemoved value: -100 - added
Input schema / requiredAdded value: +[ + "percent" +]
- Changed
set_leveling_policy9 fields changed- removed
Input schema / properties / enabled / defaultRemoved value: -true - added
Input schema / properties / enabled / descriptionAdded value: +"Default: true." - removed
Input schema / properties / gcode_command / defaultRemoved value: -"G29" - added
Input schema / properties / gcode_command / descriptionAdded value: +"Default: \"G29\"." - removed
Input schema / properties / max_hours / defaultRemoved value: -48 - added
Input schema / properties / max_hours / descriptionAdded value: +"Default: 48.0." - removed
Input schema / properties / max_prints / defaultRemoved value: -10 - added
Input schema / properties / max_prints / descriptionAdded value: +"Default: 10." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
set_material4 fields changed- removed
Input schema / properties / color / defaultRemoved value: -null - removed
Input schema / properties / spool_id / defaultRemoved value: -null - removed
Input schema / properties / tool_index / defaultRemoved value: -0 - added
Input schema / properties / tool_index / descriptionAdded value: +"Default: 0."
- Added
set_nozzle_state - Changed
set_printer_light4 fields changed- removed
Input schema / properties / mode / defaultRemoved value: -"on" - removed
Input schema / properties / node / defaultRemoved value: -"chamber_light" - added
Input schema / properties / node / descriptionAdded value: +"Default: \"chamber_light\"." - added
Input schema / requiredAdded value: +[ + "mode" +]
- Added
set_printer_model - Added
set_speed_percent - Changed
set_speed_profile5 fields changed- added
Input schema / properties / percentAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Percent" +} - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Name" +} - added
Input schema / properties / profile / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / profile / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "profile" -]
- Added
set_speed_schedule - Added
set_telemetry_preference - Changed
set_temperature3 fields changed- removed
Input schema / properties / bed_temp / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / tool_temp / defaultRemoved value: -null
- Added
show_branch_history - Added
show_design_lineage - Added
show_on_stage - Added
show_reflog - Added
sign_decoration_preset_release - Added
sign_design_release - Added
sign_feature_release - Changed
simplify_mesh_model4 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / target_ratio / defaultRemoved value: -0.5 - added
Input schema / properties / target_ratio / descriptionAdded value: +"Default: 0.5."
- Changed
skip_print_objects3 fields changed- removed
Input schema / properties / plate_number / defaultRemoved value: -1 - added
Input schema / properties / plate_number / descriptionAdded value: +"Default: 1." - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Name" +}
- Changed
slice_and_estimate6 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Name" +} - removed
Input schema / properties / profile / defaultRemoved value: -null
- Changed
slice_and_print13 fields changed- removed
Input schema / properties / auto_center / defaultRemoved value: -true - added
Input schema / properties / auto_center / descriptionAdded value: +"Default: true." - added
Input schema / properties / colorAdded value: +{ + "description": "Default: \"\".", + "title": "Color", + "type": "string" +} - added
Input schema / properties / hardwareAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Hardware" +} - removed
Input schema / properties / material / defaultRemoved value: -null - removed
Input schema / properties / metadata / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / preview_token / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / profile / defaultRemoved value: -null - removed
Input schema / properties / skip_validation / defaultRemoved value: -false - added
Input schema / properties / skip_validation / descriptionAdded value: +"Default: false."
- Changed
slice_model9 fields changed- removed
Input schema / properties / auto_center / defaultRemoved value: -true - added
Input schema / properties / auto_center / descriptionAdded value: +"Default: true." - added
Input schema / properties / materialAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Material" +} - removed
Input schema / properties / output_dir / defaultRemoved value: -null - added
Input schema / properties / placementAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Placement" +} - removed
Input schema / properties / printer_id / defaultRemoved value: -null - added
Input schema / properties / printer_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Name" +} - removed
Input schema / properties / profile / defaultRemoved value: -null - removed
Input schema / properties / slicer_path / defaultRemoved value: -null
- Added
smart_decorate - Changed
smart_generate_from_template7 fields changed- removed
Input schema / properties / auto_reinforce / defaultRemoved value: -false - added
Input schema / properties / auto_reinforce / descriptionAdded value: +"Default: false." - added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / parameters / defaultRemoved value: -null - added
Input schema / properties / printer_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Printer Id" +}
- Changed
smart_reprint10 fields changed- removed
Input schema / properties / auto_ams / defaultRemoved value: -true - added
Input schema / properties / auto_ams / descriptionAdded value: +"Default: true." - removed
Input schema / properties / brief_id / defaultRemoved value: -"" - added
Input schema / properties / brief_id / descriptionAdded value: +"Default: \"\"." - changed
Input schema / properties / extra_overrides / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } +] - removed
Input schema / properties / extra_overrides / defaultRemoved value: -null - removed
Input schema / properties / printer_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - changed
Input schema / properties / search_dirs / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / search_dirs / defaultRemoved value: -null
- Added
solve_sketch - Added
source_merge_three_way - Changed
splice_mesh_at_z2 fields changed- removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Changed
split_mesh_by_component2 fields changed- removed
Input schema / properties / output_dir / defaultRemoved value: -"" - added
Input schema / properties / output_dir / descriptionAdded value: +"Default: \"\"."
- Added
split_mesh_to_fit - Changed
sso_login_url2 fields changed- removed
Input schema / properties / state / defaultRemoved value: -"" - added
Input schema / properties / state / descriptionAdded value: +"Default: \"\"."
- Changed
start_monitored_print10 fields changed- removed
Input schema / properties / auto_pause / defaultRemoved value: -true - added
Input schema / properties / auto_pause / descriptionAdded value: +"Default: true." - removed
Input schema / properties / first_layer_checks / defaultRemoved value: -3 - added
Input schema / properties / first_layer_checks / descriptionAdded value: +"Default: 3." - removed
Input schema / properties / first_layer_delay / defaultRemoved value: -120 - added
Input schema / properties / first_layer_delay / descriptionAdded value: +"Default: 120." - removed
Input schema / properties / first_layer_interval / defaultRemoved value: -60 - added
Input schema / properties / first_layer_interval / descriptionAdded value: +"Default: 60." - removed
Input schema / properties / preview_token / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
start_print26 fields changed- removed
Input schema / properties / ams_mapping / defaultRemoved value: -null - removed
Input schema / properties / bed_leveling / defaultRemoved value: -true - added
Input schema / properties / bed_leveling / descriptionAdded value: +"Default: true." - removed
Input schema / properties / bed_type / defaultRemoved value: -"auto" - added
Input schema / properties / bed_type / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / flow_cali / defaultRemoved value: -true - added
Input schema / properties / flow_cali / descriptionAdded value: +"Default: true." - removed
Input schema / properties / layer_inspect / defaultRemoved value: -false - added
Input schema / properties / layer_inspect / descriptionAdded value: +"Default: false." - removed
Input schema / properties / nozzle_clog_detect / defaultRemoved value: -true - added
Input schema / properties / nozzle_clog_detect / descriptionAdded value: +"Default: true." - removed
Input schema / properties / plate_number / defaultRemoved value: -1 - added
Input schema / properties / plate_number / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / preview_token / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - added
Input schema / properties / restore_nozzle_detectionAdded value: +{ + "description": "Default: true.", + "title": "Restore Nozzle Detection", + "type": "boolean" +} - removed
Input schema / properties / resume_from_paused / defaultRemoved value: -false - added
Input schema / properties / resume_from_paused / descriptionAdded value: +"Default: false." - removed
Input schema / properties / skip_preheat_reassert / defaultRemoved value: -false - added
Input schema / properties / skip_preheat_reassert / descriptionAdded value: +"Default: false." - removed
Input schema / properties / timelapse / defaultRemoved value: -false - added
Input schema / properties / timelapse / descriptionAdded value: +"Default: false." - removed
Input schema / properties / use_ams / defaultRemoved value: -"auto" - added
Input schema / properties / use_ams / descriptionAdded value: +"Default: \"auto\"." - removed
Input schema / properties / vibration_cali / defaultRemoved value: -true - added
Input schema / properties / vibration_cali / descriptionAdded value: +"Default: true."
- Changed
start_printer_health_monitoring2 fields changed- removed
Input schema / properties / interval_seconds / defaultRemoved value: -30 - added
Input schema / properties / interval_seconds / descriptionAdded value: +"Default: 30."
- Added
start_subscription_checkout - Changed
store_credential2 fields changed- removed
Input schema / properties / label / defaultRemoved value: -"" - added
Input schema / properties / label / descriptionAdded value: +"Default: \"\"."
- Added
submit_drawing_extraction - Changed
submit_job5 fields changed- removed
Input schema / properties / idempotency_key / defaultRemoved value: -null - added
Input schema / properties / preview_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Preview Token" +} - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / priority / defaultRemoved value: -0 - added
Input schema / properties / priority / descriptionAdded value: +"Default: 0."
- Removed
submit_provider_job - Changed
suggest_material_for_order10 fields changed- removed
Input schema / properties / budget / defaultRemoved value: -"" - added
Input schema / properties / budget / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / need_food_safe / defaultRemoved value: -false - added
Input schema / properties / need_food_safe / descriptionAdded value: +"Default: false." - removed
Input schema / properties / need_high_detail / defaultRemoved value: -false - added
Input schema / properties / need_high_detail / descriptionAdded value: +"Default: false." - removed
Input schema / properties / need_high_strength / defaultRemoved value: -false - added
Input schema / properties / need_high_strength / descriptionAdded value: +"Default: false." - removed
Input schema / properties / need_weather_resistant / defaultRemoved value: -false - added
Input schema / properties / need_weather_resistant / descriptionAdded value: +"Default: false."
- Changed
suggest_printer_for_job3 fields changed- removed
Input schema / properties / file_hash / defaultRemoved value: -null - removed
Input schema / properties / file_name / defaultRemoved value: -null - removed
Input schema / properties / material_type / defaultRemoved value: -null
- Removed
sync_provider_capacity - Changed
tax_estimate12 fields changed- removed
Input schema / properties / business_tax_id / defaultRemoved value: -"" - added
Input schema / properties / business_tax_id / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / currency / defaultRemoved value: -"USD" - added
Input schema / properties / currency / descriptionAdded value: +"Default: \"USD\"." - removed
Input schema / properties / fee_amount / defaultRemoved value: -0 - added
Input schema / properties / fee_amount / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / jurisdiction / defaultRemoved value: -"" - added
Input schema / properties / jurisdiction / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / manufacturer_quote_usd / defaultRemoved value: -0 - added
Input schema / properties / manufacturer_quote_usd / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / user_email / defaultRemoved value: -"" - added
Input schema / properties / user_email / descriptionAdded value: +"Default: \"\"."
- Changed
thicken_mesh_walls5 fields changed- removed
Input schema / properties / amount_mm / defaultRemoved value: -0.5 - added
Input schema / properties / amount_mm / descriptionAdded value: +"Default: 0.5." - added
Input schema / properties / keep_hole_sizeAdded value: +{ + "description": "Default: true.", + "title": "Keep Hole Size", + "type": "boolean" +} - removed
Input schema / properties / output_path / defaultRemoved value: -"" - added
Input schema / properties / output_path / descriptionAdded value: +"Default: \"\"."
- Added
tolerance_stack_analysis - Added
transfer_artifact_between_orgs - Changed
trigger_bed_level1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Changed
trim_serve_processes5 fields changed- removed
Input schema / properties / confirm / defaultRemoved value: -false - added
Input schema / properties / confirm / descriptionAdded value: +"Default: false." - removed
Input schema / properties / force / defaultRemoved value: -false - added
Input schema / properties / force / descriptionAdded value: +"Default: false." - removed
Input schema / properties / open_sessions / defaultRemoved value: -null
- Changed
troubleshoot_printer4 fields changed- removed
Input schema / properties / hms_code / defaultRemoved value: -"" - added
Input schema / properties / hms_code / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / symptom / defaultRemoved value: -"" - added
Input schema / properties / symptom / descriptionAdded value: +"Default: \"\"."
- Changed
tweak_and_compile_scad3 fields changed- added
Input schema / properties / brief_idAdded value: +{ + "description": "Default: \"\".", + "title": "Brief Id", + "type": "string" +} - added
Input schema / properties / colorAdded value: +{ + "description": "Default: \"\".", + "title": "Color", + "type": "string" +} - removed
Input schema / properties / material / defaultRemoved value: -null
- Added
unarchive_decoration_preset - Added
unarchive_design - Added
unarchive_feature - Added
undo_last_head_change - Added
unload_filament - Changed
update_firmware1 field changed- removed
Input schema / properties / component / defaultRemoved value: -null
- Changed
update_interception_telemetry13 fields changed- removed
Input schema / properties / bed_target / defaultRemoved value: -null - removed
Input schema / properties / bed_temp / defaultRemoved value: -null - removed
Input schema / properties / current_layer / defaultRemoved value: -null - removed
Input schema / properties / elapsed_seconds / defaultRemoved value: -null - removed
Input schema / properties / fan_speed_pct / defaultRemoved value: -null - removed
Input schema / properties / feedrate / defaultRemoved value: -null - removed
Input schema / properties / filament_used_mm / defaultRemoved value: -null - removed
Input schema / properties / flow_rate_pct / defaultRemoved value: -null - removed
Input schema / properties / hotend_target / defaultRemoved value: -null - removed
Input schema / properties / hotend_temp / defaultRemoved value: -null - removed
Input schema / properties / position_x / defaultRemoved value: -null - removed
Input schema / properties / position_y / defaultRemoved value: -null - removed
Input schema / properties / position_z / defaultRemoved value: -null
- Changed
update_printer_firmware1 field changed- removed
Input schema / properties / target_version / defaultRemoved value: -null
- Changed
update_printer_site1 field changed- removed
Input schema / properties / tags / defaultRemoved value: -null
- Changed
upgrade_kiln4 fields changed- removed
Input schema / properties / confirm / defaultRemoved value: -false - added
Input schema / properties / confirm / descriptionAdded value: +"Default: false." - removed
Input schema / properties / force / defaultRemoved value: -false - added
Input schema / properties / force / descriptionAdded value: +"Default: false."
- Changed
upload_file1 field changed- removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
usage_summary - Changed
validate_and_prepare4 fields changed- removed
Input schema / properties / material / defaultRemoved value: -"" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
validate_and_prepare_mesh18 fields changed- removed
Input schema / properties / auto_repair / defaultRemoved value: -true - added
Input schema / properties / auto_repair / descriptionAdded value: +"Default: true." - removed
Input schema / properties / auto_scale / defaultRemoved value: -false - added
Input schema / properties / auto_scale / descriptionAdded value: +"Default: false." - removed
Input schema / properties / build_volume_x / defaultRemoved value: -null - removed
Input schema / properties / build_volume_y / defaultRemoved value: -null - removed
Input schema / properties / build_volume_z / defaultRemoved value: -null - removed
Input schema / properties / layer_height / defaultRemoved value: -0.2 - added
Input schema / properties / layer_height / descriptionAdded value: +"Default: 0.2." - removed
Input schema / properties / material / defaultRemoved value: -"PLA" - added
Input schema / properties / material / descriptionAdded value: +"Default: \"PLA\"." - removed
Input schema / properties / min_printability_score / defaultRemoved value: -40 - added
Input schema / properties / min_printability_score / descriptionAdded value: +"Default: 40." - added
Input schema / properties / nozzle_diameter / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / nozzle_diameter / defaultRemoved value: -0.4 - removed
Input schema / properties / nozzle_diameter / typeRemoved value: -"number" - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
validate_assembly3 fields changed- added
Input schema / properties / assembly_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "additionalProperties": true, + "type": "object" + } +] - removed
Input schema / properties / assembly_json / typeRemoved value: -"string" - removed
Input schema / properties / printer_id / defaultRemoved value: -null
- Changed
validate_design_for_requirements1 field changed- removed
Input schema / properties / material / defaultRemoved value: -null
- Changed
validate_gcode2 fields changed- added
Input schema / properties / commands / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / commands / typeRemoved value: -"string"
- Changed
validate_gcode_safe4 fields changed- added
Input schema / properties / commands / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } +] - removed
Input schema / properties / commands / typeRemoved value: -"string" - removed
Input schema / properties / printer_id / defaultRemoved value: -"" - added
Input schema / properties / printer_id / descriptionAdded value: +"Default: \"\"."
- Changed
validate_openscad_code3 fields changed- added
Input schema / properties / code / descriptionAdded value: +"Default: \"\"." - added
Input schema / properties / scad_codeAdded value: +{ + "description": "Default: \"\".", + "title": "Scad Code", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "code" -]
- Changed
validate_print_quality3 fields changed- removed
Input schema / properties / job_id / defaultRemoved value: -null - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / save_snapshot / defaultRemoved value: -null
- Changed
validate_scad_parameters1 field changed- removed
Input schema / properties / material / defaultRemoved value: -null
- Changed
validate_shipping_address4 fields changed- removed
Input schema / properties / postal_code / defaultRemoved value: -"" - added
Input schema / properties / postal_code / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / state / defaultRemoved value: -"" - added
Input schema / properties / state / descriptionAdded value: +"Default: \"\"."
- Added
verify_decoration_preset_release - Added
verify_design_release - Added
verify_feature_release - Added
verify_mesh_fit - Added
verify_mesh_measurements - Added
verify_provenance_integrity - Added
visual_diff_meshes - Added
visualize_branch_tree - Changed
visualize_model7 fields changed- removed
Input schema / properties / angles / defaultRemoved value: -null - removed
Input schema / properties / color / defaultRemoved value: -"" - added
Input schema / properties / color / descriptionAdded value: +"Default: \"\"." - removed
Input schema / properties / height / defaultRemoved value: -600 - added
Input schema / properties / height / descriptionAdded value: +"Default: 600." - removed
Input schema / properties / width / defaultRemoved value: -800 - added
Input schema / properties / width / descriptionAdded value: +"Default: 800."
- Changed
watch_print15 fields changed- removed
Input schema / properties / cancel_at_percent / defaultRemoved value: -0 - added
Input schema / properties / cancel_at_percent / descriptionAdded value: +"Default: 0.0." - removed
Input schema / properties / max_snapshots / defaultRemoved value: -5 - added
Input schema / properties / max_snapshots / descriptionAdded value: +"Default: 5." - removed
Input schema / properties / poll_interval / defaultRemoved value: -15 - added
Input schema / properties / poll_interval / descriptionAdded value: +"Default: 15." - removed
Input schema / properties / printer_name / defaultRemoved value: -null - removed
Input schema / properties / save_to_disk / defaultRemoved value: -false - added
Input schema / properties / save_to_disk / descriptionAdded value: +"Default: false." - removed
Input schema / properties / snapshot_interval / defaultRemoved value: -60 - added
Input schema / properties / snapshot_interval / descriptionAdded value: +"Default: 60." - removed
Input schema / properties / stall_timeout / defaultRemoved value: -600 - added
Input schema / properties / stall_timeout / descriptionAdded value: +"Default: 600." - removed
Input schema / properties / timeout / defaultRemoved value: -7200 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 7200."
- Changed
watch_print_status5 fields changed- removed
Input schema / properties / block_until_event / defaultRemoved value: -false - added
Input schema / properties / block_until_event / descriptionAdded value: +"Default: false." - removed
Input schema / properties / event_types / defaultRemoved value: -null - removed
Input schema / properties / timeout / defaultRemoved value: -60 - added
Input schema / properties / timeout / descriptionAdded value: +"Default: 60."
- Changed
webcam_stream5 fields changed- removed
Input schema / properties / action / defaultRemoved value: -"status" - added
Input schema / properties / action / descriptionAdded value: +"Default: \"status\"." - removed
Input schema / properties / port / defaultRemoved value: -8081 - added
Input schema / properties / port / descriptionAdded value: +"Default: 8081." - removed
Input schema / properties / printer_name / defaultRemoved value: -null
- Added
wipe_nozzle - Changed
wrap_gcode_as_3mf19 fields changed- added
Input schema / properties / bed_temp / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - removed
Input schema / properties / bed_temp / defaultRemoved value: -65 - removed
Input schema / properties / bed_temp / typeRemoved value: -"integer" - added
Input schema / properties / bed_typeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Bed Type" +} - removed
Input schema / properties / filament_colors / defaultRemoved value: -null - added
Input schema / properties / filament_type / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / filament_type / defaultRemoved value: -"PLA" - removed
Input schema / properties / filament_type / typeRemoved value: -"string" - removed
Input schema / properties / filament_types / defaultRemoved value: -null - added
Input schema / properties / hotend_temp / anyOfAdded value: +[ + { + "type": "integer" + }, + { + "type": "null" + } +] - removed
Input schema / properties / hotend_temp / defaultRemoved value: -220 - removed
Input schema / properties / hotend_temp / typeRemoved value: -"integer" - removed
Input schema / properties / num_filaments / defaultRemoved value: -1 - added
Input schema / properties / num_filaments / descriptionAdded value: +"Default: 1." - removed
Input schema / properties / resume_mode / defaultRemoved value: -false - added
Input schema / properties / resume_mode / descriptionAdded value: +"Default: false." - removed
Input schema / properties / source_3mf_path / defaultRemoved value: -null - removed
Input schema / properties / stl_path / defaultRemoved value: -null - removed
Input schema / properties / thumbnail_path / defaultRemoved value: -null
- Added
wrap_gcode_as_resume_3mf
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
Scored across 851 tools
Dozens of tools have near-identical purposes: slice_and_estimate, estimate_print_time, estimate_material_cost, estimate_print_cost_from_mesh, estimate_cost, estimate_mesh_weight and estimate_mesh_print_time all answer 'time/filament/cost'; validate_and_prepare, validate_and_prepare_mesh, validate_generated_mesh, check_print_readiness and audit_original_design all gate the same mesh; merge_stl, merge_mesh_files and compose_models concatenate meshes; visualize_model, render_model_preview, preview_generated_model, inspect_mesh_view and show_on_stage all render images. Several deprecated aliases (print_status_lite, repair_mesh_advanced, render_model_preview, recover_texture_detail) sit beside their replacements with no removal. An agent cannot reliably pick among these without reading long prose.
The dominant pattern is snake_case verb_noun (list_designs, create_design_branch, retire_feature_release), which is readable and mostly predictable. But conventions are mixed: namespace prefixes that invert the order (fleet_status, cloud_remote_list, kiln_health), noun-first names (may_i_print, axis_report style), and product generators all named generate_<object> alongside generate_model, generate_from_template, generate_model_with_provider, generate_and_print. Deprecated duplicates with no naming distinction compound the inconsistency.
851 tools is an extreme mismatch for any single MCP surface; the descriptions alone exceed a context window, so an agent cannot survey the set before choosing. Large blocks are tier-gated stubs (Business/Enterprise) that cannot even run on the installing tier, and many are verbatim duplicates or deprecated aliases rather than earned capabilities.
The domain — an end-to-end 3D printing workspace (design, version, cloud sync, slice, print, monitor, repair, marketplace, fulfillment, fleet, org/teams) — is covered to an unusual depth, with CRUD, lifecycle, branching, releases and audit all present. Gaps are minor and mostly integration-specific (e.g. Klipper power-loss recovery noted as unsupported), not surface-level.
Maintenance
Related MCP Connectors
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
- OwlCADOAuthcom.owlcad
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
AI tool directory MCP server, live since July 2026. Tools, agents, models, companies, services.
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables 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.30119 npm256GPL 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants to search for, explore, and retrieve 3D printable models from Thingiverse.7MIT
- AlicenseNot gradedqualityFmaintenance3D Printing MCP By OctoEverywhere38Apache 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.27-