halo-light
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HUE_APP_KEY | No | Application key for the Hue bridge. Can be obtained via pairing (`halo-light pair`) and stored in the config file instead of being passed as an environment variable. | |
| HUE_BEAT_PATH | No | Path to the external hue_beat.py script for the optional hue_beat extension. | |
| HUE_BRIDGE_IP | No | IP address of the Hue bridge. If omitted, the bridge is discovered via discovery.meethue.com, then mDNS if zeroconf is installed. | |
| HALO_LIGHT_CONFIG | No | Alternative path to the halo-light configuration file. | |
| HUE_BEAT_PID_FILE | No | PID file used by the hue_beat script. Defaults to hue_beat.pid in the system temporary directory. | hue_beat.pid |
| HUE_BEAT_CTRL_FILE | No | Control JSON file used by the hue_beat script. Defaults to hue_beat.ctrl in the system temporary directory. | hue_beat.ctrl |
| HUE_BRIDGE_CA_CERT | No | Path to a PEM file used to verify the bridge certificate. Optional; by default the bridge certificate is not verified (local network). | |
| HUE_BEAT_STATE_FILE | No | State JSON file used by the hue_beat script. Defaults to hue_beat.state.json in the system temporary directory. | hue_beat.state.json |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_all_lightsA | List every light with room, power, brightness (0-100), color and capabilities. |
| get_lightA | Get one light, by id or by name (case and accent insensitive). |
| find_light_by_nameA | Search lights whose name contains the text (case and accent insensitive). |
| get_all_groupsA | List rooms and zones (plus the whole home) with their lights and state. |
| get_groupB | Get one room or zone, by id or by name. |
| get_all_scenesA | List scenes with the room or zone each one belongs to. |
| turn_on_lightB | Turn a light on, by id or by name. |
| turn_off_lightC | Turn a light off, by id or by name. |
| set_brightnessB | Set a light's brightness (0-100, turns it on; 0 turns it off). |
| set_color_rgbC | Set a light's color from RGB components (0-255). |
| set_colorB | Set a light's color by name (rouge, bleu, orange, ...) or hex (#rrggbb). |
| set_color_xyC | Set a light's color from CIE 1931 xy coordinates (0-1). |
| set_color_temperatureB | Set a light's white color temperature in Kelvin (about 2000 warm to 6500 cool). |
| set_color_presetC | Apply a named preset to a light: warm, cool, daylight, concentration, relax, reading, energize, red, green, blue, purple, orange. |
| set_light_effectA | Set a dynamic effect on a light: none, candle, fire, prism, sparkle, opal, glisten, underwater, cosmos, sunbeam, enchant. |
| alert_lightB | Make a light flash briefly so it can be identified. |
| turn_on_groupC | Turn on a room or zone, by id or by name. |
| turn_off_groupC | Turn off a room or zone, by id or by name. |
| set_group_brightnessA | Set the brightness (0-100, turns it on; 0 turns it off) of a room or zone. |
| set_group_color_rgbB | Set the color of a room or zone from RGB components (0-255). |
| set_group_colorB | Set the color of a room or zone by name (rouge, bleu, ...) or hex (#rrggbb). |
| set_group_color_temperatureB | Set the white color temperature (Kelvin) of a room or zone. |
| set_group_color_presetB | Apply a named preset to a room or zone: warm, cool, daylight, concentration, relax, reading, energize, red, green, blue, purple, orange. |
| activate_scene_by_nameA | Activate a scene by name (case and accent insensitive), in the room it belongs to. If several rooms have a scene with that name, the error lists them: pass group_name (or group_id) to pick one. |
| set_sceneA | Activate a scene by id. group_id, if given, must be the scene's own room or zone. |
| hue_beat_startA | Start the external hue_beat audio sync (optional extension, needs HUE_BEAT_PATH). While it runs, REST commands on the lights of its entertainment area may be ignored. mode: pulse | ambiant. palette: ironman | fire | neon | cool | sunset | arctic | auto. |
| hue_beat_stopB | Stop hue_beat (optional extension). |
| hue_beat_statusA | Report whether hue_beat is running, with mode, palette and BPM (optional extension). |
| hue_beat_setB | Change hue_beat settings live. Empty or -1 means unchanged. brightness 0.1-1.0 (peak on beats), floor 0.0-0.9 (ambient level between beats), sensitivity 0.5-3.0 (beat detection multiplier). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 29 tools
The light-vs-group parallel families (set_brightness/set_group_brightness, set_color_rgb/set_group_color_rgb, turn_on_light/turn_on_group) are clearly scoped by target resource, and the color tools are distinguished by input format (RGB, xy, Kelvin, name/hex, preset). A few pairs genuinely overlap: get_light already accepts a name so find_light_by_name is nearly redundant, and set_scene vs activate_scene_by_name do the same thing via different keys.
Most names follow verb_noun_qualifier, but the resource token is applied unevenly: set_brightness and set_color omit 'light' while set_group_brightness names 'group', and some tools put the resource first (alert_light, set_light_effect) instead of the verb. Scene activation uses two different verb schemes (set_scene vs activate_scene_by_name).
At 29 tools the surface is heavy, and much of the bulk is mechanical duplication: every light operation is mirrored for groups, and five separate color tools exist for one light plus four for groups. Several entries (find_light_by_name, activate_scene_by_name, the three hue_beat tools) could be collapsed into existing tools or optional parameters.
The lighting-control domain is well covered: enumeration and lookup for lights, rooms, zones and scenes, power/brightness/color/effects/alerts, plus an optional audio-sync extension. Gaps are minor but real — effects and alerts exist only per light, not per room/zone, and there is no group-level effect or group-scene listing operation.