Skip to main content

Tool Reference

These are the 43 tools your assistant can call. You never call them by hand — you ask in plain language and the assistant picks the tool. This page is here for when you want to know exactly what a tool can do, what it needs, and where it will fail.

The one rule that matters

Every streamer's setup is different. Your assistant should call get_settings before triggering anything by name — commands, alerts, studio scenes, voices, or lights. Names that don't exist in your setup fail.

Both connection methods expose the same tools when they are on the same version. In the tables below, Required parameters must be supplied; everything else is optional.

Discover and read state

Start here. These are all read-only and safe to call at any time.

get_settings

Discovers what you actually have set up. The default summary returns states, counts, and studio scene/theme/animation names; large lists come back as counts only.

ParameterTypeNotes
sectionsummary | commands | alerts | lights | voices | allWhich slice to return. summary gives counts, studio names, and states. The others return one full list.

Clients that read MCP resources can use lumia://settings instead.

get_state

A snapshot of the current stream: streamer name, live status, now-playing song, and heart rate, plus a per-platform breakdown (followers, subscribers, viewers, latest follower/subscriber, live) for every connected platform, alongside cross-platform totals. Platforms with no data are omitted. Takes no parameters.

Lumia's own Stream Mode on/off is not a variable, so the per-platform live flag is the closest live indicator.

get_variable

ParameterTypeNotes
name RequiredstringThe variable name, e.g. twitch_username.

get_variables

ParameterTypeNotes
names Requiredstring[]Variable names to read at once. Returns a name-to-value map.

set_variable

Creates or updates a custom variable that overlays, commands, and custom code can read.

ParameterTypeNotes
name RequiredstringThe variable name, e.g. customVar.
value Requiredstring | number | booleanThe new value.

set_counter

Sets a counter to an exact number. Creates it if it doesn't exist.

ParameterTypeNotes
name RequiredstringThe counter name, e.g. deaths.
value RequirednumberThe exact value to set.

Lights and studio

set_color

Provide exactly one of hex, rgb, or ct.

ParameterTypeNotes
hexstringHex color like #FF4076.
rgb{ r, g, b }Each channel 0-255.
ctnumberColor temperature in kelvin, 2900-7000.
brightnessnumber0-100. Defaults to 100.
transitionnumberFade time in ms. Defaults to 0.
durationnumberHow long the color holds, in ms. Defaults to 4000.
holdbooleanKeep this color as the new default state.

set_studio

ParameterTypeNotes
kind Requiredscene | theme | animationWhich studio item to trigger.
name RequiredstringThe item name, e.g. snow or breathe.
durationnumberMilliseconds, for scenes and themes. Animations currently ignore it.

set_lumia_state

ParameterTypeNotes
action Requiredon | off | toggle | defaulton starts Lumia's light control, off stops it, default resets lights to their default state.

Commands and alerts

trigger_command

ParameterTypeNotes
name RequiredstringMust match a name returned by get_settings.
kindchat-command | chatbot-command | twitch-points | twitch-extensionWhich command list the name belongs to.
holdbooleanSet this command as the new persistent default state.
extraSettingsobjectVariables used inside the command's TTS/chatbot templates, e.g. { "username": "lumia" }.

trigger_alert

Simulates a platform alert, so you can test overlays without waiting for a real event.

ParameterTypeNotes
name RequiredstringThe alert type, e.g. twitch-follower, youtube-superchat, kofi-donation.
extraSettingsobjectVariables for the alert variation and TTS, e.g. { "username": "lumia", "bits": 1000 }.

Every alert's payload shape is documented in the Alerts reference.

manage_chatbot_command

Chatbot commands are unlimited on every plan, so an assistant can create them mid-stream. Names are slugified (lowercase, spaces become dashes). update merges only the fields you pass. delete refuses built-in system commands.

ParameterTypeNotes
action Requiredcreate | update | deleteWhat to do.
name RequiredstringThe command name without the chat prefix, e.g. socials.
messagestringThe chat reply. Required for create. Supports template variables.
descriptionstringInternal description shown in the commands list.
aliasesstring[]Alternate names that also trigger the command.
new_namestringFor update: rename the command.
show_in_commands_listbooleanShow it on your public lumiastream.com commands page.
enabledbooleanDefaults to true on create.
cooldown_secondsnumberCooldown between uses.

set_command_state

ParameterTypeNotes
name RequiredstringThe command or folder name.
enabled Requiredbooleantrue to enable, false to disable.
targetcommand | folderWhat name refers to.
kindchat | chatbot | twitch-points | kick-points | twitch-extensionFor target: command: which list the name belongs to.

Points and extension kinds also sync the platform-side reward state, so disabling a channel-point reward here pauses it on Twitch too.

Actions: the escape hatch

The tools above cover the common cases. run_actions covers everything else.

get_action_catalog

