Skip to main content
Glama

auto_recover

Destructive

Recover a failed 3D print through a guided workflow: inspect the failure, propose recovery actions, and run only after confirming the returned action digest.

Instructions

Recover a failed print in one guided operation.

Needs Kiln Pro.

This tool may ask this computer to act on your printer (upload, start, pause, resume, set a speed preset). It first answers with the actions it wants and why, and runs nothing; call it again with run_actions set to the actions_digest it answered with to carry out exactly those actions through Kiln's own tools here, with every check those tools make.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "printer_name": "<printer_name>"
    },
    "name": "auto_recover"
  }
}

Input Schema

NameRequiredDescriptionDefault
job_infoNoCurrent job metadata; ``material`` sets how a resume file is built. A path in it is not opened.
telemetryNoWhat you know about the print now, beside the reading the computer takes (``spaghetti_detected``, ``filament_detected``, ...). Where the two name the same thing and differ, the reading wins and the difference is said.
failure_idNoNot read: each call judges a fresh reading. A call that passes one is told so. Default: "".
gcode_pathNoThe sliced file that is printing: what a resume file is built from (a paused print resumed where it stopped) or what is started on another printer when ``retry_mode`` moves the job. Through Kiln's servers it is sent with the call. Default: "".
retry_modeNo``"off"`` (default) | ``"same_bed"`` | ``"fleet"`` | ``"auto"`` (``"auto"`` tries the same bed first, then another of your printers). Moving the job to another printer needs the fleet plan; the refusal names it. Default: "off".
run_actionsNoLeave empty on the first call: the tool answers with the actions it wants and an actions_digest, and runs nothing. Call again with that digest here to carry out exactly those actions. Default: "".
auto_confirmNoDoes nothing: an action runs only when ``run_actions`` hands back the digest of the list shown. Kept so older calls still parse. Default: true.
printer_nameYesPrinter to recover on, as the computer attached to it names it.
printer_typeNoBackend hint (``"bambu"``, ``"moonraker"``, ``"octoprint"``, ...) for skip capability. Default: "".
part_attachedNoYour word on whether the half-printed part is still stuck to the plate (``true``) or gone (``false``), when no picture settles it. Omitted, the answer asks once before a resume is offered.
plate_objectsNoThe ``objects`` list from ``list_plate_objects`` (each with ``label_id``, ``name``, ``bbox``, ``area_mm2``), for the skip-failed-objects path. Without it, a ``.gcode.3mf`` passed as ``gcode_path`` is read for them (``job_info["plate_number"]`` picks the plate).
snapshot_pathNoA picture of the print now (from ``printer_snapshot``), judged with ``vision_strictness``. Without one the answer says the verdict was reached without looking. Default: "".
failed_objectsNoWhich plate object(s) failed, by ``label_id`` or name (same matching as ``plan_object_skip``). Used only when ``allow_skip_failed_objects`` is True.
telemetry_historyNoEarlier readings (each answer's ``observation``), for trend-based detection.
vision_strictnessNo``"advisory"`` (default) | ``"strict"``. Advisory reports what a brought picture shows without stopping on it; strict pauses on a sharp change. Default: "advisory".
try_untested_resumeNoOpt this printer in to a Kiln-built resume on a model Kiln has not yet seen one work on. Defaults to ``False``, which leaves the resume unoffered there. Default: false.
alternative_printersNoNarrows which of your other printers may take the job when ``retry_mode`` moves it; those printers are read on the computer attached to them.
monitoring_interval_sNoSeconds until the next reading is worth taking (``next_check_s``). Default 30s. Default: 30.0.
monitoring_max_wall_sNoNot read: each call is one reading, and how long to keep polling is yours to decide. Kept so older calls still parse. Default: 600.0.
baseline_snapshot_pathNoAn earlier picture of the same print, so ``snapshot_path`` can show a change. Default: "".
allow_skip_failed_objectsNoOff by default. When True and the plate localizes to specific failed object(s) on a printer with known skip capability, proposes skipping just those objects instead of the standard abort/retry path. Default: false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changedv1.5.1
    • changedInput schema / properties / allow_skip_failed_objects / description
      Previous value: -"Default: false."New value: +"Off by default. When True and the plate localizes to specific failed object(s) on a printer with known skip capability, proposes skipping just those objects instead of the standard abort/retry path. Default: false."
    • addedInput schema / properties / alternative_printers / description
      Added value: +"Narrows which of your other printers may take the job when ``retry_mode`` moves it; those printers are read on the computer attached to them."
    • changedInput schema / properties / auto_confirm / description
      Previous value: -"Default: true."New value: +"Does nothing: an action runs only when ``run_actions`` hands back the digest of the list shown. Kept so older calls still parse. Default: true."
    • changedInput schema / properties / baseline_snapshot_path / description
      Previous value: -"Default: \"\"."New value: +"An earlier picture of the same print, so ``snapshot_path`` can show a change. Default: \"\"."
    • addedInput schema / properties / failed_objects / description
      Added value: +"Which plate object(s) failed, by ``label_id`` or name (same matching as ``plan_object_skip``).  Used only when ``allow_skip_failed_objects`` is True."
    • changedInput schema / properties / failure_id / description
      Previous value: -"Default: \"\"."New value: +"Not read: each call judges a fresh reading. A call that passes one is told so. Default: \"\"."
    • changedInput schema / properties / gcode_path / description
      Previous value: -"Default: \"\"."New value: +"The sliced file that is printing: what a resume file is built from (a paused print resumed where it stopped) or what is started on another printer when ``retry_mode`` moves the job.  Through Kiln's servers it is sent with the call. Default: \"\"."
    • addedInput schema / properties / job_info / description
      Added value: +"Current job metadata; ``material`` sets how a resume file is built.  A path in it is not opened."
    • changedInput schema / properties / monitoring_interval_s / description
      Previous value: -"Default: 30.0."New value: +"Seconds until the next reading is worth taking (``next_check_s``).  Default 30s. Default: 30.0."
    • changedInput schema / properties / monitoring_max_wall_s / description
      Previous value: -"Default: 600.0."New value: +"Not read: each call is one reading, and how long to keep polling is yours to decide.  Kept so older calls still parse. Default: 600.0."
    • addedInput schema / properties / part_attached
      Added value: +{
      +  "description": "Your word on whether the half-printed part is still stuck to the plate (``true``) or gone (``false``), when no picture settles it. Omitted, the answer asks once before a resume is offered.",
      +  "title": "Part Attached",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / plate_objects / description
      Added value: +"The ``objects`` list from ``list_plate_objects`` (each with ``label_id``, ``name``, ``bbox``, ``area_mm2``), for the skip-failed-objects path. Without it, a ``.gcode.3mf`` passed as ``gcode_path`` is read for them (``job_info[\"plate_number\"]`` picks the plate)."
    • addedInput schema / properties / printer_name / description
      Added value: +"Printer to recover on, as the computer attached to it names it."
    • changedInput schema / properties / printer_type / description
      Previous value: -"Default: \"\"."New value: +"Backend hint (``\"bambu\"``, ``\"moonraker\"``, ``\"octoprint\"``, ...) for skip capability. Default: \"\"."
    • changedInput schema / properties / retry_mode / description
      Previous value: -"Default: \"off\"."New value: +"``\"off\"`` (default) | ``\"same_bed\"`` | ``\"fleet\"`` | ``\"auto\"`` (``\"auto\"`` tries the same bed first, then another of your printers).  Moving the job to another printer needs the fleet plan; the refusal names it. Default: \"off\"."
    • changedInput schema / properties / run_actions / description
      Previous value: -"Default: \"\"."New value: +"Leave empty on the first call: the tool answers with the actions it wants and an actions_digest, and runs nothing. Call again with that digest here to carry out exactly those actions. Default: \"\"."
    • changedInput schema / properties / snapshot_path / description
      Previous value: -"Default: \"\"."New value: +"A picture of the print now (from ``printer_snapshot``), judged with ``vision_strictness``. Without one the answer says the verdict was reached without looking. Default: \"\"."
    • addedInput schema / properties / telemetry / description
      Added value: +"What you know about the print now, beside the reading the computer takes (``spaghetti_detected``, ``filament_detected``, ...).  Where the two name the same thing and differ, the reading wins and the difference is said."
    • addedInput schema / properties / telemetry_history / description
      Added value: +"Earlier readings (each answer's ``observation``), for trend-based detection."
    • addedInput schema / properties / try_untested_resume
      Added value: +{
      +  "description": "Opt this printer in to a Kiln-built resume on a model Kiln has not yet seen one work on. Defaults to ``False``, which leaves the resume unoffered there. Default: false.",
      +  "title": "Try Untested Resume",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / vision_strictness / description
      Previous value: -"Default: \"advisory\"."New value: +"``\"advisory\"`` (default) | ``\"strict\"``.  Advisory reports what a brought picture shows without stopping on it; strict pauses on a sharp change. Default: \"advisory\"."
  2. Addedv1.5.0

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that the tool may act on the printer, lists the kinds of actions it may request (upload, start, pause, resume, set speed preset), and explains that the first call performs a dry run while the second executes exactly the digested actions through Kiln's checked tools. This gives the agent a clear safety model for a destructive workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded, starting with the core purpose and prerequisite before explaining the two-phase execution model. The final sentence is dense but earns its length by covering the dry-run and execution semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 21-parameter recovery tool with no output schema, the description explains the essential return-and-confirm workflow and the side effects the agent must expect. It leaves some operational details to the richly documented schema, but the core behavior needed to call it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter meanings are already well documented in the schema. The description reinforces the important run_actions digest contract but does not add meaningful parameter-level detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Recover a failed print in one guided operation.' It also distinguishes the tool's two-phase guided workflow, but it does not name sibling recovery tools such as plan_print_recovery or start_print_recovery to make the boundary explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to use this when recovering a failed print, notes the Kiln Pro prerequisite, and explains the required two-call sequence: first inspect proposed actions, then call again with run_actions set to the returned digest. It does not state when not to use it or compare it against alternative recovery tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools