Skip to main content
Glama

load_box_slot

Destructive

Feeds a specified Box slot to the printer's extruder using QIDI E_LOAD, with temperature control and safety checks that refuse unsupported firmware, invalid slots, or active tool changes/prints.

Instructions

Feed one Box slot toward the extruder with QIDI's E_LOAD SLOT= S=. Refused unless the printer lists E_LOAD: a real Max4 Box seen so far did not (it has MULTI_COLOR_LOAD, parameters unpublished), so on it this tool says so and sends nothing. slot is 0-based across the whole Box (unit 1 = slots 0-3, unit 2 = 4-7, ...). Refused unless the firmware will actually act on the Box (see get_box_status problems), the slot exists, and no tool change is running; empty-slot and already-loaded conditions are shown on the ticket for you to weigh. Two-step confirmation; refused during a print. Not yet verified against a physical Box: run docs/guides/box-first-contact.md first. To unload, use unload_filament -- QIDI's M603 already calls E_UNLOAD for the extruder.

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": {
      "slot": "<slot>"
    },
    "name": "load_box_slot"
  }
}

Input Schema

NameRequiredDescriptionDefault
slotYes
confirmNo
hotend_tempNo
confirm_tokenNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.1

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description goes well beyond them: capability gating on E_LOAD, the known Max4 Box limitation (has MULTI_COLOR_LOAD, unpublished parameters) where it sends nothing, two-step confirmation, print-in-progress refusal, and the fact it is unverified on real hardware. That is exactly the context needed before a destructive action.

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?

Front-loaded with the action and command, then layered with refusal conditions and the alternative. Some sentences are densely parenthetical ('it has MULTI_COLOR_LOAD, parameters unpublished') and the repeated 'Refused unless' phrasing is slightly clunky, but no sentence is filler.

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

Completeness5/5

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

For a destructive, capability-gated, two-step tool, the description covers preconditions, failure modes, hardware caveats, and the sibling alternative, and an output schema exists so return values need no explanation. An agent has enough to decide whether to call it and what to expect on refusal.

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 coverage is 0%, so the description must carry parameter meaning. It does explain `slot` precisely (0-based across the whole Box, unit 1 = 0-3, unit 2 = 4-7) and frames confirm/confirm_token as 'two-step confirmation', but hotend_temp is only implied by the S=<temp> snippet and confirm_token's provenance is never stated, leaving half the parameters underspecified.

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

Purpose5/5

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

Names a specific verb and resource ('Feed one Box slot toward the extruder') and grounds it in the exact firmware command (E_LOAD SLOT=<n> S=<temp>). It also explicitly separates itself from unload_filament and load_filament, so an agent can pick the right tool without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use and when-not-to-use: refused unless the printer lists E_LOAD, refused unless get_box_status `problems` is clean, refused during a print or an active tool change, and 'To unload, use unload_filament'. It also routes the agent to docs/guides/box-first-contact.md before first physical use.

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