Lists every action run_actions can execute and the exact value shape each expects. Takes no parameters. Call it before building an action list — payloads differ per action and a wrong shape fails silently.

Clients that read MCP resources can use lumia://actions/catalog instead.

run_actions

ParameterTypeNotes
actions Requiredarray of { base, type, value, delay }The actions to run, in order.
extraSettingsobjectTemplate variables available to the actions, e.g. { "username": "lumia" } for {{username}}.

This reaches far more of Lumia than the individual tools: every core Lumia action, every overlay action, outbound HTTP requests, and every connected integration or plugin (Twitch, OBS, Spotify, and so on), plus control-flow steps (delay, conditional, loop, randomGroup, stop).

Each action needs a base naming the system that runs it and a type naming the action. Control-flow steps are type-driven and need no base.

{
"actions": [
{ "base": "lumia", "type": "chatbot", "value": { "message": "Starting in 5!" } },
{ "type": "delay", "delay": 5000 },
{ "base": "lumia", "type": "setColor", "value": { "rgb": { "r": 255, "g": 0, "b": 0 }, "lights": {} } }
]
}
Watch the value convention

Across lumia and overlay actions, value.value is the target or name and value.message is the content or payload — the opposite of what the names suggest. Read the catalog rather than guessing.

run_actions rejects code, writeToFile, and anything under the commandRunner or inputEvents bases, including inside nested branches. To run those, put them in a Lumia command and call trigger_command.

Chat, voice, and moderation

Everything in this group is visible or audible to your viewers.

send_chat_message

ParameterTypeNotes
message RequiredstringThe message text.
platformtwitch | youtube | facebookWhich chat to post to.
as_streamerbooleanPost as yourself instead of the bot account.

Requires the platform to be connected and the Lumia chat bot to be enabled.

speak

ParameterTypeNotes
text RequiredstringThe text to speak.
voicestringA voice id from get_settings (voices section), e.g. Brian.
volumenumber0-100. Windows only.

Speaks through Lumia's TTS engine on your machine. See the TTS docs for voices and queue behavior.

shoutout

ParameterTypeNotes
username RequiredstringThe user to shout out.
platformtwitch | youtube | kickThe platform they're on.

Finds a clip of them if possible, shows it on your overlays, and posts a shoutout in chat.

translate_message

ParameterTypeNotes
message RequiredstringThe message to translate.
language RequiredstringTarget language code, e.g. en, es, fr.
platformtwitch | youtube | facebookWhere to post it.
usernamestringAttribute the message to this user.

moderate_user

ParameterTypeNotes
action Requiredban | unban | timeout | vip | unvipBan/unban/timeout work on Twitch and YouTube. VIP is Twitch only.
username RequiredstringThe target user.
platformtwitch | youtubePlatform.
duration_secondsintegerFor timeout. 600 is 10 minutes. Defaults to 10.
reasonstringFor timeout: the reason shown to the user.

delete_message

ParameterTypeNotes
message_id RequiredstringThe id of the message to delete.
platformtwitch | youtubePlatform.

clear_chat

Clears the entire Twitch chat for all viewers. Takes no parameters, and cannot be undone.

pin_message

ParameterTypeNotes
action Requiredpin | unpinPin or unpin.
message_idstringRequired for pin. Omit on unpin to unpin whatever is currently pinned.

manage_moderator

ParameterTypeNotes
action Requiredadd | removeGrant or revoke.
username RequiredstringThe target user.

Twitch only.

Stream management

Most of this group is Twitch-only and requires the channel to be live.

set_stream_info

ParameterTypeNotes
titlestringThe new stream title.
categorystringThe new category, e.g. Just Chatting. Matched by name search on the platform.
platformtwitch | kickYouTube is not supported by this tool.

Provide title, category, or both.

create_clip

Clips the last moments of the live stream. Takes no parameters. The result lands in the twitch_last_clip_id and twitch_last_clip_url variables — read them with get_variable afterwards. Twitch only, while live.

create_stream_marker

ParameterTypeNotes
descriptionstringOptional marker label, e.g. funny moment.

Marks the current broadcast moment for the Twitch Highlighter. Twitch only, while live.

send_announcement

ParameterTypeNotes
message RequiredstringThe announcement text.

Posts a highlighted announcement to Twitch chat.

run_commercial

ParameterTypeNotes
durationintegerAd length in seconds, 30-180.

Twitch serves an ad as close to the requested length as possible. Twitch only, while live, and it respects the channel's ad cooldown.

set_chat_mode

ParameterTypeNotes
mode Requiredslow | subscriber | follower | emoteWhich Twitch chat mode to change.
enabled RequiredbooleanTurn it on or off.
durationintegerSlow mode: seconds between messages (3-120, default 30). Follower mode: minimum follow age in minutes (0-129600, default 0). Ignored otherwise.

