Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OBS_HOSTNoThe hostname of the OBS WebSocket serverlocalhost
OBS_PORTNoThe port of the OBS WebSocket server4455
OBS_PASSWORDNoThe password for the OBS WebSocket server (if set)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_scene_collection_listA

List all scene collections and the currently active one.

set_current_scene_collectionA

Switch to a scene collection by name. Blocks until the switch completes.

create_scene_collectionA

Create a new scene collection and switch to it.

get_profile_listA

List all profiles and the currently active one.

set_current_profileB

Switch to a profile by name.

create_profileA

Create a new profile and switch to it.

remove_profileA

Remove a profile. If it's the active one, OBS switches away first.

get_profile_parameterA

Read a raw parameter from the current profile's .ini configuration.

Args: category: Config category, e.g. "Output". name: Parameter name within that category.

set_profile_parameterA

Write a raw parameter into the current profile's .ini configuration. Advanced/low-level — prefer a dedicated request when one exists.

Args: category: Config category, e.g. "Output". name: Parameter name within that category. value: New value, or None to delete the parameter.

get_video_settingsA

Current canvas/output resolution and FPS (as a fraction — divide fpsNumerator by fpsDenominator for the true FPS).

set_video_settingsA

Change canvas/output resolution and/or FPS. Width/height fields must be set in pairs (can't change baseWidth without baseHeight, etc). Range 1-4096 for all resolution fields.

get_stream_service_settingsB

Current stream destination service type and settings (server/key etc).

set_stream_service_settingsA

Set the stream destination. For a plain custom RTMP target, use service_type="rtmp_custom" and settings={"server": "...", "key": "..."}.

Args: service_type: e.g. "rtmp_custom" or "rtmp_common". settings: Service-specific settings object.

get_record_directoryA

Current output directory for recordings.

set_record_directoryA

Set the output directory recordings are written to.

Args: path: Absolute directory path.

get_source_filter_kind_listA

List every filter kind this OBS install supports (noise_suppress_filter, noise_gate_filter, compressor_filter, color_filter, chroma_key_filter, etc).

get_source_filter_listA

List all filters on a source (input or scene), in chain order.

Args: source_name: Name of the source.

get_source_filter_default_settingsD

Default settings object for a filter kind.

create_source_filterA

Add a new filter to a source.

Args: source_name: Name of the source to add the filter to. filter_name: Name for the new filter. filter_kind: Filter kind (see get_source_filter_kind_list). filter_settings: Optional initial settings.

remove_source_filterB

Remove a filter from a source.

set_source_filter_nameC

Rename a filter.

get_source_filterB

Get a filter's enabled state, chain index, kind, and settings.

set_source_filter_indexA

Reorder a filter within a source's filter chain.

Args: source_name: Name of the source. filter_name: Name of the filter to move. filter_index: New position, >= 0 (0 = first in chain).

set_source_filter_settingsA

Configure a filter's parameters.

Args: source_name: Name of the source. filter_name: Name of the filter. filter_settings: Settings object. overlay: True = merge on top of current settings, False = reset to defaults first.

set_source_filter_enabledB

Enable or disable a filter without removing it.

get_versionA

OBS/obs-websocket version info, platform, and the full list of requests available on this connection (availableRequests).

get_statsA

Live perf stats: CPU/memory usage, active FPS, render/output skipped frames, disk space. Use to check for dropped-frame problems mid-stream.

broadcast_custom_eventA

Broadcast a CustomEvent to all subscribed obs-websocket clients.

Args: event_data: Arbitrary JSON payload delivered to receivers.

call_vendor_requestC

Call a request registered by a third-party OBS plugin/script vendor.

Args: vendor_name: Unique vendor name registered by the plugin. request_type: The vendor's request type to call. request_data: Optional payload for the vendor request.

get_hotkey_listA

List all hotkey names in OBS. Best-effort — hotkey requests are less reliable than dedicated requests when one exists for the same action.

trigger_hotkey_by_nameA

Trigger a hotkey by its name (see get_hotkey_list).

Args: hotkey_name: Name of the hotkey to trigger. context_name: Optional hotkey context name.

trigger_hotkey_by_key_sequenceC

Trigger a hotkey by simulating a key press + modifiers.

Args: key_id: OBS key ID (see obs-studio's obs-hotkeys.h for the list). shift/control/alt/command: Modifier keys to hold.

get_persistent_dataC

Get a value from an OBS persistent-data "slot".

Args: realm: "OBS_WEBSOCKET_DATA_REALM_GLOBAL" or "OBS_WEBSOCKET_DATA_REALM_PROFILE". slot_name: Name of the slot to read.

set_persistent_dataA

Set a value in an OBS persistent-data "slot" — useful for storing state the AI needs to remember across tool calls (e.g. giveaway winners).

Args: realm: "OBS_WEBSOCKET_DATA_REALM_GLOBAL" or "OBS_WEBSOCKET_DATA_REALM_PROFILE". slot_name: Name of the slot to write. slot_value: Any JSON-serializable value.

get_input_listA

List all inputs (sources like mic, capture card, browser source, etc).

Args: input_kind: Optional — restrict to one kind (see get_input_kind_list).

get_input_kind_listA

List every input kind (source type) this OBS install can create.

get_special_inputsA

Names of the built-in special audio inputs: Desktop Audio 1/2, Mic/Aux 1-4. Use these names to control the default audio channels.

create_inputA

Create a new input and add it as a scene item to a scene.

Args: input_name: Name for the new input. input_kind: Kind of input to create (see get_input_kind_list). scene_name: Scene to add it to. input_settings: Optional initial settings object. scene_item_enabled: Whether the new scene item starts visible.

remove_inputA

Delete an input. Removes all its scene items too.

Args: input_name: Name of the input to remove.

set_input_nameB

Rename an input.

Args: input_name: Current name. new_input_name: New name.

get_input_default_settingsA

Default settings object for an input kind — overlay get_input_settings on top of this to reconstruct the full effective settings.

get_input_settingsB

Current (non-default) settings of an input, plus its kind.

Args: input_name: Name of the input.

set_input_settingsA

Set an input's settings.

Args: input_name: Name of the input. input_settings: Settings object to apply. overlay: True = merge on top of current settings, False = reset to defaults first then apply.

get_input_muteB

Get an input's mute state.

set_input_muteC

Mute or unmute an input.

toggle_input_muteC

Toggle an input's mute state.

get_input_volumeA

Get an input's volume as both a linear multiplier and dB.

set_input_volumeA

Set an input's volume — pass exactly one of volume_db or volume_mul.

Args: input_name: Name of the input. volume_db: Volume in dB, range -100..26. volume_mul: Volume as a linear multiplier, range 0..20.

get_input_audio_balanceA

Get an input's stereo balance (0.0 full left .. 1.0 full right, 0.5 center).

set_input_audio_balanceA

Set an input's stereo balance.

Args: input_name: Name of the input. balance: 0.0 (full left) to 1.0 (full right), 0.5 = center.

get_input_audio_sync_offsetA

Get an input's audio sync offset in milliseconds (can be negative).

set_input_audio_sync_offsetA

Set an input's audio sync offset — use to fix audio/video drift.

Args: input_name: Name of the input. offset_ms: Offset in milliseconds, range -950..20000.

get_input_audio_monitor_typeA

Get an input's monitoring mode (none / monitor-only / monitor-and-output).

set_input_audio_monitor_typeA

Set an input's monitoring mode.

Args: input_name: Name of the input. monitor_type: One of OBS_MONITORING_TYPE_NONE, OBS_MONITORING_TYPE_MONITOR_ONLY, OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT.

get_input_audio_tracksB

Get which of the 6 audio mixer tracks this input is routed to.

set_input_audio_tracksA

Set which audio mixer tracks an input is routed to.

Args: input_name: Name of the input. audio_tracks: Object like {"1": true, "2": false, ...} for tracks 1-6.

get_input_deinterlace_modeA

Get an input's deinterlace mode. Async inputs only (capture cards, etc).

set_input_deinterlace_modeA

Set an input's deinterlace mode.

Args: input_name: Name of the input. mode: One of OBS_DEINTERLACE_MODE_DISABLE, _DISCARD, _RETRO, _BLEND, _BLEND_2X, _LINEAR, _LINEAR_2X, _YADIF, _YADIF_2X.

get_input_deinterlace_field_orderA

Get an input's deinterlace field order. Async inputs only.

set_input_deinterlace_field_orderA

Set an input's deinterlace field order.

Args: input_name: Name of the input. field_order: OBS_DEINTERLACE_FIELD_ORDER_TOP or _BOTTOM.

get_input_properties_list_property_itemsA

Get the items of a dynamic list property on an input — e.g. the available displays for a display-capture source.

Args: input_name: Name of the input. property_name: Name of the list property.

press_input_properties_buttonA

Press a button in an input's properties — e.g. "refreshnocache" to reload a browser source.

Args: input_name: Name of the input. property_name: Name of the button property to press.

get_media_input_statusB

Playback state (playing/paused/stopped/buffering/ended/error), duration, and cursor position of a media source.

set_media_input_cursorA

Seek a media source to an absolute position. No bounds checking.

Args: input_name: Name of the media input. cursor_ms: Position in milliseconds.

offset_media_input_cursorA

Seek a media source relative to its current position. No bounds checking.

Args: input_name: Name of the media input. offset_ms: Milliseconds to offset by (negative = seek backward).

trigger_media_input_actionA

Trigger a transport action on a media source.

Args: input_name: Name of the media input. action: One of OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY, _PAUSE, _STOP, _RESTART, _NEXT, _PREVIOUS.

get_virtual_cam_statusB

Whether the virtual camera output is active.

toggle_virtual_camB

Toggle the virtual camera on/off.

start_virtual_camB

Start the virtual camera.

stop_virtual_camA

Stop the virtual camera.

get_replay_buffer_statusB

Whether the replay buffer is active.

toggle_replay_bufferA

Toggle the replay buffer on/off.

start_replay_bufferB

Start the replay buffer.

stop_replay_bufferA

Stop the replay buffer.

save_replay_bufferA

Save the last N seconds from the replay buffer to disk — the "instant replay" clip-save action.

get_last_replay_buffer_replayB

File path of the last replay buffer save.

get_output_listA

List every registered OBS output (stream, record, virtualcam, replay buffer, and any plugin-added outputs).

get_output_statusA

Detailed status of a named output: active/reconnecting, timecode, duration, congestion, bytes sent, frame counts.

toggle_outputB

Toggle a named output on/off.

start_outputC

Start a named output.

stop_outputB

Stop a named output.

get_output_settingsC

Get a named output's settings object.

set_output_settingsB

Set a named output's settings object.

clean_audio_inputA

Set up a standard mic-cleanup filter chain in one call: Noise Gate -> Noise Suppression -> Compressor, in that order (order matters — gate first cuts room noise between words, suppression reduces steady background hiss while you're talking, compressor evens out what's left).

Skips any filter kind that already exists on the input by that name instead of duplicating it. Removing a stage later is a normal remove_source_filter call — this only handles the one-shot setup.

Args: input_name: Name of the mic/audio input to clean up. gate/suppression/compressor: Which stages to add (all on by default). gate_open_threshold_db: Gate opens above this level. Should sit slightly below your voice level. Default -26 dB. gate_close_threshold_db: Gate closes below this level. Should sit above the room's noise floor, 5-8 dB below open threshold. Default -32 dB. suppression_method: "rnnoise" (better quality, default) or "speex" (lighter weight, older). compressor_ratio: Compression ratio, 1.0-32.0. Default 3.0 (gentle). compressor_threshold_db: Level compression kicks in at, -60..0 dB. Default -18 dB.

diagnose_av_healthA

Diagnose why a stream/recording might be dropping frames or stuttering — pulls GetStats + GetStreamStatus + GetRecordStatus in one call and interprets the ratios instead of leaving the AI to fetch three things and do the arithmetic itself.

The three numbers that actually matter, and what each one means:

  • renderSkippedFrames/renderTotalFrames high: OBS's render thread can't keep up with your scene (too many sources/filters, canvas resolution too high, or GPU-bound). Fix: lower canvas resolution, cut filters, simplify the scene.

  • outputSkippedFrames/outputTotalFrames high with LOW congestion: encoding can't keep up (CPU/GPU encoder overloaded). Fix: switch to a hardware encoder (NVENC/AMF/QSV), lower the encoder preset, or lower output resolution/fps.

  • outputCongestion high: the network can't keep up with your bitrate. Fix: lower bitrate, check upload speed.

These thresholds are heuristics, not authoritative OBS cutoffs — a few skipped frames right after starting a stream is normal; this flags sustained skip ratios worth investigating, not noise.

get_scene_item_listA

List every scene item (placed source) in a scene.

get_group_scene_item_listA

Like get_scene_item_list, but for a group (OBS groups are broken under the hood — prefer nested scenes over groups where possible).

get_scene_item_idA

Find a scene item's numeric ID by the source name it references.

Args: scene_name: Scene or group to search. source_name: Name of the source to find. search_offset: Matches to skip. -1 = last (topmost) match.

get_scene_item_sourceB

Get the source name/UUID a scene item references.

create_scene_itemA

Add an existing source to a scene as a new scene item.

Args: scene_name: Scene to add the item to. source_name: Existing source (input) to place. scene_item_enabled: Whether it starts visible.

remove_scene_itemA

Remove a scene item from a scene (does not delete the underlying source).

duplicate_scene_itemA

Duplicate a scene item, copying its transform/crop, optionally into a different scene.

Args: scene_name: Scene the item is currently in. scene_item_id: Numeric ID of the item to duplicate. destination_scene_name: Target scene; defaults to the source scene.

get_scene_item_transformC

Get a scene item's position, scale, rotation, and crop.

set_scene_item_transformA

Set a scene item's position/scale/rotation/crop.

Args: scene_name: Scene the item is in. scene_item_id: Numeric ID of the item. transform: Object with any of positionX/positionY, rotation, scaleX/scaleY, alignment, boundsType/boundsAlignment/ boundsWidth/boundsHeight, cropLeft/Right/Top/Bottom.

get_scene_item_enabledA

Get whether a scene item is currently visible (shown/hidden, not mute).

set_scene_item_enabledA

Show or hide a scene item.

Args: scene_name: Scene the item is in. scene_item_id: Numeric ID of the item. enabled: True = visible, False = hidden.

get_scene_item_lockedA

Get a scene item's lock state (locked items can't be moved/resized in the UI).

set_scene_item_lockedB

Lock or unlock a scene item.

get_scene_item_indexA

Get a scene item's stacking position (0 = bottom of the source list).

set_scene_item_indexA

Reorder a scene item's stacking position (z-order).

Args: scene_name: Scene the item is in. scene_item_id: Numeric ID of the item. index: New position, >= 0 (0 = bottom of the source list).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xDarkzx/OBS_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server