Skip to main content
Glama

printer_snapshot

Capture a webcam snapshot from a 3D printer, auto-detecting the camera protocol, and save it to a file or return it base64-encoded.

Instructions

Capture a webcam snapshot from the printer.

Handles TLS+JPEG camera protocol (Bambu A1/P1), MJPEG stream capture
(OctoPrint/Moonraker), and RTSPS (Bambu X1) automatically.  A camera the
user registered for the printer (``register_printer`` with
``camera_snapshot_url`` / ``camera_stream_url``) is used instead of the
printer's own; ``camera_source`` in the reply says which one answered.

:param printer_name: Target printer name.  Omit for the default printer.
:param save_path: Optional path to save the image file.  If omitted, the
    image is returned as a base64-encoded string.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "printer_snapshot"
  }
}

Input Schema

NameRequiredDescriptionDefault
save_pathNoOptional path to save the image file. If omitted, the image is returned as a base64-encoded string.
printer_nameNoTarget printer name. Omit for the default printer.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.5.1
    • addedInput schema / properties / printer_name / description
      Added value: +"Target printer name.  Omit for the default printer."
    • addedInput schema / properties / save_path / description
      Added value: +"Optional path to save the image file.  If omitted, the image is returned as a base64-encoded string."
  2. Changed2 schema fields changedv1.5.0
    • removedInput schema / properties / printer_name / default
      Removed value: -null
    • removedInput schema / properties / save_path / default
      Removed value: -null
  3. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description adds genuine behavior: automatic protocol selection across three camera transports, the rule that a user-registered camera overrides the printer's own, and the presence of camera_source in the reply so the caller can tell which source answered. It stops short of stating permissions/auth needs or failure modes for unreachable cameras.

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 core action is front-loaded in one sentence, followed by useful protocol and camera-source context. The reStructuredText :param: blocks duplicate the schema text and are the only genuinely redundant material.

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?

There is no output schema, so the description carries return-value burden and does so: base64 string by default, file on disk when save_path is given, plus camera_source in the reply. For a two-parameter tool this is close to complete; only error behavior for unreachable or unregistered cameras is missing.

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 100% and the two :param blocks restate the schema descriptions nearly verbatim, adding no format, syntax, or path-resolution detail. With both parameters fully documented in the schema, the description neither adds value nor creates ambiguity, so 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 first sentence gives a specific verb and resource ('Capture a webcam snapshot from the printer'), and the protocol list makes clear this is an image grab rather than a continuous feed. It never names the closest sibling (webcam_stream) or analyze_print_snapshot, so differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

Usage is only implied by the content: an agent can infer this is for a one-off still image, and the note about registered cameras explains the precedence rule. There is no explicit when-to-use versus webcam_stream, no prerequisites, and no statement of when this tool would fail or be unnecessary.

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