create_poll / end_poll

create_poll:

ParameterTypeNotes
title RequiredstringThe poll question.
choices Requiredstring[]2-5 choices, 25 characters max each. Titles must not contain commas.
durationintegerSeconds, 15-1800.

The poll id lands in twitch_current_poll_id.

end_poll:

ParameterTypeNotes
statusARCHIVED | TERMINATEDARCHIVED ends the poll and hides it. TERMINATED ends it early but leaves the result publicly visible.

end_poll only finds polls that Lumia created.

create_prediction / end_prediction

create_prediction:

ParameterTypeNotes
title RequiredstringThe prediction question.
outcomes Requiredstring[]2-10 outcomes, 25 characters max each. Titles must not contain commas.
durationintegerVoting window in seconds, 30-1800.

end_prediction:

ParameterTypeNotes
winning_outcomestringThe winning outcome title, matched case-insensitively. Required when resolving.
statusRESOLVED | CANCELEDRESOLVED pays out. CANCELED refunds everyone.

Only works for predictions Lumia created in the current app session.

control_song_request

ParameterTypeNotes
action Requiredadd | skip | play | pause | remove | clearWhat to do.
querystringFor add: a search query or a Spotify link.
song_request_idstringFor remove: a specific request. Omit to remove the most recent.
usernamestringFor add: who to attribute the song to.
platformstringFor add: the requester's platform, e.g. twitch.

Plays through your configured source — Spotify or a song-source plugin. play and pause work where the source supports them.

get_loyalty_points / loyalty_points

get_loyalty_points reads a balance; loyalty_points changes it.

ParameterTypeNotes
username RequiredstringThe viewer.
amount Required (loyalty_points only)numberPoints to add. Use a negative number to remove.
platformtwitch | youtube | facebook | kick | tiktokThe viewer's platform.

Overlays, session, and effects

control_overlay

ParameterTypeNotes
action Requiredvisibility | layer-visibility | layer-position | layer-size | contentWhat to change.
target RequiredstringOverlay name or uuid for visibility; layer id for the layer actions. Both are in Lumia's overlay settings.
visiblebooleanFor visibility and layer-visibility.
x, ynumberFor layer-position.
width, heightnumberFor layer-size, in pixels.
contentstringFor content: the new value.

set_stream_mode

ParameterTypeNotes
mode Requiredon | off | toggleLumia Stream Mode.

control_queue

ParameterTypeNotes
action Requiredpause | resume | clear | clear-cooldownsControls the alert/effect queue, or clears all command cooldowns.

control_fuze

ParameterTypeNotes
action Requiredstart | stop | toggle | sensitivityFuze action.
sensitivitynumberFor sensitivity. Below 100 makes it less sensitive.

Real-time events

These are what let an assistant react to your stream instead of just controlling it.

get_recent_events

ParameterTypeNotes
typestringSubstring match on event type or alert name, e.g. follow, chat, sub, bits, raid, donation.
originstringFilter by platform, e.g. twitch.
limitnumberMax events, most recent last. Defaults to 20.

wait_for_event

Blocks until the next matching event arrives, then returns it.

ParameterTypeNotes
typestringOnly resolve on this event type or alert name.
originstringOnly resolve on this platform.
timeout_secondsnumberDefaults to 30, maximum 300. Returns a timedOut result if nothing arrives.
note

Both tools only see events received after the MCP server's event stream starts. If nothing is buffered yet, check the returned status.connected.

Prompts

The server also ships ready-made routines. Most clients expose these as slash commands:

PromptWhat it does
start_streamOpening sequence: lights, scene, and a chat greeting.
brbSwitches to a break state.
hypeCelebration effects.
wind_downEnd-of-stream sequence.
thank_new_followersReads recent follows and thanks them by name.

Safety and platform notes

Some tools have public or destructive effects. For production streams, tell your assistant to ask before using anything that posts publicly, moderates users, runs ads, ends polls or predictions, clears chat, or deletes messages.

AreaWhat to know
Public chat and voicesend_chat_message, speak, shoutout, translate_message, and send_announcement are immediately visible or audible to viewers.
Moderationmoderate_user, delete_message, clear_chat, pin_message, and manage_moderator require the connected account to have permission.
Twitch-only, live-onlyClips, stream markers, commercials, polls, and predictions need the Twitch channel to be live. Announcements, chat modes, clear chat, pinned messages, and moderator management also target Twitch.
Stream infoset_stream_info supports Twitch and Kick. YouTube is not supported.
Arbitrary coderun_actions rejects code, writeToFile, commandRunner, and inputEvents, including inside nested branches. Wrap those in a Lumia command and use trigger_command.
Chat bot dependencysend_chat_message needs the platform connected and the Lumia chat bot enabled.
Session-scopedend_poll and end_prediction only target polls and predictions Lumia created and can still identify this session.

Next steps