Skip to main content
Glama

set_fan_speed

Idempotent

Set a QIDI 3D printer fan's speed from 0.0 to 1.0, defaulting to the part-cooling fan or using another listed fan name.

Instructions

Set a fan's speed as a fraction from 0.0 to 1.0. Use fan='part' (or omit) for the part-cooling fan; other names come from list_fans (e.g. 'auxiliary_cooling_fan', 'chamber_circulation_fan'). Firmware-managed fans (hotend, board) cannot be set.

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": {
      "speed": "<speed>"
    },
    "name": "set_fan_speed"
  }
}

Input Schema

NameRequiredDescriptionDefault
fanNopart
speedYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.1

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already establish that this is a non-readonly, idempotent, non-destructive operation. The description adds useful behavioral context beyond annotations by giving the speed range and excluding firmware-managed fans, though it does not describe error behavior for invalid fan names.

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?

The description is three tight sentences. The primary action and speed range are front-loaded, followed by fan naming guidance and the exclusion, with no 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 two-parameter setter with annotations and an output schema, the description covers the essential invocation details: speed range, fan default, valid fan naming source, and unsupported fans. Nothing material for correct invocation is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does: it defines speed as a fraction from 0.0 to 1.0, explains that fan defaults to 'part' when omitted, and lists example fan names from list_fans.

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 uses a specific verb and resource ('Set a fan's speed') and immediately defines the speed domain as a fraction from 0.0 to 1.0. It also distinguishes this tool from siblings by pointing to list_fans for valid fan names.

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 explicitly says to use fan='part' or omit the parameter for part cooling, states that other names come from list_fans with concrete examples, and provides an exclusion: firmware-managed fans cannot be set. This gives clear when-to-use and when-not-to-use guidance.

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