register_printer
Add a 3D printer to Kiln's fleet for AI-agent control and monitoring. Handles OctoPrint, Bambu, Moonraker, Creality, Elegoo, Prusa Link, Duet and USB backends.
Instructions
Register a new printer in the fleet.
Registering is free at every tier and always has been — what the fleet
tier sells is running printers in PARALLEL, enforced when a print
starts, not when a machine is added. So owning a second printer and
using them one at a time is a supported setup on Free and Pro: the
registration succeeds and the reply notes the concurrency limit.
Free and Pro run 1 printer at a time. Driving several at once starts
at Business; the reply says how many printers your plan includes.
Args:
name: Unique human-readable name (e.g. "voron-350", "bambu-x1c").
A name holding the printer's address, serial or another
identifier is held before anything is saved (code
``NAME_HOLDS_IDENTIFIER``): the reply says what is in it and
carries ``suggested_name``. Offer that to the person, then call
again with the name they choose.
printer_type: Backend type -- "octoprint", "moonraker", "bambu",
"creality", "elegoo", "prusalink", "duet", or "usb".
"serial" is accepted as a legacy alias for "usb".
host: Base URL or IP address of the printer. For USB printers,
this is the port path (e.g. "/dev/ttyUSB0", "COM3").
api_key: The printer's credential: an API key (OctoPrint, Prusa
Link, a Moonraker or Creality printer with its login turned
on), a Bambu Lab printer's LAN access code, or a Duet's
machine password. For OctoPrint it can be left out: Kiln asks
OctoPrint for a key and the reply (code ``AWAITING_APPROVAL``)
carries ``approve_url``, a page where the person clicks Allow.
Give them that link, then call again with the same arguments;
the request stays open for ten minutes.
serial: A Bambu Lab printer's serial number (``discover_printers``
reads it off the network), or an Elegoo printer's mainboard id.
verify_ssl: Whether to verify SSL certificates (default True).
Set to False for printers using self-signed certificates.
For Bambu, True maps to TLS pin mode and False maps to
insecure mode.
printer_model: Which printer this is, in any spelling the
catalogue knows ("K1 Max", "k1_max", "Prusa MK4"). Required: a
registration without it is refused (``PRINTER_MODEL_REQUIRED``).
Ask the person, who knows what they bought; never guess one.
A model outside the catalogue is recorded as they name it, with
its make, under Kiln's generic limits.
printer_make: Who makes the printer ("Prusa", "Anycubic"). Needed
only for a model outside the catalogue, and implied by a Bambu
Lab, Creality, Elegoo or Prusa Link connection.
persist: Save the printer to ``~/.kiln/config.yaml`` so future MCP
sessions load the same printer. Default ``True``.
verify_connection: For Bambu printers, immediately query AMS status
after registration and return a proof summary. Default ``True``.
baudrate: Baud rate for USB printers. Omitted, 115200; many
Marlin boards are flashed for 250000 and will not talk at
115200.
camera_snapshot_url: A camera YOU point at the bed — an http(s)
URL that answers with one image (a webcam's snapshot endpoint,
an IP camera's still URL). Any printer type; used instead of
the printer's own camera by ``printer_snapshot``,
``monitor_print`` and every other frame reader.
camera_stream_url: The same camera as a live feed — MJPEG over
http(s), or an rtsp(s) stream (a frame is cut with ffmpeg).
Either URL alone is enough. A stream URL may embed a
password; it is stored with the printer's other credentials
and never repeated in a reply or a log. Frames from your
camera are what Kiln looks at; they do not switch on the
printer's own failure detection, which runs on the printer
against its own cameras.
keep_name: True to register under ``name`` as given after the
person has seen ``suggested_name`` and chosen their own.
When something this kind of printer needs is missing, the refusal
names it and says where the person finds it; ``discover_printers``
says the same for each printer it finds, before anything is asked.
Once the address has answered, Kiln reads the id the machine reports
for itself (a Prusa Link printer's serial, a Duet board's unique id,
the host serial Moonraker reports) and saves it with the printer, so a
later registration under this name at a new address is matched to the
same machine -- or refused as a different one -- by that id rather
than by the address. The reply's ``machine_identity`` carries what
was read; a read that fails is noted in ``warnings`` and never fails
the registration.
Once registered the printer can be targeted by name — ``printer_status``,
``monitor_print``, ``cancel_print``, ``pause_print`` and ``resume_print``
all take a ``printer_name`` at every tier, so owning a second machine
never costs you sight of it or control over it. Seeing them together
(``fleet_status``) and driving them together are Business features.
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": {
"name": "<name>",
"printer_type": "<printer_type>",
"host": "<host>"
},
"name": "register_printer"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Base URL or IP address of the printer. For USB printers, this is the port path (e.g. "/dev/ttyUSB0", "COM3"). | |
| name | Yes | Unique human-readable name (e.g. "voron-350", "bambu-x1c"). A name holding the printer's address, serial or another identifier is held before anything is saved (code ``NAME_HOLDS_IDENTIFIER``): the reply says what is in it and carries ``suggested_name``. Offer that to the person, then call again with the name they choose. | |
| serial | No | A Bambu Lab printer's serial number (``discover_printers`` reads it off the network), or an Elegoo printer's mainboard id. | |
| api_key | No | The printer's credential: an API key (OctoPrint, Prusa Link, a Moonraker or Creality printer with its login turned on), a Bambu Lab printer's LAN access code, or a Duet's machine password. For OctoPrint it can be left out: Kiln asks OctoPrint for a key and the reply (code ``AWAITING_APPROVAL``) carries ``approve_url``, a page where the person clicks Allow. Give them that link, then call again with the same arguments; the request stays open for ten minutes. | |
| persist | No | Save the printer to ``~/.kiln/config.yaml`` so future MCP sessions load the same printer. Default ``True``. Default: true. | |
| baudrate | No | Baud rate for USB printers. Omitted, 115200; many Marlin boards are flashed for 250000 and will not talk at 115200. | |
| keep_name | No | True to register under ``name`` as given after the person has seen ``suggested_name`` and chosen their own. Default: false. | |
| verify_ssl | No | Whether to verify SSL certificates (default True). Set to False for printers using self-signed certificates. For Bambu, True maps to TLS pin mode and False maps to insecure mode. Default: true. | |
| printer_make | No | Who makes the printer ("Prusa", "Anycubic"). Needed only for a model outside the catalogue, and implied by a Bambu Lab, Creality, Elegoo or Prusa Link connection. | |
| printer_type | Yes | Backend type -- "octoprint", "moonraker", "bambu", "creality", "elegoo", "prusalink", "duet", or "usb". "serial" is accepted as a legacy alias for "usb". | |
| printer_model | No | Which printer this is, in any spelling the catalogue knows ("K1 Max", "k1_max", "Prusa MK4"). Required: a registration without it is refused (``PRINTER_MODEL_REQUIRED``). Ask the person, who knows what they bought; never guess one. A model outside the catalogue is recorded as they name it, with its make, under Kiln's generic limits. | |
| camera_stream_url | No | The same camera as a live feed — MJPEG over http(s), or an rtsp(s) stream (a frame is cut with ffmpeg). Either URL alone is enough. A stream URL may embed a password; it is stored with the printer's other credentials and never repeated in a reply or a log. Frames from your camera are what Kiln looks at; they do not switch on the printer's own failure detection, which runs on the printer against its own cameras. | |
| verify_connection | No | For Bambu printers, immediately query AMS status after registration and return a proof summary. Default ``True``. Default: true. | |
| camera_snapshot_url | No | A camera YOU point at the bed — an http(s) URL that answers with one image (a webcam's snapshot endpoint, an IP camera's still URL). Any printer type; used instead of the printer's own camera by ``printer_snapshot``, ``monitor_print`` and every other frame reader. |