Skip to main content
Glama

record_cutter_replacement

Destructive

Log a filament-cutter blade replacement for a registered 3D printer, capturing the printer, reason, blade side, and swap time in one call.

Instructions

Record a filament-cutter blade swap -- the whole operation, one call.

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_id": "<printer_id>",
      "reason": "<reason>"
    },
    "name": "record_cutter_replacement"
  }
}

Input Schema

NameRequiredDescriptionDefault
reasonYesWhy the blade was swapped: ``worn_out``, ``jammed``, ``damaged``, ``preventive`` or ``other``. Any other value records nothing and answers ``WHY_REQUIRED``.
blade_sideNo``left`` or ``right`` on a two-blade toolhead; empty for a single blade. Any other value is refused. Default: "".
printer_idYesThe registered printer's name. Empty is refused with ``VALIDATION_ERROR``.
replaced_atNoWhen the swap happened, as an ISO 8601 date or timestamp. Empty means now; an unreadable value is refused. Default: "".
printer_modelNoThe printer's catalogue model. Empty, Kiln uses the model this install's config declares (never on the hosted server), else the one on the stored record. A model with no cutter answers ``NO_CUTTER``. Default: "".
reason_detailNoFree text saying more about the reason; required when ``reason`` is ``other``. Default: "".
client_event_idNoA stable id for this swap, so the learning event is written once if the call is retried. Empty, a new id is minted. Default: "".
cuts_before_kilnNoWhat the NEW blade had already done before Kiln started counting, a whole number 0 or more, kept as the person's estimate. Omitted means a new blade.
previous_cut_countNoWhat the OLD blade had done, in cuts, a whole number 0 or more. Omitted, the stored record is used, subject to the same-turn refusal described above.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.5.1
    • changedInput schema / properties / blade_side / description
      Previous value: -"Default: \"\"."New value: +"``left`` or ``right`` on a two-blade toolhead; empty for a single blade.  Any other value is refused. Default: \"\"."
    • changedInput schema / properties / client_event_id / description
      Previous value: -"Default: \"\"."New value: +"A stable id for this swap, so the learning event is written once if the call is retried.  Empty, a new id is minted. Default: \"\"."
    • addedInput schema / properties / cuts_before_kiln / description
      Added value: +"What the NEW blade had already done before Kiln started counting, a whole number 0 or more, kept as the person's estimate.  Omitted means a new blade."
    • addedInput schema / properties / previous_cut_count / description
      Added value: +"What the OLD blade had done, in cuts, a whole number 0 or more.  Omitted, the stored record is used, subject to the same-turn refusal described above."
    • addedInput schema / properties / printer_id / description
      Added value: +"The registered printer's name.  Empty is refused with ``VALIDATION_ERROR``."
    • changedInput schema / properties / printer_model / description
      Previous value: -"Default: \"\"."New value: +"The printer's catalogue model.  Empty, Kiln uses the model this install's config declares (never on the hosted server), else the one on the stored record.  A model with no cutter answers ``NO_CUTTER``. Default: \"\"."
    • addedInput schema / properties / reason / description
      Added value: +"Why the blade was swapped: ``worn_out``, ``jammed``, ``damaged``, ``preventive`` or ``other``.  Any other value records nothing and answers ``WHY_REQUIRED``."
    • changedInput schema / properties / reason_detail / description
      Previous value: -"Default: \"\"."New value: +"Free text saying more about the reason; required when ``reason`` is ``other``. Default: \"\"."
    • changedInput schema / properties / replaced_at / description
      Previous value: -"Default: \"\"."New value: +"When the swap happened, as an ISO 8601 date or timestamp.  Empty means now; an unreadable value is refused. Default: \"\"."
  2. Addedv1.5.0

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this mutates state. Beyond that the description adds almost nothing: it does not say what is written (wear counters, a learning event), whether prior cut counts are overwritten, whether repeated calls are deduplicated, or what errors can occur. 'The whole operation, one call' is the only behavioral signal, and it is too vague to act on.

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?

A single front-loaded sentence with the verb and resource in the first three words and no filler. The trailing '-- the whole operation, one call' is slightly slogan-like and adds less than a sentence about scope would, but the text is not bloated.

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

Completeness2/5

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

This is a 9-parameter mutation tool with destructiveHint and no output schema, and the description is one line. It leaves unaddressed what side effects the call produces, how the cut-count fields interact with the stored record, and what the caller gets back on success or partial validation failure, all of which the agent would need before invoking it confidently.

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%, and the schema itself is unusually rich, documenting enums, defaults, refusal codes (WHY_REQUIRED, NO_CUTTER, VALIDATION_ERROR) and the meaning of omitted cut counts. The description contributes no additional parameter meaning, so the baseline 3 applies.

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: 'Record a filament-cutter blade swap.' An agent can tell this is an event-logging tool, not a query, unlike nearby siblings such as cutter_wear_status or get_maintenance_prediction. It stops short of naming any sibling or scope boundary explicitly, which keeps it from a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says whether to call this before or after physically swapping the blade, how it relates to cutter_wear_status or maintenance_due, or whether it is meant for single events vs. bulk backfill. The phrase 'the whole operation, one call' hints that this replaces a multi-step flow but never states the alternative it replaces.

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