Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BAMBU_HOSTNoThe IP address of the Bambu Lab printer (e.g. 192.168.x.x). Can be skipped by calling add_printer instead.
BAMBU_MODELNoThe printer model, e.g. A1. Can be skipped by calling add_printer instead.
BAMBU_SERIALNoThe serial number of the printer. Can be skipped by calling add_printer instead.
BAMBU_ACCESS_CODENoThe LAN access code shown on the printer's screen. Can be skipped by calling add_printer instead.
BAMBU_SENTINEL_HOMENoOverride the data directory (default ~/.bambu-sentinel).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": true,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
fleet_overviewA

One-line status for every configured printer (state, progress, temps, plate-cleared flag).

printer_statusB

Full live state of one printer: temps, fans, layer, HMS errors, AMS trays.

add_printerA

Register a printer (LAN mode). Needs the printer IP, serial number and LAN access code (printer screen > Network). Saved to ~/.bambu-sentinel/config.json.

remove_printerA

Forget a printer (history is kept). Refused while it is printing unless force=true.

pause_printC

Pause the running print.

resume_printC

Resume a paused print.

stop_printA

Cancel the current print. Irreversible: the part is lost. Requires confirm=true.

set_speedB

Print speed profile: 1 silent, 2 standard, 3 sport, 4 ludicrous.

set_lightC

Turn the work light on or off.

set_temperatureA

Set nozzle or bed target temperature (model limits enforced; 0 turns the heater off).

send_gcodeA

Send up to 20 lines of G-code. Only a safe allowlist is accepted (moves, homing, temps within model limits, fans, speed/flow). Not allowed during a print unless it is a temp/fan/speed command.

inspect_3mfB

Read a sliced .3mf: plates, estimated print time, filament weight and required filament types/colours.

list_printer_filesC

List files on the printer's storage over FTPS.

upload_fileB

Upload a local file to the printer (default /cache/).

delete_printer_fileB

Delete a file from the printer storage. Requires confirm=true.

start_printA

Upload a local .3mf/.gcode.3mf and start it now. Filament slots are matched automatically against the loaded AMS trays. You must confirm the build plate is empty (plate_cleared=true).

queue_addA

Add a sliced file to the print queue. The scheduler later picks a free printer that has the right filament loaded. Higher priority runs first.

queue_listC

List queue jobs (default: queued and printing).

queue_etaA

Forecast the queue: which printer each queued job would go to, when it starts and ends, and when everything is done. Uses the slicer's time estimate (3MF), else past runs of the same name, else 60 min. Running prints count with their remaining time.

queue_cancelA

Remove a queued job. For a job already printing use stop_print.

queue_set_priorityC

Change a queued job's priority.

queue_dispatchA

Start queued jobs on free printers (plate must be confirmed clear). dry_run=true only reports which printer would take each job and why others are rejected.

confirm_plate_clearedA

Tell the scheduler the build plate has been emptied after the last print. Without this the printer is never given a new queued job. If auto_dispatch is on, the queue is dispatched immediately.

get_snapshotB

Capture a live camera frame from the printer.

inspect_printA

Supervision check: live camera frame (plus an older frame for comparison when available), key telemetry, telemetry anomalies and recent events, with guidance for judging whether the print is failing.

get_eventsC

Recent printer events: print started/finished/failed, pauses, HMS errors, anomaly alerts, auto-pauses.

get_historyC

Print history with outcomes and a success summary.

configure_watchB

Configure background supervision. auto_pause: pause on critical anomalies (overtemp, confident vision failure). vision_sampling: ask the client's model to judge each periodic snapshot (needs a client that supports MCP sampling). auto_dispatch: start queued jobs automatically on free, plate-cleared printers.

eject_plateA

Sweep finished parts off the plate with the toolhead (bed slides in Y while the toolhead sits low), then check the plate with the camera. Safe workflow: dry_run=true to inspect the G-code, rehearsal=true to run the path 25 mm higher with nothing touched, then confirm=true for the real sweep. Waits for the bed to cool first. Only runs when the printer is idle/finished, and aborts if a print starts. If the plate is not verified empty automatically, look at the returned image and call confirm_plate_cleared yourself.

save_empty_plate_referenceA

Store the current camera frame as the known-empty plate. Make sure the plate is really empty first; used to verify sweeps.

