orcaslicer-mcp
The OrcaSlicer MCP server allows AI assistants to control a live OrcaSlicer instance for full slicing workflow automation. Key capabilities include:
Configuration & Settings Management: Read/write any of ~800 settings with atomic rollback on invalid keys; apply per-object overrides; set variable layer heights; search for settings by keyword; and get authoritative definitions (label, tooltip, type, range).
Slicing & Analysis: Initiate asynchronous slices, wait for results, cancel, and check status; get per-feature breakdown of time, filament, and flow to identify bottlenecks; compare multiple setting values with automatic restore; and retrieve generated G-code.
Model & Plate Operations: Load .stl, .obj, .3mf, .step, .stp files; list, transform, duplicate, delete objects; auto-arrange and auto-orient on the bed; monitor background job progress.
Preset Management: List, select, get config, edit, save, rename, and delete user/system presets; validate profile physics (flow, temperature, geometry) before saving to prevent impossible prints.
Plate Diagnostics & Validation: Diagnose overall plate state; check object placement within printable area including skirt/brim; detect issues like floating objects or insufficient bed adhesion.
Visualization & Output: Render PNG images of the plate (editor or toolpath preview) from 7 camera angles, zoomed to bed or object; download full G-code.
Knowledge & Reference: Consult curated slicing knowledge and search settings offline by topic, symptom, or goal; save persistent context notes (machine/user/project scoped) for future sessions.
Live Monitoring & Persistence: Get real-time app/project status; watch for events like slice completion or config changes; remember facts as local plain files.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@orcaslicer-mcpCould you load my benchy model and slice it with the current settings?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OrcaSlicer MCP
Let Claude work alongside you in a real, running OrcaSlicer. It loads models, arranges the plate, tunes settings, slices, and reads the result back as numbers you can question: which feature ate the print time, what a setting actually does, whether a profile breaks your printer's physics. Every change lands in the GUI while you watch, so the slicer stays yours and you get better at it as you go.
This package is an MCP server: it bundles no model and talks to nothing but OrcaSlicer, at an address you configure, localhost by default. The model comes from your MCP client. If that client uses a hosted one, your conversation goes there as any chat does; your models, profiles, and gcode stay on the machine running the slicer. Point the client at a local model and nothing leaves at all.
What it can do
Knowing what the settings mean
An offline settings reference ships with the package, carrying the authoritative label, tooltip, type, range, enum, and default for each key, so describe_setting, search_settings, and compare_settings answer from OrcaSlicer's own source instead of guessing. consult composes curated slicing knowledge and your saved notes by topic, symptom, or goal.
check_profile_physics is a deterministic gate. It overlays proposed changes on the live config, runs flow, temperature, geometry, and cooling math, then returns ok, warnings, or blocked. Accelerations your printer cannot reach and speeds past the flow ceiling get caught before they reach a print.
Settings
Read and write any of roughly 800 OrcaSlicer settings on the live config, for the whole plate or scoped narrower: get_config, set_config, find_config_keys, set_layer_height, set_height_range for a band of layers, and set_object_config for one object's overrides.
Presets
list_presets, select_preset, get_preset_config, edit_preset, save_preset, rename_preset, delete_preset.
Slicing, and reading the result back
slice, slice_and_wait, apply_and_slice, cancel_slice, get_slice_status, get_slice_warnings, get_gcode.
get_slice_breakdown returns per-feature time, filament, and flow. OrcaSlicer shows the same information in the legend beside its preview, sized for a screen; this returns it as numbers an assistant can compare and act on:
role time share filament mean flow
inner_wall 5m 41s 30.8% 6.43 g 16.0 mm3/s
outer_wall 3m 19s 18.0% 3.20 g 13.6 mm3/s
sparse_infill 3m 07s 17.0% 3.57 g 17.0 mm3/s
internal_solid_infill 2m 01s 11.0% 1.72 g 11.8 mm3/s
bridge 52s 4.7% 0.26 g 4.4 mm3/s
support_interface 36s 3.2% 0.52 g 12.3 mm3/s
overhang_perimeter 28s 2.5% 0.13 g 3.7 mm3/s
internal_bridge 21s 1.9% 0.45 g 19.9 mm3/s
top_surface 19s 1.7% 0.29 g 12.5 mm3/s
brim 12s 1.1% 0.21 g 14.7 mm3/s
bottom_surface 7s 0.7% 0.10 g 11.8 mm3/s
18m 24s 16.89 gIt answers which feature is eating the time without slicing repeatedly to find out. A prediction_check rides along and flags any role where the profile's requested speed got throttled at the flow ceiling.
compare_slices slices the current plate under several named variants and returns one comparison, so "what does layer height actually cost me?" is a single question rather than four manual slices. It applies each variant over your original config, restores it when done, and hands back a verdict plus a table with every delta already worked out:
Recommended: 0.4mm - fastest with no warnings.
variant time filament vs 0.4mm (baseline)
0.3mm 8h 10m 41.0 g +1h 30m (+22%), -7.0 g (-15%)
0.4mm * 6h 40m 48.0 g baseline
0.5mm 5h 20m 53.4 g -1h 20m (-20%), +5.4 g (+11%)
0.6mm 4h 35m 57.1 g -2h 05m (-31%), +9.1 g (+19%) thin-wall warningIt only crowns a winner when one variant genuinely beats the rest on time, filament, and warnings; when they trade off, it names the fastest, the lightest, and where the warnings landed, and leaves the choice in front of you. Pass detail=True for the per-feature split of each variant.
Models and the plate
load_model (.stl, .obj, .3mf, plus .step and .stp on fork v2.3.2-mcp.3 and later), list_objects with each object's world-space bounding box and an on_plate flag, transform_object, duplicate_object, delete_object, arrange_plate, auto_orient, check_placement, diagnose_plate, get_job_status.
Plate renders
render_plate hands back a PNG, so the assistant can look instead of inferring from coordinates. A rotation reads instantly as a picture and barely at all as three Euler angles. Seven camera angles cover iso, top, front, left, right, rear, and bottom. Use frame="plate" to stand back for the whole bed, or frame="object" to lean in on the part. Requires fork v2.3.2-mcp.4 or later.
|
|
|
|
Your models on the bed. Answers orientation, plate contact, and first-layer footprint. | Sliced toolpaths coloured by feature role, so support placement is plain to see. |
describe_plate answers the same questions as numbers and one sentence per object, computed from the sliced G-code: how the part stands (flat, tilted, or on an edge or corner, from first-layer contact against its widest layer), the first-layer footprint as islands, where overhang extrusions concentrate by height band, where support stands and where it touches the part, and which side the seams sit on, checked against seam_position. It exists because an assistant reads a sentence more reliably than a picture. Copies of an object are aggregated; the islands still show each copy's contact patch. On a plate of three tilted connector copies it reads: "Body4.stl (3 copies) stands on an edge or corner: first-layer contact is 5% of its widest layer, in 3 islands of about 50 mm2 each. Overhang extrusions concentrate at Z 0 to 10 mm. Support is present from Z 0.4 to 56.8 mm, standing in 3 places and touching the part in 7 zones. Seams align on the +Y side (91%), matching seam_position=back."
Live state and memory
get_status and watch_events report what the slicer is doing now. remember persists machine, user, and project facts for later sessions, as plain local files in ~/.orcaslicer-mcp/notes/, relocatable with ORCA_MCP_NOTES_DIR.
Learning from real prints
save_gcode saves the last successful slice's G-code and records the model, geometry, and full settings snapshot that produced it. Set PRINT_OUTCOMES_DIR to say exactly where; otherwise it writes into the shared print-outcomes folder (~/projects/_shared/print-outcomes/) if that folder already exists on this machine, and into ~/.orcaslicer-mcp/ (the same folder remember uses) if it does not. recall_prints reads the shared folder before you slice, so the assistant can say how past prints of this model actually went: success, cancelled, or the verdict you gave it, and the settings used.
Recording and recall both depend on a companion service, the klipper-mcp server, whose klipper-mcp-capture process writes the real print result into the same store once your printer finishes the job, and whose start_print tool uploads the file save_gcode saved under the same filename. Without that companion, save_gcode still writes the G-code file (its folder is created on first use even so) but records nothing, and recall_prints returns available: false and does nothing else. Neither tool makes the server contact you on its own; the assistant only sees new outcomes when it calls recall_prints again in a later session.
Related MCP server: Claude-LMStudio-Bridge
What you need
Stock OrcaSlicer ships without a control API, so a matching build does that half of the job.
The OrcaSlicer MCP build. OrcaSlicer 2.3.2 with an embedded local API, token-authenticated and bound to localhost until you say otherwise. Get it from the releases page. If no binary is up for your platform yet, build the
remote-apibranch from source.This package (
orcaslicer-mcp). The MCP server that connects your AI client to that build.
Updating: take new builds from the releases page, never from inside the app. The in-app updater offers stock OrcaSlicer, which drops the control API. Builds mcp.2 and later turn that updater off for you. On an older build, click Skip this Version if a "new version available" prompt appears.
Quickstart
Install uv first, because it provides the uvx command that runs the server. One line does it: curl -LsSf https://astral.sh/uv/install.sh | sh on macOS and Linux, or irm https://astral.sh/uv/install.ps1 | iex in PowerShell on Windows.
Install the OrcaSlicer MCP build, launch it, and finish the one-time setup by picking your printer. A fresh install may show a “Bambu Network Plug-in Required” dialog. Click Skip for Now, since that plug-in only serves Bambu cloud printing. The control API starts once setup is finished.
Open Preferences (Ctrl+P), go to Remote API, and tick Enable Remote API. Copy the token shown on that page. Access stays localhost-only unless you also switch on "Allow LAN access".
Connect your MCP client.
Claude Desktop: download
orcaslicer-mcp-<version>.mcpbfrom the releases page and open the file. Claude Desktop offers to install it. Open the extension's settings afterwards, paste the token from step 2, and enable it.Ignore any guide that tells you to hand-edit
claude_desktop_config.json. Current Claude Desktop builds rewrite that file themselves and drop addedmcpServersentries, so the edit will not stick. The extension leaves the file alone and findsuvxby itself.Claude Code and other MCP clients: add the server to your client's MCP config. For Claude Code that means a project
.mcp.json:{ "mcpServers": { "orcaslicer": { "command": "uvx", "args": ["orcaslicer-mcp"], "env": { "ORCA_API_TOKEN": "<token from Preferences>" } } } }ORCA_API_URLdefaults tohttp://127.0.0.1:13130. Set it only if you changed the port, or if OrcaSlicer runs on another machine with LAN access enabled there.macOS note for GUI clients other than Claude Desktop: apps launched from the Dock do not inherit your terminal's PATH, so
"command": "uvx"can fail silently. Runwhich uvxin Terminal, then paste the full path it prints into"command". It is usually~/.local/bin/uvx.Restart your client and ask: "Load benchy.stl, slice it with the current profile, and tell me the print time."
Security
The control API binds 127.0.0.1 only by default. LAN access is an explicit opt-in in Preferences.
Every request must carry the API token. OrcaSlicer generates it on first run and can regenerate it at any time.
The MCP server runs as a local stdio process and opens no connection except to OrcaSlicer. No telemetry.
Development
uv venv && uv pip install -e ".[dev]"
uv run pytest # unit tests against a mock API, plus a guarded live smoke testThe live smoke test skips itself unless ORCA_API_URL and ORCA_API_TOKEN point at a running OrcaSlicer MCP build.
Protocol notes, design specs, and verification results live in docs/.
Privacy policy
The server talks to OrcaSlicer's local API at the address you configure, localhost by default, and to nothing else. It has no backend, so there is no service of ours for anything to reach. What leaves your machine is whatever your MCP client sends its model: the conversation, plus any settings or file contents you or the assistant put into it. Their terms govern that traffic, and it is the same traffic any other use of that client produces. A local model removes it entirely.
Data collection: none. The server collects nothing about you or your usage.
Usage and storage: models, settings, and gcode stay on the computer running OrcaSlicer, held in memory only for the duration of each request. The API token authenticates the server to OrcaSlicer, and your MCP client stores it. Claude Desktop keeps extension settings in the operating system's credential store.
Third-party sharing: none by this server, which has no analytics and no backend. Traffic between your client and its model provider sits outside this project and falls under their policies.
Data retention: the only data written to disk is notes you save yourself with
remember, stored as plain files under~/.orcaslicer-mcp/notes/, and the G-code plus slice records thatsave_gcodewrites: under~/projects/_shared/print-outcomes/when that shared folder already exists, otherwise under~/.orcaslicer-mcp/(either relocatable withPRINT_OUTCOMES_DIR), read back byrecall_printsand joined with real print results by the separate klipper-mcp project. Read or delete either folder whenever you like. Delete them and nothing remains.Contact: questions and concerns go in an issue.
Status
Early public release, soft launch. The server carries 183 unit tests and gets exercised on real print jobs. Prebuilt OrcaSlicer MCP builds cover Windows, macOS, and Linux on the releases page. Issues and reports are welcome.
Support
The project is free and stays that way. If it saves you time and you feel like saying thanks, you can buy me a coffee.
License
AGPL-3.0, matching OrcaSlicer, from whose source the bundled settings schema derives. See LICENSE.
Available Tools
44 toolsapply_and_sliceApply config and sliceA
Apply config overrides and then slice in one step, returning {applied, errors, result} with the resulting stats and warnings. The changes are atomic (any invalid key rejects the whole batch) and unsaved, exactly like set_config, so they revert if the preset is reselected.
Use this to test the effect of a tweak in a single call. Use set_config then slice_and_wait to keep the steps separate, or compare_settings to try several values of one key.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | Map of OrcaSlicer config key to new value to apply before slicing, e.g. {'layer_height': 0.2}. Same format and validation as set_config; discover keys with search_settings or find_config_keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing atomicity, rejection of invalid keys, unsaved changes, and revert-on-preset-reselection behavior. This is critical behavioral context not available from readOnlyHint/destructiveHint 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 description is compact and front-loaded: purpose and return shape come first, followed by key behavioral caveats and usage guidance. Every sentence 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?
With only one parameter and no output schema, the description still explains the return value, error semantics, atomicity, persistence behavior, and alternatives. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter description is already detailed, including an example, validation behavior, and how to discover keys. The tool description does not need to add parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific combined operation: apply config overrides and then slice in one step, and explicitly names the result shape. It differentiates from siblings by referencing set_config, slice_and_wait, and compare_settings 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?
It gives an explicit use case: 'Use this to test the effect of a tweak in a single call.' It also clearly routes to alternatives, telling the agent when to use set_config then slice_and_wait, and when compare_settings is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrange_plateArrange plateA
Auto-arrange all objects on the plate (async job; poll get_job_status until idle).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is neither read-only nor destructive. The description adds important behavioral context about being an async job and needing to poll a status endpoint, which is valuable beyond the annotations. It does not contradict the annotations and clarifies the execution 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 entire description is a single, focused sentence with an embedded instruction. It is front-loaded with the core action and adds the necessary async detail in parentheses. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description covers everything an agent needs: what it does, that it is async, and how to check completion. It is a complete specification for this simple action.
Complex tools with many parameters or behaviors need more documentation. 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 schema is empty. The description does not need to explain parameter meanings. A baseline of 4 is appropriate since there is nothing to clarify; the tool's behavior is fully described for a parameterless action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and 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: 'Auto-arrange all objects on the plate'. It uses a specific verb ('arrange') and resource ('objects on the plate'), and the parenthetical about async job distinguishes it from similar tools like auto_orient by signaling it's a batch operation on all 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 provides explicit guidance on how to use the tool ('poll get_job_status until idle') and implies the asynchronous nature. However, it does not explicitly mention when to avoid this tool or discuss alternatives such as auto_orient or transform_object, so it falls short of full alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_orientAuto-orient objectsA
Auto-orient all objects for printing (async job; poll get_job_status until idle).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation is asynchronous, which is a key behavioral trait beyond the annotations. It also notes that it affects all objects, adding context. The annotations already indicate non-read-only and non-destructive, and the description does not contradict this.
Agents need to know what a tool does to the world before calling 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 that packs purpose and usage into one line. It is front-loaded and every word adds value, 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?
Given the tool's simplicity (no parameters, no output schema), the description covers the essential behavioral context: it's async and requires polling get_job_status. It might also clarify the return value, but the instruction implies a job handle. Overall, it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is complete. Under the rubric, the baseline for 0 params is 4, and the description does not need to elaborate on any 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's function: auto-orient all objects for printing, with a specific verb (auto-orient) and resource (all objects). This distinguishes it from sibling tools like arrange_plate or transform_object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by noting it's an async job and instructing to poll get_job_status until idle. This is a crucial operational guideline, but it does not explicitly state when to prefer this over alternatives like transform_object or arrange_plate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_sliceCancel running sliceA
Abort a running slice, or unwedge a stale 'slicing' state (e.g. after an object outside the bed). Safe when idle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a mutating action (readOnlyHint=false, destructiveHint=false). The description adds useful behavioral context: it can unwedge stale 'slicing' states and is safe when idle, which goes beyond the simple annotation flags. 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?
Two concise sentences cover the main action, an edge case, and a safety note. Every phrase adds value with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless action with no output schema, the description is complete: it states what it does, when it applies (including stale state), and its safety profile. No further 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?
The tool takes no parameters, so the schema coverage is 100% trivially. The description doesn't need to add parameter details; the baseline for zero-parameter tools is 4, and the description adequately explains the action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 identifies the resource ('a running slice'), and also explains the secondary purpose ('unwedge a stale slicing state'). It clearly distinguishes from siblings like slice and get_slice_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (aborting a running slice, resolving stale state) and includes a safety note ('Safe when idle'). It doesn't explicitly name alternatives or say when not to use it, but the usage is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_placementCheck object placementARead-only
Estimate whether every object (plus its skirt/brim ring) fits inside the printable area. Returns per-object fit, expanded first-layer bbox, per-edge clearance (mm), and overflow.
APPROXIMATE: uses the object footprint from size+offset, not the sliced toolpath (skirt arcs, half-line-width, travel/wipe excluded); single-instance objects only. At ~mm margins the true verdict needs get_slice_warnings - this is a fast first-pass.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that it uses object footprint rather than sliced toolpath, excludes skirt arcs/travel/wipe, and is approximate. This is rich behavioral context that helps manage expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by return info and limitations. It is succinct, well-organized, and every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully explains return values (per-object fit, bbox, clearance, overflow) and limitations. It is complete for an agent to decide when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters; it adds no param-specific semantics, but none 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 description clearly states the tool estimates whether objects fit in the printable area, including skirt/brim. It distinguishes itself from siblings like get_slice_warnings by emphasizing it is an approximate first-pass estimate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prefer this (fast first-pass) and when to use the alternative (get_slice_warnings for tight margins). Also notes the limitation 'single-instance objects only', helping an agent decide 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_profile_physicsSanity-check profile physicsARead-only
Deterministic pre-save gate: fetches the live config, overlays optional
proposed changes, and runs flow/temperature/geometry/cooling math.
RUN THIS BEFORE save_preset. verdict=blocked means DO NOT SAVE.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds the behavior of fetching live config, overlaying proposed changes, running math, and the significance of the blocked verdict. This is valuable, non-contradictory context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, followed by a clear action directive. 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 pre-save check tool with one optional parameter and no output schema, the description covers purpose, key behavior, the critical blocked verdict, and its place in the workflow via the save_preset reference. Complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter `changes`. The description clarifies it as an 'optional proposed changes' object, giving it meaningful semantics. However, it does not detail the expected structure, though the open-object schema makes this less critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships 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 'Deterministic pre-save gate' that fetches live config, overlays optional changes, and runs flow/temperature/geometry/cooling math. It distinguishes itself from save_preset by explicitly instructing to run before saving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'RUN THIS BEFORE save_preset' and warns 'verdict=blocked means DO NOT SAVE,' providing clear when-to-use guidance and a critical exclusion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_settingsCompare settingsARead-only
For each value of key, slice and collect stats/warnings; restore the original when done.
Non-destructive: the original value of key is put back even on error.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| extra | No | ||
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark the tool as readOnlyHint=true, and the description adds an explicit guarantee that the original value is restored even on error. This provides useful behavioral context beyond the annotation, though it does not detail the return format of stats/warnings.
Agents need to know what a tool does to the world before calling 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 primary action and then a safety note. Every word earns its place; there is no redundant or 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?
The description covers the core behavior and non-destructive guarantee, but omits what the collected stats/warnings look like and the role of 'extra'. Without an output schema, the agent lacks clarity on return values, making the description adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'values' are iteratively assigned to 'key', giving meaning to these params. However, the 'extra' parameter is completely unexplained, and the expected format of 'values' is not specified, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool iterates over values for a key, slices, collects stats/warnings, and restores the original. This specific verb+resource structure distinguishes it from sibling tools like get_slice_status or get_slice_warnings, which focus on single aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clearly implied: use this tool to compare how different values of a setting affect the slicing outcome. It does not explicitly name alternatives or exclusions, but the action of iterating over values makes its purpose distinct from siblings like slice_and_wait or get_slice_warnings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_slicesCompare slice variantsARead-only
Slice the current plate under several named variants and compare the cost of each.
Each variant is {"name": str, "changes": {setting: value}}; changes={} means the current config as-is (a natural baseline row). Applies each variant over the ORIGINAL config (resetting between variants, so they don't stack), slices it, then restores your config exactly as it was - nothing is left changed (slice validity is left false, as after any un-resliced edit).
Returns a ready-to-relay headline and table_markdown, plus structured variants.
All deltas and percentages are ALREADY computed and rounded against baseline
(defaults to the changes={} variant, else the first) - relay them as given rather than
recomputing. recommended names one pick; recommended_is_dominant says whether it
beats every variant on every axis (time, filament, warnings) or is only the fastest
warning-free option amid a genuine trade-off (tradeoff then names the frontier).
Each variant is a full slice (minutes); capped at 8. Set detail=True only when a per-feature (wall/infill/support) split is wanted - it grows the response ~N x. With more than ~5 variants, lead with the recommendation and the extremes, not all rows.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | ||
| timeout | No | ||
| baseline | No | ||
| variants | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description extensively discloses behavioral details beyond the readOnlyHint annotation: variants are applied over the original config and reset between runs, the config is restored exactly, and slice validity is left false. It also explains that all deltas and percentages are precomputed and should be relayed as-is, which is valuable context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries relevant information: purpose, variant format, reset/restore behavior, output contents, recommendation logic, and performance caveats. It is well-structured and free of filler, earning a top score for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, this description covers inputs, outputs, side effects, and performance guidance. It explains the returned headline/table_markdown/variants structure and the meaning of recommended and recommended_is_dominant, making the tool fully self-contained 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?
With 0% schema coverage, the description compensates well by defining the variants structure, the meaning of changes={}, baseline default behavior, and the effect of detail=True. The timeout parameter is not mentioned, but it is a conventional integer with a default; the other three parameters receive clear semantic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Slice the current plate under several named variants and compare the cost of each.' This clearly states the tool's function and differentiates it from siblings like slice, compare_settings, or slice_and_wait.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context for when to use the tool (comparing costs across variants) and gives explicit guidance on when to set detail=True and how to present results with many variants. However, it does not explicitly name alternative tools or state when not to use it, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultConsult slicing knowledgeARead-only
Retrieve curated slicing knowledge + saved context notes for a topic, symptom, or intent. ALWAYS call before deriving or changing settings for a user goal. Composes principles per situation - never returns preset bundles. Falls back to find_config_keys/web search if empty.
When recommending, present 2-3 concrete options quantified with predicted print time and filament mass from real slice results (slice + status tools) - never adjectives alone.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the agent knows it is a safe read operation. The description adds valuable behavioral context: it composes principles per situation, never returns preset bundles, and falls back to other tools if empty. This goes beyond the annotation without contradicting 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 efficient and front-loaded. The first sentence states the core purpose, followed by a critical usage rule, a fallback note, and a practical recommendation guideline. Every sentence adds value with no redundancy or 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 tool's single parameter, read-only annotation, and no output schema, the description covers the essential aspects: what it retrieves, when to call it, its fallback behavior, and how to use its output. However, it does not elaborate on the exact content of 'slicing knowledge' or the structure of the returned principles, which could be 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?
The schema has one required 'query' parameter with no description (0% coverage). The description partially compensates by clarifying the query can be a topic, symptom, or intent, but it does not specify expected format (e.g., natural language vs. keywords) or provide examples, leaving room for 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 retrieves curated slicing knowledge and saved context notes for a topic, symptom, or intent. It uses a specific verb (retrieve) and resource (slicing knowledge + context notes), and differentiates from siblings by noting it composes principles per situation rather than returning preset bundles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 'ALWAYS call before deriving or changing settings for a user goal,' which is a clear when-to-use directive. It also mentions fallback to find_config_keys/web search, providing an alternative path, and gives presentation guidance for recommendations, all of which help the agent decide 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.
delete_objectDelete object from plateADestructive
Remove one object from the current plate by id. This is permanent within the session and cannot be undone through the API; the other objects keep their ids.
Call list_objects first to get the id. Deleting leaves the last slice invalid, so re-slice afterwards. To drop just one copy made with duplicate_object, pass that copy's id.
| Name | Required | Description | Default |
|---|---|---|---|
| object_id | Yes | Integer id of the object to remove, taken from the 'id' field of list_objects (not the array index or the file name). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint/referenceReadOnly annotations, the description discloses that deletion is permanent within the session, cannot be undone through the API, preserves other object ids, and invalidates the last slice. This is exactly the 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 description is compact and front-loaded: the core action is first, followed by permanence, prerequisite steps, side effects, and a specific edge case. Every sentence earns its place 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 a single-parameter tool with no output schema, the description fully covers prerequisites, irreversibility, side effects, and object identity nuances. An agent has everything needed to invoke delete_object correctly and predict the consequences.
Complex tools with many parameters or behaviors need more documentation. Simple 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 already covers object_id well by specifying it comes from list_objects and not from array index or file name. The description adds extra semantic nuance by explaining how it applies to duplicate_object copies, which goes beyond the schema and supports correct selection of the 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 description opens with a specific verb and resource: 'Remove one object from the current plate by id.' It clearly distinguishes this from related object tools like duplicate_object and transform_object, and the object-vs-preset distinction is clear given sibling delete_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?
The description gives explicit actionable guidance: call list_objects first to get the id, re-slice afterwards because the last slice becomes invalid, and pass the copy's id when removing a duplicated object. This tells the agent exactly when and how to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_presetDelete presetADestructive
Delete a USER preset (system presets and the currently-selected one are refused). type = print|filament|printer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds valuable behavioral constraints: system presets and the currently-selected one are refused. This goes beyond the annotations by clarifying edge cases where deletion will not occur. It could still describe the exact error behavior or confirm permanence, but the provided context is meaningful.
Agents need to know what a tool does to the world before calling 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: a clear action statement and a compact type enumeration. Every word earns its place, and the most important information (delete, user preset, refusals) is front-loaded. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation with annotations covering the safety profile, the description is reasonably complete. It states what it deletes, the constraints, and the type values. It does not describe return values, but no output schema exists, and the operation is straightforward. Slightly more detail about consequences (e.g., permanent deletion) would improve completeness, but the current description 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?
With 0% schema description coverage, the description compensates partially by enumerating allowed values for 'type' (print|filament|printer). The 'name' parameter is not explicitly described, though it is implied as the preset name from the tool's purpose. The added type enumeration provides some meaning beyond the bare schema, but the lack of any name description keeps this from being higher.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and 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 the resource 'USER preset', and explicitly distinguishes from sibling tools by defining the scope (user presets only) and constraints (system and currently-selected presets are refused). It also provides the type enumeration, making the tool's 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 gives clear context for when to use the tool: when deleting a user preset of a specific type. It implicitly differentiates from siblings like edit_preset or rename_preset by focusing on deletion, and the refusal of system/selected presets acts as a usage precondition. However, it does not explicitly mention alternatives or when not to use it beyond the stated refusals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_plateDescribe plate placement from G-codeARead-only
Machine-readable plate facts from the last slice's G-code, per object, so you can answer orientation and placement questions instead of guessing from Euler angles or a picture: how the part stands (flat / tilted / on an edge or corner, from first-layer contact versus its widest layer), the first-layer footprint as islands, where overhang extrusions concentrate by 10 mm height band, where support stands and where its interface touches the part, and which side the outer-wall seams sit on (checked against seam_position). Each object gets a server-written summary sentence; relay it rather than recomputing. Read-only. Needs a valid slice; returns {"error": "not_sliced"} otherwise. Copies of one object are aggregated (Orca labels every copy 0); footprint islands still show per-copy contact. The parsed result is cached per slice (the G-code itself is still downloaded each call to detect a new slice). All bboxes are [x0, y0, x1, y1] in plate millimetres.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses valuable behavioral details: the result is cached per slice, the G-code is still downloaded each call to detect a new slice, copies of one object are aggregated, and the return format includes an error shape for missing slices. This gives an agent a realistic model of side effects and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause adds operational value: purpose, output contents, reliability guidance, error behavior, aggregation semantics, caching, and bbox coordinate formatting. It is front-loaded with the core purpose and uses structured semicolon-separated details 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?
Given no output schema, the description compensates thoroughly by listing what the result contains, including a summary sentence, error response, per-copy footprint behavior, and bbox format. An agent has enough information to invoke the tool and interpret its output correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema fully covers the input surface. With no params to document, the description's additional explanation of output semantics and coordinate convention is a reasonable baseline-plus contribution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement: it provides machine-readable plate facts from the last slice's G-code, per object, for answering orientation and placement questions. It enumerates the specific facts it returns (footprint, overhang bands, supports, seams), which clearly distinguishes it from sibling tools like render_plate or diagnose_plate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this tool is for answering orientation and placement questions 'instead of guessing from Euler angles or a picture,' and says it requires a valid slice with a specific error otherwise. It does not explicitly name alternative sibling tools, but the usage 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.
describe_settingDescribe a settingARead-only
Authoritative definition of one OrcaSlicer setting: label, tooltip, type, unit, valid range, enum values, and default. Read-only and offline, so it works even when OrcaSlicer is not running.
Use it to learn a setting's exact type and allowed values before writing it with set_config or edit_preset. To find candidate keys by keyword first, use search_settings.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Exact OrcaSlicer config key, e.g. 'layer_height' or 'sparse_infill_density'. Find keys with search_settings or find_config_keys. Unknown keys return an error. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the readOnlyHint annotation by stating it is 'Read-only and offline, so it works even when OrcaSlicer is not running.' This tells the agent about availability and side-effect profile. It could also mention error behavior, but the schema already covers unknown keys returning an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs: the first defines the tool's output and offline/read-only nature; the second gives usage context and alternatives. Every sentence earns its place, 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 single-parameter lookup tool with no output schema, the description fully compensates by listing the returned fields. It also covers offline behavior, usage timing, and how to find keys. Nothing essential for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'key' parameter is well-documented with examples and guidance to use search_settings or find_config_keys. The description itself does not add much parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Authoritative definition of one OrcaSlicer setting' and enumerates exactly what is returned (label, tooltip, type, unit, valid range, enum values, default). This clearly specifies the verb and resource, and distinguishes it from sibling search tools by noting that search_settings is for finding candidate keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the intended use: 'Use it to learn a setting's exact type and allowed values before writing it with set_config or edit_preset.' It also routes to an alternative: 'To find candidate keys by keyword first, use search_settings.' This gives clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_plateDiagnose plate issuesARead-only
One-call plate diagnosis: app/slice status, objects on the plate, bed + active skirt/brim/clearance settings, and the last slice's warnings - so you don't have to chain status->objects->config. Start here for 'why won't this slice / fit'.
Slice warnings are only as complete as the fork exposes today (see get_slice_warnings). For a 'does it fit the bed' estimate, pair with check_placement.
| 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, and description adds meaningful context: that it aggregates multiple data sources, that slice warnings are only as complete as the fork exposes, and that it's a starting point. This goes beyond the annotation by explaining the tool's synthetic nature and caveats.
Agents need to know what a tool does to the 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 main purpose, and the second sentence adds important caveats and pairing advice. No wasted words or repetition of schema/annotation info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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 the primary source of semantic info. It lists the key categories (app/slice status, objects, bed settings, warnings), notes the limitations of warnings, and points to complementary tools. This is complete enough for an agent to understand the tool's behavior and decide when to invoke 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 has zero parameters, so baseline is 4. The description does not need to explain parameters; instead it compensates by explaining the tool's scope and what it checks, enriching the agent's understanding despite the absence of 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 uses a specific verb ('diagnose') and resource ('plate'), and enumerates exactly what it covers (status, objects, bed settings, warnings). It distinguishes itself from sibling tools by positioning as a one-call aggregation that avoids chaining status->objects->config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use ('Start here for why won't this slice / fit'), and names alternatives/partners: 'see get_slice_warnings' for completeness and 'pair with check_placement' for bed fit. This is clear guidance on usage vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_objectDuplicate objectA
Duplicate an object on the plate by id (adds a copy, offset from the original).
| Name | Required | Description | Default |
|---|---|---|---|
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive behavior. The description adds value by specifying the copy is offset from the original, and that it operates by object id. This gives concrete behavioral context beyond the annotation 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 description is a single sentence that front-loads the verb and object, includes the key detail (offset copy), and contains no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and non-destructive annotations, the description fully captures the action and outcome. It explains what happens (adds a copy) and how the copy is positioned (offset), 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?
Schema coverage is 0%, so the description must compensate for the sole parameter. The phrase 'by id' clearly indicates that object_id is the identifier of the object to duplicate, adding semantic meaning beyond the raw 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?
The description uses a specific verb ('Duplicate') and resource ('an object on the plate by id'), clearly indicating the operation. It also adds 'adds a copy, offset from the original', which distinguishes it from sibling tools like delete_object or transform_object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: it duplicates an existing object, implying when to use it (when a copy is needed). It does not explicitly name alternative tools or state exclusions, but the context is unambiguous enough for an agent to select this over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_presetEdit preset (overwrites stored settings)ADestructive
Edit a named preset's settings and persist them: selects it, applies the changes atomically, saves under the same name. Runs the check_profile_physics gate first (F15) and refuses with error=physics_blocked if the changes would INTRODUCE a failing physics check (pre-existing failures do not block unrelated edits).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | ||
| changes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations. It discloses that changes are applied atomically, that a physics gate (check_profile_physics) runs first, and that it returns error=physics_blocked for changes that would introduce new failures. It also clarifies that pre-existing failures do not block unrelated edits. This adds significant behavioral context. The destructiveHint is consistent with 'overwrites stored settings'.
Agents need to know what a tool does to the world before calling 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 information-dense. It front-loads the core purpose, then adds essential details (atomicity, physics gate, error behavior) without redundancy. Every sentence adds value, and the structure is well-organized: purpose, execution steps, and validation/error 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?
For a mutation tool with no output schema, the description covers the key aspects: what it does, the atomic apply, the physics gate, and error handling. It does not explain the return value, but that may be less critical for a write operation. The main gap is the ambiguous 'type' parameter, which prevents full completeness. Overall, it is quite thorough 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?
Schema description coverage is 0%, so the description must compensate. It clarifies 'name' (the preset's name) and 'changes' (the settings to edit), but 'type' is left entirely unexplained. The description does not indicate what values 'type' should take, how it relates to 'name', or the structure of the 'changes' object beyond being a nested object. This is a significant gap for an agent to invoke the tool 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 clearly states the tool's function: 'Edit a named preset's settings and persist them.' It specifies the action (edit), the resource (named preset), and the outcome (persist). The title 'overwrites stored settings' and the detail about saving under the same name further distinguish it from sibling tools like save_preset or delete_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?
The description provides clear context for when to use the tool: to modify and persist an existing named preset. It does not explicitly list alternatives or exclusions, but the phrase 'selects it ... saves under the same name' implies editing existing presets rather than creating new ones. Sibling tool names (save_preset, delete_preset, rename_preset) help contextualize, though the description does not directly reference them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_config_keysFind config keysARead-only
Find config keys containing substring (helps discover among the ~600 keys).
| Name | Required | Description | Default |
|---|---|---|---|
| substring | 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. The description adds that it matches keys containing the substring, but does not disclose case sensitivity, return format, or pagination. This is acceptable given the annotation coverage, 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 one sentence, front-loaded with the action, and includes only essential 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?
The tool is simple: one required parameter, read-only, no output schema. The description explains purpose and parameter usage adequately for a search/discovery tool. It does not describe return values, but that is implied for such a tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify the parameter. It explains that 'substring' is what config keys must contain, giving clear meaning. It does not add syntax details like case sensitivity, but for a single string parameter this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds config keys by substring, using specific verb and resource. The parenthetical about ~600 keys adds helpful context and differentiates it from direct get/set config tools as a discovery aid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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: use this to discover config keys among the ~600 available. It does not explicitly contrast with sibling tools like search_settings, so exclusions are absent, but the intended use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configGet config valuesARead-only
Read merged config values (optionally filtered to keys).
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=true, the description adds valuable behavioral context by mentioning 'merged config values' and the optional filtering to 'keys'. It does not contradict the annotations and enriches the understanding of 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 a single clear sentence, front-loaded with the verb 'Read', and contains no unnecessary words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description covers the core functionality and parameter usage sufficiently. The read-only nature is already annotated, and 'merged config values' conveys the expected 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?
The schema has 0% description coverage for the 'keys' parameter, but the description explicitly states it filters config values by 'keys', giving essential semantic meaning. This compensates well for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read merged config values' uses a specific verb and resource, clearly indicating a read operation on the merged configuration. It also notes the optional filtering by keys, which distinguishes it from related config tools like get_preset_config or set_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving the effective merged configuration but provides no explicit guidance on when to use this tool versus alternatives like get_preset_config or find_config_keys. There are no exclusion conditions or named sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gcodeDownload sliced gcodeARead-only
Retrieve the last successful slice's G-code as text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint: true annotation already indicates a safe read operation. The description adds useful context by specifying that it retrieves text and refers to the 'last successful slice', but it does not disclose behavior such as what happens if no slice has been performed or whether it triggers any side effects. This is additional but not extensive 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 a single, concise sentence that front-loads the action and outcome. Every word contributes to meaning, with no redundancy or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is nearly complete: it explains what is retrieved and in what form. However, it does not specify the behavior when no successful slice exists, which could be a relevant edge case. The readOnlyHint annotation covers the safety profile, so this 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?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter meanings since there are none. It correctly focuses on the return value instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 'Retrieve' with a clear resource ('G-code') and qualifier ('last successful slice', 'as text'). It clearly distinguishes from sibling tools like 'slice' (which generates) and 'get_slice_status' (which checks progress).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and 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 'last successful slice' implies this tool should be used after a successful slicing operation, but it does not explicitly state when to use it instead of alternatives or mention exclusions. The usage context is implied rather than articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet background job statusARead-only
Whether the plate's background job worker is idle or still running. Read-only.
arrange_plate and auto_orient start async jobs; poll this until it reports idle before you read object positions or slice, so you act on the settled layout rather than a mid-move state.
| 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, and the description reinforces this with 'Read-only.' It adds genuinely useful behavior beyond the annotation: the idle/running semantics, the polling requirement, and the reason (settled layout vs mid-move state). No contradicting claims.
Agents need to know what a tool does to the 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, purposeful sentences. The status meaning is front-loaded, followed by a concrete usage warning; no filler or repeated schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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, read-only status poll with no output schema, the description covers what the tool reports, how to use it, and why the timing matters. An agent has enough to call it correctly without further 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?
The tool has zero parameters and 100% schema coverage by default, so the description does not need to explain parameters. The baseline 4 applies because there is nothing to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('get') and resource ('plate's background job worker'), and clarifies it reports whether the worker is 'idle or still running'. This distinguishes it from related status/slice tools by focusing on background job state and its async relationship to arrange_plate and auto_orient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 poll until idle before reading object positions or slicing, explaining that arrange_plate and auto_orient launch async jobs. It tells the agent when to use the tool and what to avoid (acting on a mid-move state), making workflow selection unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_preset_configGet preset configARead-only
Read the full settings of a named preset without selecting it. type = print|filament|printer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | 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 known. The description adds the side-effect-free behavior ('without selecting it') and the type enumeration, which is useful context. It doesn't disclose return format, error conditions, or prerequisites, but with annotations the bar is lower.
Agents need to know what a tool does to the world before calling 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, with the main verb and object front-loaded. The second sentence adds the essential type clarification without any fluff. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 required params, no output schema) and the readOnlyHint annotation, the description covers the core purpose, side-effect behavior, and type restrictions. It could specify the return format in more detail, but 'full settings' is reasonably informative for a simple 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 0%, so the description must compensate. It clarifies that 'type' takes print|filament|printer values and implies 'name' is the preset name, which provides some meaning beyond the bare schema. However, it doesn't elaborate on validation, case sensitivity, or how to discover valid names, leaving 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 ('Read') and resource ('full settings of a named preset') while adding a key qualifier ('without selecting it') that distinguishes it from sibling tools like select_preset and get_config. It also clarifies the allowed types, 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 clearly establishes when to use this tool: to inspect a preset's settings without applying it. The phrase 'without selecting it' implies this is a read-only inspection and implies that other tools handle selection, though it doesn't explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slice_breakdownGet slice time/flow breakdownARead-only
Per-feature breakdown of the last slice + a stateless predicted-vs-observed flow check.
Returns per-role time/filament + speed/flow ranges, global time-weighted metric distributions, per-layer aggregates, and a prediction_check flagging where the profile's speed was silently throttled at the flow ceiling ('clamped'). Answers 'which feature is the time hog' directly instead of by trial slicing.
Degrades to {"available": false, "reason": ...} on fork builds that don't emit the breakdown, or when there is no valid slice.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses significant behavioral details: the stateless predicted-vs-observed check, the 'prediction_check' flag for 'clamped' speed, and the degraded response format on incompatible builds or missing slices. This adds substantial transparency about return values and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the primary purpose, then details the return data fields, and ends with degradation behavior. Each sentence adds value, with no redundancy or 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 no output schema, the description fully enumerates the return types (per-role time/filament, speed/flow ranges, global distributions, per-layer aggregates, prediction_check) and explicitly mentions degradation scenarios. For a zero-parameter tool, this is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%, so there is nothing to add. The baseline for 0 params is 4, and the description compensates by clearly describing the output semantics, which is the relevant aspect 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 explicitly states the tool's function: 'Per-feature breakdown of the last slice + a stateless predicted-vs-observed flow check.' It answers 'which feature is the time hog' directly, clearly distinguishing this from sibling tools like get_slice_status or get_slice_warnings by focusing on per-feature time/flow breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit when-to-use guidance: 'Answers which feature is the time hog directly instead of trial slicing.' It also states when it cannot be used: 'Degrades to {"available": false, "reason": ...} on fork builds that don't emit the breakdown, or when there is no valid slice.' This gives clear context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slice_statusGet slice statusARead-only
State of the current or most recent slice: state (slicing, done, error, or idle), stats (print time and filament use when done), and any warnings or errors. Read-only.
Poll this after slice to follow progress and read the result; 'idle' means no slice has run or it was cancelled. For only the pass/fail warnings use get_slice_warnings; for a per-feature time and filament breakdown use get_slice_breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks this as a safe read, and the description adds useful behavioral context: it is a polling endpoint, 'idle' represents no/cancelled slice, and warning/error details are included. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the most important state semantics, and every sentence earns its place. It explains behavior, caveats, and alternatives 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 no-parameter, read-only status tool without an output schema, the description is complete: it covers states, stats, warnings, polling guidance, and idle meaning. The sibling references prevent misuse.
Complex tools with many parameters or behaviors need more documentation. Simple 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 is no schema gap to compensate for. The description goes beyond the schema by explaining what the returned state field contains, which is the closest relevant semantic 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?
States the exact resource (slice status), the kind of information returned (state, stats, warnings/errors), and the possible state values. It also distinguishes itself from sibling tools by naming what get_slice_warnings and get_slice_breakdown cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 poll after slicing to track progress and read results, defines what 'idle' means, and points to siblings for narrower or different data. This gives an agent clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slice_warningsGet slice warningsARead-only
Just the warnings/errors from the last (or current) slice, plus validity - the fast 'did anything go wrong' check and the way to confirm a fix cleared.
NOTE: only as complete as the API exposes. On the current fork build this may report valid with an empty warnings list even when the GUI shows a plate-boundary toast - the fork must populate the plater warning list (tracked as the fork batch). Once it does, this reports the real warnings with no change here.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses a significant API limitation: the current fork build may report valid with an empty warnings list even when the GUI shows a plate-boundary toast, explaining the fork must populate the plater warning list. This is rich behavioral transparency about potential false negatives.
Agents need to know what a tool does to the world 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 a clear, front-loaded purpose statement. The NOTE adds a necessary caveat but is slightly verbose/run-on; could be tightened while preserving the important behavioral limitation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence 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, read-only tool with no output schema, the description covers what it returns (warnings/errors plus validity), why to use it, and a critical edge-case limitation. The caveat about fork behavior makes it a complete, self-contained reference.
Complex tools with many parameters or behaviors need more documentation. Simple 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; the description appropriately avoids adding parameter details. Baseline 4 for zero-param tools applies, since there is nothing to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and 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 returns warnings/errors and validity from the last/current slice, positioning it as the fast 'did anything go wrong' check. This distinguishes it from sibling status/breakdown tools by focusing exclusively on warnings/errors and the fix-cleared confirmation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly frames usage as the fast health check and the way to confirm a fix cleared, giving clear context for when to call. It lacks explicit references to alternatives or when-not-to-use, but the context strongly implies selecting this over heavier status/breakdown endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusGet OrcaSlicer statusARead-only
Snapshot of the current OrcaSlicer session: app and project info, the active print/filament/printer presets with which of their keys are modified (dirty), whether the last slice is still valid, and whether a slice is running. Read-only.
Call it first to orient before slicing or editing, to see which settings drift from their preset, or to check slice_result_valid before trusting earlier stats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already declares the read-only nature; the description reinforces it and adds meaningful behavioral context: it is a point-in-time snapshot that reports dirty preset keys and whether a slice is running. No contradiction 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?
Two sentences with no filler. The first sentence front-loads the core snapshot contents; the second provides usage guidance. Every clause adds 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 zero-argument read-only status tool without an output schema, the description covers the return categories and the call context sufficiently. It could theoretically enumerate exact return keys, but the provided categories give an agent enough to decide when 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?
The tool takes zero parameters and the schema is empty, so the baseline is 4. The description contributes to output semantics by referencing slice_result_valid but does not need to explain 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 uses a specific noun-plus-scope ('Snapshot of the current OrcaSlicer session') and enumerates the exact contents (app/project info, presets, dirty keys, slice validity, running slice). This clearly differentiates it from siblings like get_slice_status, get_config, or get_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 explicitly directs the agent to 'Call it first' before slicing/editing and gives three concrete triggers: orienting, discovering drifted settings, and checking slice_result_valid. It stops short of naming alternatives or when-not-to-use, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_objectsList plate objectsARead-only
List objects on the current plate: id (stable), name, size_mm, and transform (offset/rotation/scale).
| 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, covering safety. The description adds meaningful behavioral detail: it notes that the id is 'stable', which is valuable for agents that need to persist references across calls. It also explicitly discloses the data fields returned, which is especially useful because no output schema is provided. However, it doesn't discuss ordering or pagination, though that may be unnecessary for a simple 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?
The description is a single, front-loaded sentence that directly states the action and the data returned. Every word earns its place; there is no fluff or repetition of the title. The colon and the field list are efficient 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 read-only list tool with no parameters and no output schema, the description is complete: it identifies the operation scope (current plate) and the exact fields returned. The readOnlyHint annotation covers the safety profile, and the field list suffices without a formal output schema. No additional context is needed for an agent to use 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?
The input schema has zero parameters, so the baseline is 4. The description provides all necessary semantic context by indicating that it operates on the 'current plate', which is the singular implicit context. No parameter clarification 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 starts with a clear verb+resource: 'List objects on the current plate.' It enumerates the returned fields (id, name, size_mm, transform), making the purpose unambiguous. It is distinct from sibling tools like list_presets, which list presets rather than 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 clearly implies usage: call when you need to see the objects currently on the plate and their properties. It does not explicitly name alternatives or exclusions, but the scope is well-defined. Sibling tools like set_object_config or transform_object suggest mutations; list_objects is the read-only counterpart, which is evident from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsList presetsARead-only
List print/filament/printer presets with system/selected/visible flags.
F12: by default returns only USER presets plus whatever is currently SELECTED -
the built-in system presets are ~400 entries of noise. Pass include_system=True
for the full list, and/or type='print'|'filament'|'printer' to restrict to one
category. hidden_system reports how many system presets were filtered out.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| include_system | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals key behavioral traits: default filtering to user presets plus the selected preset, the 'noise' of ~400 system presets, and the hidden_system counter for filtered entries. This gives the agent significant insight into expected behavior and 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 description is compact and well-structured: first sentence states the purpose, second explains default behavior and parameter usage, third describes the hidden_system output. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two optional parameters, a readOnlyHint annotation, and no output schema, the description covers the essential contextual information: default filtering, parameter effects, and a key return field (hidden_system). It is sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameter descriptions (0% coverage), but the description fully explains both parameters: include_system=True for the full list, and type='print'|'filament'|'printer' to restrict to a category. It also clarifies the default behavior associated with leaving parameters unset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and 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 print/filament/printer presets with flags for system/selected/visible. This specific verb+resource+scope differentiates it from sibling preset tools like save_preset, delete_preset, and select_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?
The description provides clear context on when to use the tool (listing presets) and how to adjust behavior via include_system and type parameters. However, it does not explicitly name alternative tools for exclusions or when-not-to-use scenarios, so it misses the 'alternatives' criterion for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_modelLoad a model fileA
Load a model file (path on the OrcaSlicer host) onto the current plate. Accepts .stl/.obj/.3mf, plus .step/.stp on fork v2.3.2-mcp.3+. Large STEP files can take a minute to tessellate; the call waits.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the minimal annotations by disclosing accepted file formats and version-specific STEP support. It also notes that large STEP files can take a minute to tessellate and that the call waits, which gives the agent a realistic expectation of blocking behavior. This is valuable context the annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, packing the core action, supported file types, and a performance caveat into two sentences. Every clause adds value, and the main action is front-loaded, making it easy for an agent to quickly understand what the tool 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 single-parameter tool with no output schema, the description is largely sufficient. It covers the operation, accepted formats, and potential blocking for large STEP files. However, it does not explicitly mention what the tool returns after loading or whether it replaces or adds to the current plate, which leaves a small but non-critical 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 schema only defines a 'path' string with no description, so the description adds crucial meaning by clarifying the path is on the OrcaSlicer host and listing how the available formats, suggesting what file types are acceptable. While it could be more explicit about path format (absolute vs. relative), it compensates well for zero 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 the tool loads a model file from a host path onto the current plate, using a specific verb and resource. It distinguishes itself from sibling tools like delete_object or transform_object by focusing on the import action. The added list of supported formats further sharpens its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to import supported model files from the host into the current plate. It also includes the useful caveat that large STEP files may cause a wait. Although it doesn't explicitly mention alternatives or when not to use it, the purpose is unambiguous enough for a single-purpose load tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_printsRecall past prints of this modelARead-only
How did past prints of THIS model actually turn out? Matches the current plate by geometry (or by model_name if given / the slicer is offline), returning each past print's result (success/cancelled/error), your recorded verdict (e.g. 'warped'), and the settings it was sliced with. Call this BEFORE slicing and tell the user anything relevant (a past warp, a failed layer height). Read-only. Returns available=false and nothing else when no outcome store exists. If neither geometry nor name matches, it returns the most recent prints of ANY model with matched_by='recent'; never attribute those to the current model.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| model_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses substantial behavioral details: geometry-first matching, fallback to model_name when the slicer is offline, returning available=false when no outcome store exists, and the dangerous fallback of returning recent prints of ANY model with matched_by='recent' while warning never to attribute them to the current model. This is exactly the kind of edge-case transparency that helps an agent avoid 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?
The description is longer than average but every sentence adds meaningful information about matching, return values, timing, and fallback behavior. The 'Read-only.' sentence is redundant with the annotation, but the overall structure is dense and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with two optional parameters and no output schema, the description covers the main call context, return content, and important edge cases. The only notable omission is the effect of the limit parameter on the number of returned prints, and there is no explicit mention of the output structure beyond listing fields.
Complex tools with many parameters or behaviors need more documentation. 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 compensates for model_name by explaining it is used when the slicer is offline and for matching. However, the 'limit' parameter is not explained at all, leaving its behavior to inference from the default value. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and 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 recalls past prints of the current model, matching by geometry or model_name and returning results, verdicts, and settings. It is specific about the resource and action, though it does not explicitly name sibling tools like 'remember' to differentiate 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 description explicitly says 'Call this BEFORE slicing', giving a clear temporal context for when to use the tool. It does not, however, mention alternative tools or when not to use it, so it stops short of full exclusions and alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberSave a noteA
Persist a context fact for future sessions. scope: 'machine:/', 'user', or 'project:'. Local plain files; user-readable and deletable.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| scope | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing storage details: 'local plain files' and 'user-readable and deletable'. This adds meaningful context about the tool's side effects and accessibility, which annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences with no filler. It front-loads the core purpose and then efficiently packs scope formats and storage behavior. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description is fully sufficient. It covers purpose, parameter semantics, and behavioral details, leaving no critical gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 0%, the description compensates well for the 'scope' parameter by enumerating valid formats ('machine:<printer>/<filament>', 'user', 'project:<name>'). The 'note' parameter is self-explanatory from its name. This adds necessary semantic meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Persist a context fact') and resource ('for future sessions'). It distinguishes itself from all sibling tools, which focus on slicing/printing operations. The scope examples further clarify its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the scope examples (machine, user, project), indicating when this tool is relevant. However, it does not explicitly state alternatives or when not to use it, though no sibling offers similar functionality. This 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.
rename_presetRename presetA
Rename a user preset by copying it to new_name, selecting the copy, and deleting the original. Only user presets can be renamed; system presets are read-only.
Because it selects the renamed preset, this leaves it active and discards unsaved config overrides, the same as select_preset, and leaves the last slice invalid, so re-slice afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Preset group: 'print', 'filament', or 'printer'. | |
| new_name | Yes | New name for the preset. Should not collide with an existing preset of the same type. | |
| old_name | Yes | Current name of the user preset to rename, as shown by list_presets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only indicate readOnlyHint=false and destructiveHint=false, but the description goes much further: it reveals the copy-then-delete sequence, that the renamed preset becomes active, that unsaved config overrides are discarded, and that the slice becomes invalid requiring re-slice. This is exactly the kind of behavioral context that annotations cannot 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?
Two purposeful paragraphs: the first gives the core mechanism and limitation, the second details side effects. Every sentence adds unique, actionable information 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 rich schema (100% coverage) and annotations, the description covers the full behavioral picture, including constraints and post-conditions. There is no output schema, so return-value details are not expected. An agent has everything needed to decide when and how to invoke this tool and what to expect afterward.
Complex tools with many parameters or behaviors need more documentation. 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 already have descriptive text in the schema (100% coverage), so the description does not need to add parameter meaning. It does not, but the schema alone is sufficient for understanding old_name, new_name, and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific operation: renaming a user preset via copy, select, and delete. This distinguishes it from related symbols like delete_preset, save_preset, and select_preset by naming the exact mechanism used.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when the tool is applicable (user presets only) and when it is not (system presets are read-only). It also compares behavior to select_preset, giving context for expected side effects, though it stops short of naming alternative tools or explicitly saying 'use X instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_plateRender plate imageARead-only
Render a PNG picture of the current plate so you can SEE it.
view="editor": the models on the bed BEFORE slicing - use to check orientation, plate contact, and first-layer footprint (an Euler triple is near-unreadable; this is the ground truth). view="preview": the sliced toolpaths colored by feature role AFTER a successful slice - support is visibly distinct, so use it to check where support actually went. angle: iso|top|front|left|right|rear|bottom. frame: "plate" zooms out to the whole bed (where the part sits, footprint), "object" zooms in on the model/toolpaths (detail). Defaults to "plate" for the editor view and "object" for the preview view; pass it explicitly when a side view of a small part would otherwise be a speck on a big bed.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | editor | |
| angle | No | iso | |
| frame | No | ||
| width | No | ||
| height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description adds value by explaining view semantics, default frame selection per view, and the visual nature of output. It does not mention potential failure cases (e.g., preview before slice) but discloses the key behavioral distinction between editor and preview. No contradiction with the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with line breaks and purposeful sections. Each sentence adds information: the opening defines the output, then view definitions, angle list, and frame details. There is no redundant wording, and the format aids scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five optional parameters, no output schema, and no enums, this description gives enough context for correct invocation: it explains the two main views, angle options, frame defaults, and when to override frame. The only gap is the width/height parameters, but these are generic and unlikely to cause misuse. Overall it is nearly 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?
With 0% schema description coverage, the description must compensate. It explains 'view' values (editor vs preview), 'angle' options, and 'frame' behavior and defaults. However, width and height parameters are left entirely undocumented; though self-explanatory, they receive no semantic explanation, so the coverage is not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement: 'Render a PNG picture of the current plate so you can SEE it.' It then distinguishes between editor and preview views, which directly separates it from sibling tools that manipulate models or slicing. The purpose is unambiguous and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete when-to-use guidance for each view: editor view for checking orientation/contact before slicing, preview view for checking support after slicing. It also explains when to pass the frame parameter explicitly (side view of a small part). However, it does not explicitly mention alternatives among sibling tools or state when not to use this tool, so it falls short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_gcodeSave G-code and record the sliceA
Save the last successful slice's G-code and record the slice (model, geometry, full settings snapshot) under that filename, so that when klipper-mcp later prints this exact file the real outcome joins back to these settings. Returns the saved path; hand it to klipper-mcp's start_print. Default filename: _.gcode. Never overwrites an existing file — a name collision gets a -2, -3, ... suffix. Writes into a gcode folder under PRINT_OUTCOMES_DIR if set, else under the shared print-outcomes folder (~/projects/_shared/print-outcomes) if it already exists, else under ~/.orcaslicer-mcp; the gcode folder itself is created if missing. If the shared outcome store is not present, or the store write fails, the file is still saved and outcome_recorded is False.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only show readOnlyHint=false and destructiveHint=false. The description adds substantial behavior: never overwrites existing files, applies -2/-3 suffixes on collision, writes into fallback directories based on environment and folder existence, creates the gcode folder if missing, and still saves the file when the outcome store fails, setting outcome_recorded to False. This far exceeds the 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 description is long but every sentence carries distinct, necessary information: purpose, return value, default naming, collision handling, directory fallback, and failure behavior. It is front-loaded with the main purpose and then structured logically, with no filler or redundant restating of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 very complete for a tool with no output schema: it covers return path, file-save fallback logic, and failure reporting. However, it doesn't mention what happens when there is no last successful slice (e.g., error behavior) and doesn't fully specify the success response shape beyond 'Returns the saved path'. These are minor gaps against an otherwise thorough 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?
The schema has one optional filename parameter with no description (0% coverage). The description compensates fully by explaining the default filename pattern (<object>_<timestamp>.gcode), the collision-suffix behavior, and that the filename is the saving name. This adds meaningful semantic detail beyond the schema's bare type/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 clearly states the tool saves the last successful slice's G-code and records the slice under a filename, with a specific purpose for later print-outcome tracking. This is a specific verb+resource ('save ... G-code and record the slice'), but it does not explicitly differentiate itself from sibling tools like get_gcode or slice, relying instead on unique context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear workflow context: use after a successful slice, then pass the returned path to klipper-mcp's start_print. It also explains naming, collision handling, and fallback directory behavior. It doesn't explicitly state when not to use it or name alternative tools, 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.
save_presetSave preset (overwrites stored settings)ADestructive
Save the currently edited settings as a named user preset (create or update, visible in the GUI immediately). type = print|filament|printer. detach=True saves it standalone instead of inheriting the current base preset.
Run check_profile_physics first; do not save when verdict=blocked.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | Yes | ||
| detach | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate destructiveHint=true, and the description adds valuable behavioral context: the tool 'overwrites stored settings' (in the title), creates/updates, is visible in the GUI immediately, and handles inheritance via the detach parameter. It also adds the important safety precondition about not saving when verdict=blocked, going well beyond what annotations provide. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the primary action, and every sentence serves a purpose: purpose, parameter meanings, and safety precondition. It avoids wasted words and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and moderately simple parameters, the description covers all essential aspects: what it does, parameter semantics, side effects (GUI visibility), and a critical precondition. It is complete for an agent to decide when and 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 coverage is 0%, so the description carried the burden of explaining parameters. It explicitly defines the allowed values for 'type' ('print|filament|printer') and explains the effect of 'detach=True'. The 'name' parameter is self-evident as the preset's name but lacks explicit uniqueness or format details. This is solid compensation, though one parameter remains 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 states a specific verb ('Save') and resource ('currently edited settings as a named user preset'), and clearly distinguishes this from sibling tools like list_presets or delete_preset by adding 'create or update, visible in the GUI immediately'. It unambiguously identifies the tool's scope and differentiates it from related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit preconditions for use: 'Run check_profile_physics first; do not save when verdict=blocked.' It also clarifies the supported type values. However, it does not explicitly discuss alternatives like edit_preset, though 'create or update' largely covers that distinction, so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_settingsSearch settingsARead-only
Search settings by keyword across key/label/tooltip; returns compact matches (key, label, category, short tooltip), ranked key/label first. Offline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds valuable behavioral details: it searches across specific fields (key, label, tooltip), returns a compact structure (key, label, category, short tooltip), and ranks results with key/label matches first. The 'Offline' note is an additional behavioral trait not present in annotations. This goes beyond what 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?
The description is two sentences, each earning its place. The first sentence states the action and scope, the second describes the result format and ranking plus an offline note. No fluff, and the key information is front-loaded. This is an example of concise, well-structured documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two parameters and no output schema, the description covers the core purpose, return shape, and an operational detail (offline). It doesn't specify pagination or behavior on no matches, but these are not critical for a search tool of this simplicity. With annotations covering read-only safety, the description is sufficiently complete for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'query' parameter by stating the search is 'by keyword' and enumerates the fields searched (key/label/tooltip), adding meaning. However, it does not mention the 'limit' parameter or its default behavior (25), leaving part of the semantics undocumented. The description partially compensates but not fully for both 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 specifies 'Search settings by keyword across key/label/tooltip', naming the exact verb, resource, and scope. This immediately distinguishes it as a search tool over settings, and the return format ('compact matches... ranked key/label first') further clarifies its role. It stands apart from sibling tools like 'get_config' or 'find_config_keys' by stating its unique behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use when you need to find settings by keyword, and what results look like (compact matches, ranked by key/label). It doesn't explicitly name alternative tools or state when not to use it, but the purpose is so well-defined that an agent can infer appropriate usage. No exclusions are mentioned, but the context is sufficiently clear for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_presetSelect presetA
Make the named preset the active one for its group (print, filament, or printer).
Selecting a preset discards unsaved set_config overrides and reverts settings to the preset's stored values, so it is also the canonical way to reset dirty config; it leaves the last slice invalid, so re-slice afterwards. Use list_presets for valid names, and save_preset first if unsaved edits should survive the switch.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact name of an existing preset in that group, as returned by list_presets (e.g. '0.20mm Standard'). Unknown names are rejected. | |
| type | Yes | Which preset group to switch: 'print' (process/quality), 'filament' (material), or 'printer' (machine). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing side effects: it discards unsaved set_config overrides, reverts settings to stored values, and invalidates the last slice, recommending re-slicing. This is exactly the kind of behavioral context an agent needs, and it does not contradict the readOnlyHint/destructiveHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the first states the core action, the second covers critical side effects and reset semantics, and the third gives practical usage advice. There is no filler, and the most important caveat 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 two-parameter tool with no output schema, the description is complete: it explains what happens, what data is lost, how to get valid names, when to save first, and the need to re-slice. An agent has everything needed to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has full 100% coverage with detailed descriptions for both parameters, including the allowed groups and the requirement for exact names from list_presets. The description adds minimal new parameter-level information, so the 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 opens with a precise action: 'Make the named preset the active one for its group (print, filament, or printer).' It clearly identifies the resource (preset) and distinguishes it from sibling tools like list_presets and save_preset by stating exactly what selecting 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 description gives explicit usage guidance: 'Use list_presets for valid names, and save_preset first if unsaved edits should survive the switch.' It also explains that this is 'the canonical way to reset dirty config,' which tells the agent when this tool is the right choice over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_configSet config valuesA
Apply config changes to the active project as unsaved overrides, atomically: if any key is invalid the whole batch is rejected and nothing changes. Returns {applied, errors}.
Overrides show as modified in get_status, are not written to any preset file, and revert if the preset is reselected; call save_preset to persist them. Each apply invalidates the last slice, so re-slice afterwards. It does not run the physics gate, so for temperature, speed, acceleration, or flow keys run check_profile_physics before trusting the result. To edit a stored preset rather than the live project, use edit_preset.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | Map of OrcaSlicer config key to new value, e.g. {'layer_height': 0.2, 'sparse_infill_density': '15%'}. Values must match each setting's type; percent settings take strings like '15%'. Discover valid keys with search_settings, find_config_keys, or describe_setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses many behaviors beyond the sparse annotations: atomic rejection of invalid keys, return shape {applied, errors}, visibility in get_status, no writes to preset files, reverting on preset reselect, slice invalidation, and skipping the physics gate. It greatly enriches the agent's understanding of 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?
Every sentence earns its place. The main behavior and atomicity are front-loaded, then return info, persistence semantics, invalidation, physics-gate caveat, and the alternative tool are each covered in compact sentences. No filler 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 tool with no output schema, this description is remarkably complete: it explains the return format, persistence model, side effects, prerequisites, and alternatives. The only input parameter is fully documented in the schema, so 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 coverage is already 100%, so the baseline is 3. The description adds behavioral meaning to the changes parameter: invalid keys cause whole-batch rejection, values must match setting types, and percent settings use string form. This goes slightly beyond the schema's own explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Apply config changes to the active project as unsaved overrides'. It clearly distinguishes itself from edit_preset (edits stored presets) and implies scope as project-level rather than object-level. The atomic all-or-nothing behavior is also stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use an alternative: 'To edit a stored preset rather than the live project, use edit_preset.' It also instructs when to run check_profile_physics for temperature/speed/acceleration/flow keys, and to re-slice after applying. These are concrete, actionable usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_height_rangeSet height-range configA
Override the layer height over a Z band of one object (e.g. 0 to 5 mm printed at 0.1 mm for finer detail near the base). Passing the same min_z and max_z again updates that band's height; clear=True removes every band on the object.
Bands are per-object and invalidate the last slice, so re-slice afterwards. For a single height across the whole object use set_layer_height instead. Get the id from list_objects.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | If True, remove all height-range overrides on the object and ignore the z and layer_height args. | |
| max_z | No | Upper Z bound of the band in mm. Required unless clear=True. | |
| min_z | No | Lower Z bound of the band in mm (object-relative). Required unless clear=True. | |
| object_id | Yes | Integer id of the target object, from list_objects. | |
| layer_height | No | Layer height in mm to use within the band, e.g. 0.1. Required unless clear=True. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behaviors beyond the annotations: passing the same min_z/max_z updates the band, clear=True removes every band, and bands invalidate the last slice requiring re-slicing. The annotations only declare readOnlyHint=false and destructiveHint=false, so the description adds meaningful side-effect context without contradicting them.
Agents need to know what a tool does to the world before calling 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 with the core behavior, followed by update/clear semantics, side effects, and an alternative tool. Every sentence carries operational value 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?
Despite no output schema and sparse annotations, the description covers the object id source, band semantics, clear behavior, side effect on slicing, and the correct alternative tool. Together with 100% schema coverage, an agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra semantics by explaining the relationship between parameters: passing the same min_z/max_z updates an existing band, and clear=True removes all bands. This goes beyond the schema's individual 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 states a specific verb and resource: 'Override the layer height over a Z band of one object', with a concrete example. It also explicitly distinguishes itself from set_layer_height, making the tool's scope immediately 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?
It gives explicit when-to-use context ('For a single height across the whole object use set_layer_height instead'), tells the agent to re-slice after use, and directs where to get the object id from list_objects. This fully routes the agent to the correct call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_layer_heightSet layer heightA
Variable layer height for one object. mode='adaptive' (quality 0..1, higher = finer detail) generates an adaptive profile; mode='reset' (aliases: 'default', 'none') restores uniform layers.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| quality | No | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which the description aligns with by describing a non-destructive mutation. It adds valuable behavioral context: what 'adaptive' does, the quality range, and that 'reset' restores uniform layers, going beyond the minimal annotation hints.
Agents need to know what a tool does to the world before calling 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-loaded with the core purpose, and every clause adds value. It efficiently covers modes, parameters, and aliases without unnecessary 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 three parameters and no output schema, the description adequately covers the main behaviors and parameter semantics. It lacks explicit mention of return values or error conditions, but these are less critical for a simple setter tool and are not required by the schema context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates by explaining the 'mode' values and the 'quality' scale (0..1, higher = finer). It does not explicitly explain 'object_id', but it is naturally implied by 'for one object' in the description and the parameter name 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 description clearly states the tool's purpose: setting variable layer height for one object, with specific modes ('adaptive' and 'reset'). It distinguishes itself from sibling tools like 'set_height_range' by explicitly scoping to a single object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to generate an adaptive layer height profile or restore uniform layers. It does not explicitly mention when not to use it or name alternatives, but the mode-based behavior makes the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_object_configSet per-object configA
Set per-object config overrides on an object by id, e.g. {"wall_loops": 4, "sparse_infill_density": "30%"}. Atomic (nothing applied if any key is invalid).
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses atomicity ('nothing applied if any key is invalid'), which is important behavioral context beyond the annotations. The example also clarifies expected input format. No contradiction with readOnlyHint=false or destructiveHint=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?
Two sentences, front-loaded with the core action, followed by an illustrative example and the atomic guarantee. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (mutation, two params, no output schema), the description covers purpose, example, and atomicity. It does not mention return values or error behavior beyond atomicity, but these are not critical for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by referencing 'by id' for object_id and providing an example for the changes object. However, it does not fully elaborate parameter types or the structure of valid keys/values beyond one 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 clearly states the tool sets per-object config overrides by object id, with a concrete example. This specific verb+resource+scope distinguishes it from the global set_config 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 phrase 'per-object config overrides' implies this is for object-specific settings, contrasting with global config, but it does not explicitly state when to use this versus set_config or provide exclusions. Usage 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.
sliceStart slicingA
Start slicing the current plate in the background and return immediately, without waiting for the result. The reply is 'started' (a slice began), 'already_valid' (the plate is unchanged and the last result still holds), or a conflict if a slice is already running.
Fire-and-forget: poll get_slice_status for progress and stats, or cancel_slice to stop it. Prefer slice_and_wait when you want the finished stats back in one call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint and destructiveHint. The description goes well beyond them by disclosing asynchronous execution, immediate return, the exact response values, the already_valid behavior, and the conflict condition when a slice is already 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 compact and well-structured: core behavior first, response semantics second, and follow-up alternatives last. Every sentence provides operational value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, fire-and-forget tool with no output schema, the description fully covers what the call returns, what can go wrong, how to monitor progress, and when to prefer the synchronous sibling. Nothing needed to invoke or interpret the tool 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 has zero parameters and schema coverage is complete, so there is no parameter semantics to add. With no parameters, the baseline of 4 applies because nothing 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 description states a specific action ('Start slicing the current plate') and clearly distinguishes this tool from slice_and_wait by emphasizing background execution and immediate return. It also enumerates the possible replies, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to prefer slice_and_wait when finished stats are wanted in one call, and tells the agent to poll get_slice_status or use cancel_slice for follow-up. This gives clear when-to-use and when-not-to-use guidance relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slice_and_waitSlice and wait for resultA
Slice the current plate and block until it finishes, then return the final stats and warnings in one call. If the plate is already sliced and unchanged, it returns the existing result without re-slicing.
This is the usual way to slice when you want the outcome immediately. For a non-blocking start, use slice then poll get_slice_status; to sweep one setting across values, use compare_settings.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Maximum seconds to wait for the slice to finish before returning the last known state. Default 300; raise it for large or textured plates that slice slowly. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of behavior. It discloses that the call blocks, returns stats and warnings, and avoids re-slicing if the plate is already sliced and unchanged. This adds meaningful behavioral context, though it doesn't elaborate on timeout behavior or what happens to concurrent slices.
Agents need to know what a tool does to the world before calling 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 with no filler. The core behavior is front-loaded, and the second paragraph adds valuable sibling routing without redundancy. 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 one optional parameter and no output schema, the description covers the blocking behavior, return value, cache semantics, and alternatives. Together with the schema's timeout documentation, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter, timeout, already has a full description in the schema including default and guidance. The tool description adds no further parameter-specific detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Slice the current plate'), the blocking behavior, and the output ('final stats and warnings in one call'). It also differentiates itself from siblings by mentioning the non-blocking alternative and the cached-result behavior for unchanged plates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 this is the usual approach ('when you want the outcome immediately'), and names alternatives: 'use slice then poll get_slice_status' for non-blocking, and 'compare_settings' for sweeping settings. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_objectTransform objectA
Move/rotate/scale an object by id. translate=[dx,dy,dz] mm (relative), rotate=[rx,ry,rz] degrees (relative), scale=[sx,sy,sz] absolute factor. Provide at least one.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| rotate | No | ||
| object_id | Yes | ||
| translate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only and not destructive. The description adds useful behavioral details like units (mm, degrees), relative vs absolute transformations, and the 'at least one' requirement. Does not disclose side effects or return behavior, but with annotations the bar is lower.
Agents need to know what a tool does to the 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 contain all necessary information: action, parameter specifications, and usage constraint. No fluff, 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 medium-complexity tool with no output schema, the description covers the essential invocation details completely. It could mention return values or edge cases, but the core usage and parameter semantics are 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 coverage is 0%, so the description compensates fully. It explains each transform parameter: translate (relative mm), rotate (relative degrees), scale (absolute factor), and implies object_id as the target. The array formats are explicitly shown, leaving no 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?
Description clearly states the action (move/rotate/scale) on a specific resource (object by id), distinguishing it from siblings like set_object_config or delete_object. The verb 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?
Provides clear context on when to use (transforming an object) and the constraint to provide at least one transform parameter. Does not explicitly mention alternatives or exclusions, 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.
watch_eventsWatch OrcaSlicer eventsARead-only
Collect live events (slice.*/config.changed/project.opened) over a bounded window.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds behavioral context beyond that by specifying the bounded window and the specific event categories collected. This gives the agent a clear sense of the tool's scope and duration without needing to infer it 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?
The description is a single, well-structured sentence that front-loads the action ('Collect') and packs key details (event types, bounded window) without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one param, no nested objects, no output schema). The description covers what it does and gives the event types and time bound. It doesn't explain the return format, but for a streaming tool this is less critical, and the readOnly annotation plus bounded window give sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'seconds' with a default of 10, but description coverage is 0%. The description mentions 'bounded window' which hints at the seconds parameter, but it does not explicitly explain that seconds controls the collection duration. This adds some meaning but is still somewhat 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?
The description uses a specific verb 'Collect' and identifies the exact resource ('live events') with a scoped set of event types (slice.*/config.changed/project.opened). It clearly distinguishes from sibling tools like get_slice_status which provide status snapshots, not streaming events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource 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 watching live changes over a bounded window, which provides clear context. However, it does not explicitly state when to prefer this over polling or mention alternatives, 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.1.10- Changed
apply_and_slice1 field changed- added
Input schema / properties / changes / descriptionAdded value: +"Map of OrcaSlicer config key to new value to apply before slicing, e.g. {'layer_height': 0.2}. Same format and validation as set_config; discover keys with search_settings or find_config_keys."
- Changed
delete_object1 field changed- added
Input schema / properties / object_id / descriptionAdded value: +"Integer id of the object to remove, taken from the 'id' field of list_objects (not the array index or the file name)."
- Added
describe_plate - Changed
describe_setting1 field changed- added
Input schema / properties / key / descriptionAdded value: +"Exact OrcaSlicer config key, e.g. 'layer_height' or 'sparse_infill_density'. Find keys with search_settings or find_config_keys. Unknown keys return an error."
- Added
recall_prints - Changed
rename_preset3 fields changed- added
Input schema / properties / new_name / descriptionAdded value: +"New name for the preset. Should not collide with an existing preset of the same type." - added
Input schema / properties / old_name / descriptionAdded value: +"Current name of the user preset to rename, as shown by list_presets." - added
Input schema / properties / type / descriptionAdded value: +"Preset group: 'print', 'filament', or 'printer'."
- Added
save_gcode - Changed
select_preset2 fields changed- added
Input schema / properties / name / descriptionAdded value: +"Exact name of an existing preset in that group, as returned by list_presets (e.g. '0.20mm Standard'). Unknown names are rejected." - added
Input schema / properties / type / descriptionAdded value: +"Which preset group to switch: 'print' (process/quality), 'filament' (material), or 'printer' (machine)."
- Changed
set_config1 field changed- added
Input schema / properties / changes / descriptionAdded value: +"Map of OrcaSlicer config key to new value, e.g. {'layer_height': 0.2, 'sparse_infill_density': '15%'}. Values must match each setting's type; percent settings take strings like '15%'. Discover valid keys with search_settings, find_config_keys, or describe_setting."
- Changed
set_height_range5 fields changed- added
Input schema / properties / clear / descriptionAdded value: +"If True, remove all height-range overrides on the object and ignore the z and layer_height args." - added
Input schema / properties / layer_height / descriptionAdded value: +"Layer height in mm to use within the band, e.g. 0.1. Required unless clear=True." - added
Input schema / properties / max_z / descriptionAdded value: +"Upper Z bound of the band in mm. Required unless clear=True." - added
Input schema / properties / min_z / descriptionAdded value: +"Lower Z bound of the band in mm (object-relative). Required unless clear=True." - added
Input schema / properties / object_id / descriptionAdded value: +"Integer id of the target object, from list_objects."
- Changed
slice_and_wait1 field changed- added
Input schema / properties / timeout / descriptionAdded value: +"Maximum seconds to wait for the slice to finish before returning the last known state. Default 300; raise it for large or textured plates that slice slowly."
1 tool update
v0.1.9- Added
compare_slices
40 tool updates
v0.1.8- First observed
apply_and_slice - First observed
arrange_plate - First observed
auto_orient - First observed
cancel_slice - First observed
check_placement - First observed
check_profile_physics - First observed
compare_settings - First observed
consult - First observed
delete_object - First observed
delete_preset - First observed
describe_setting - First observed
diagnose_plate - First observed
duplicate_object - First observed
edit_preset - First observed
find_config_keys - First observed
get_config - First observed
get_gcode - First observed
get_job_status - First observed
get_preset_config - First observed
get_slice_breakdown - First observed
get_slice_status - First observed
get_slice_warnings - First observed
get_status - First observed
list_objects - First observed
list_presets - First observed
load_model - First observed
remember - First observed
rename_preset - First observed
render_plate - First observed
save_preset - First observed
search_settings - First observed
select_preset - First observed
set_config - First observed
set_height_range - First observed
set_layer_height - First observed
set_object_config - First observed
slice - First observed
slice_and_wait - First observed
transform_object - First observed
watch_events
TDQS
Scored across 44 tools
Some tools overlap heavily: find_config_keys vs search_settings, get_slice_status vs get_slice_warnings vs diagnose_plate, and compare_settings vs compare_slices all have similar intents. The descriptions are detailed enough to tell most apart, but an agent must read carefully to avoid picking the wrong tool.
The vast majority of names follow a consistent snake_case verb_noun pattern like list_objects, set_config, and save_preset. A few bare-verb outliers such as consult, remember, and slice are minor deviations rather than a systemic inconsistency.
44 tools is well beyond the heavy band and makes the surface daunting for an agent to navigate. Many near-duplicates could be consolidated, such as the three slice-invocation variants and the two key/setting search tools.
The tool set covers the full slicing workflow well: object management, configuration, presets, slicing, comparison, G-code retrieval/saving, and print outcome recall. Minor gaps like reading back per-object overrides or managing project files exist but do not create dead ends.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for Hailuo (MiniMax) AI video generation
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server to dynamically load Claude Code skills into AI agents54315MIT
- AlicenseNot gradedqualityFmaintenanceA simple MCP server that enables Claude to communicate with locally running LLM models via LM Studio.9MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables Claude to control your computer, similar to Anthropic's computer use but easy to set up locally.347362MIT
- AlicenseAqualityBmaintenanceA self-hosted MCP server that lets Claude (or any MCP client) drive Autodesk Fusion 360 on your own machine.982MIT

