v2.6.0 — Palette (multi-group color/Kelvin in one call)
Highlights
palette(assignments) — assign different colors or Kelvin values to different groups in a single round trip. The "set the room" primitive.
palette({
"key-lights": 3200, # Kelvin: tungsten
"fill-lights": 5600, # Kelvin: daylight
"back-lights": "magenta" # color preset
})
Three-point lighting in one tool call. Closes #7. MCP catalog grows from 32 → 33.
Why this exists when batch_action already does the job
Functionally equivalent to wrapping batch_action around three color_temperature / adjust_color calls — the win is ergonomics. Agents tend to think "here's my palette" as one unit, not as a sequence of independent color tweaks. And it matches how lighting designers actually talk.
Accepted value shapes per group
| Shape | Meaning |
|---|---|
"warm" |
Color preset name |
3200 |
Kelvin number |
"5600K" |
Kelvin with K suffix |
{"color": "warm", "intensity": "70%"} |
Explicit color + intensity |
{"kelvin": 3200, "intensity": "50%"} |
Explicit Kelvin + intensity |
{"k": 3200} |
Short-key Kelvin |
Numbers in 1000–40000 are interpreted as Kelvin; everything else as a color preset name.
Partial failure friendly
Each group is dispatched independently. If one group's value is unparseable, the others still apply. The response carries per-group results so agents can react to partial success:
{
"success": true,
"applied_to": 3,
"successful": 3,
"groups": {
"key-lights": { "success": true, "strategy": "color_temperature", "kelvin": 3200 },
"fill-lights": { "success": true, "strategy": "color_temperature", "kelvin": 5600 },
"back-lights": { "success": true, "strategy": "color_preset", "color": "magenta" }
}
}Behavior note
Palette intentionally ignores the top-level groups argument on /api/action. The assignments dict's keys are the targets. Accepting groups would create ambiguity (does it filter? intersect?) so we explicitly don't.
Composability
batch_action([create_group(...), palette(...)])— build groups then immediately set thempalette(...) → snapshot_scene(...)— save the resulting look as a named scene
Upgrade
git pull
./lightsctl.sh control-restart # picks up the new action
./lightsctl.sh mcp-restart # picks up the new MCP toolNo package dependency changes.
Documentation
docs/MCP_SERVER.md— palette added to action tabledocs/CONTROL_SERVER_ARCHITECTURE.md— valid actions list updated + behavior notemcp-server/README.md+ rootREADME.md— refreshed- Wiki
MCP-Server.mdupdated - Marketing site: CueSheet cue 003 demonstrates three-point palette, AiConversation uses palette with mixed Kelvin + color values, new FAQ entry on three-point lighting, tool catalog renders 33
Tier 2 status
After this lands, three of four Tier 2 items are complete (#6, #7, plus the diagnostics surface from #9 which was Tier 3 but shipped early).
- #4 — Chases / sequence support (biggest single capability unlock — the time-based programming axis)
- #5 — First-class
strobeaction (small polish — agents currently have to useset_channelwith magic offsets)