configure_ejectB

Tune the sweep profile (bed coordinates, mm). Calibrate yStart/yEnd so parts clear the bed edge into your bin, and sweeperWidth to what actually touches the part (bare nozzle is narrow: many passes). Always rehearse after changing.

hms_activeB

Currently active HMS errors on a printer, decoded (text, severity, whether a reprint is advisable).

hms_lookupA

Decode an HMS code (0700_8000_0002_0001 or 16 hex digits) or a print_error (8 hex digits). The built-in table is tiny; load a full one with hms_import.

hms_importA

Import an HMS dictionary from a JSON file: either {"": {"text","severity","retry"}} or a Bambu Studio style hms json (data.device_hms.en[{ecode,intro}]). Saved to ~/.bambu-sentinel/hms.json. retry: retry | human | never controls automatic reprints.

discover_printersA

Find Bambu printers on the local network. First listens for their SSDP announcements (IP, serial, model); if that finds nothing, or when scan='always', it probes every address of the local subnet on the MQTT/TLS port (8883) and reads the printer's certificate. The LAN access code is never broadcast: read it on the printer (Settings > Network) and pass it to add_printer. Only private ranges (192.168.x.x, 10.x.x.x, 172.16-31.x.x) are scanned.

spool_addA

Register a filament spool with its weight so the scheduler can check a job fits and subtract usage after each print. Optionally load it into a printer slot right away.

spool_listB

List spools with remaining grams and where each is loaded; flags the ones that are low.

spool_updateB

Correct a spool (e.g. after weighing it), change its price, or archive it when empty.

spool_assignA

Say which spool is loaded in which printer slot (or unload it with clear=true). Do this whenever you change spools.

check_filamentB

Before queueing: will this sliced file fit on each printer? Checks that matching filament is loaded AND that the spools in those slots hold enough grams.

estimate_costA

What will this sliced file cost to print? Filament (spool price when a spool is loaded in the matching slot, else the per-type price), electricity from the print time and the configured power draw, machine wear, and the expected cost per GOOD part given the historical failure rate.

cost_reportB

Spending over a period from the print history: total cost, money wasted on failed/cancelled prints, grams, energy, average cost per finished print (with and without waste), per printer.

configure_costA

Set the cost model. Electricity price, printer power draw, machine wear per print hour (price / life hours + upkeep), per-print handling cost, and filament prices per kg by type. Costs are computed when a print ends, with the values in force then.

workshop_listA

List workshops (groups of machines) and which machines are in each.

workshop_createC

Create a workshop to group machines.

workshop_updateC

Rename a workshop or change its description.

workshop_deleteA

Delete a workshop. Its machines move to the first remaining workshop. The last workshop cannot be deleted.

machine_assign_workshopC

Move a machine to another workshop.

Prompts

Interactive templates invoked by user choice

NameDescription
supervise_printWatch a running print and react to failures

Resources

Contextual data attached and managed by the client

NameDescription
eventsThe 50 most recent printer events (subscribe to be notified of new ones)
fleetLive status of all printers

TDQS

B3.2/5.0

Scored across 48 tools

Disambiguation4/5

Tools are mostly distinct and organized into clear domain families such as queue_, spool_, hms_, workshop_, and cost_, so an agent can usually select correctly. Minor overlap remains around plate-clearing/ejection (confirm_plate_cleared, save_empty_plate_reference, eject_plate) and monitoring (get_snapshot, inspect_print, get_events), but the descriptions differentiate them well.

Naming Consistency4/5

Names consistently use snake_case with domain prefixes, which makes the set readable and predictable. However, ordering alternates between noun_verb forms like queue_list, printer_status, and hms_active and verb_noun forms like add_printer, set_light, and estimate_cost, so it is not a single uniform pattern.

Tool Count2/5

At 48 tools, this server is far beyond the typical well-scoped range of 3-15 and falls into the 25+ heavy category. Each tool may be useful, but the large surface increases selection burden and would benefit from consolidation or splitting into sub-servers.

Completeness5/5

Coverage is unusually complete across printers, queue management, spool tracking, cost analysis, history, HMS errors, camera supervision, plate ejection, and workshops. Core lifecycle operations and configuration are present, with no obvious missing CRUD or workflow gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues