Skip to main content
Glama
mcp-server-qidi

mcp-server-qidi

by borgels

Start print

qidi_start_print
Destructive

Starts printing a G-code file already stored on a QIDI printer after confirming a fresh snapshot shows an empty build plate and the printer is idle. Use it to begin plate-checked jobs safely.

Instructions

Start printing a G-code file that is already on the printer. Before calling: take qidi_snapshot (light=true) and LOOK at the picture — the plate must be empty. The server refuses unless a snapshot was taken in the last few minutes and after the previous job ended, and the printer is idle. After starting, check qidi_printer_status again after ~4 minutes (heating + probing) before reporting that the print is running.

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": {
      "filename": "<filename>",
      "plateIsEmpty": "<plateIsEmpty>"
    },
    "name": "qidi_start_print"
  }
}

Input Schema

NameRequiredDescriptionDefault
filenameYesFile name relative to the printer gcodes folder, exactly as qidi_list_files returns it.
plateIsEmptyYesConfirm that you looked at a fresh snapshot and the build plate is empty.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, but the description goes well beyond that by disclosing server-side enforcement rules (freshness window on the snapshot, post-job ordering, idle-state requirement) that would otherwise cause unexplained failures. It also sets expectations about a delayed visible effect, telling the agent to wait ~4 minutes for heating and probing before reporting success.

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

Conciseness5/5

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

Three sentences, front-loaded with the action, then preconditions, then post-call verification in temporal order matching the agent's actual workflow. Every clause carries operational information — named tools, the light=true flag, the ~4 minute wait — with no filler or restatement of the title.

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, non-idempotent mutation tool with no output schema, the description covers the full lifecycle the agent must reason about: prerequisites, the server's refusal conditions, and post-start verification with a concrete timing hint. Nothing an agent needs in order to call this safely and report accurately is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine meaning: it explains that filename must reference a file already resident on the printer and ties the plateIsEmpty confirmation to a specific pre-call ritual with qidi_snapshot. That context explains why the boolean is required and const-true rather than merely restating the field.

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?

The description opens with a specific verb and resource — 'Start printing a G-code file that is already on the printer' — and the 'already on the printer' clause immediately distinguishes it from any upload or file-listing sibling like qidi_list_files. An agent can tell this apart from qidi_pause_print, qidi_resume_print, and qidi_cancel_print without opening any schema.

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

Usage Guidelines5/5

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

It states explicit prerequisites with named sibling tools: take qidi_snapshot(light=true) and visually verify the plate is empty before calling. It also states the when-not condition — the server refuses unless a recent snapshot was taken after the previous job ended and the printer is idle — plus a concrete follow-up step (check qidi_printer_status after ~4 minutes). No inference is required to sequence the call.

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