tiktok-live-studio-mcp
Provides tools to control TikTok LIVE Studio, allowing MCP clients to manage scenes, sources, audio, microphone, recording, actions, and LIVE state.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tiktok-live-studio-mcpCheck whether TikTok LIVE Studio is connected and list my scenes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TikTok LIVE Studio MCP
A local Model Context Protocol server for Windows that lets Codex, Claude Code, Claude Desktop, and other stdio MCP clients control TikTok LIVE Studio through its localhost Stream Deck Socket.IO channel.
The server does not use mouse automation, OCR, browser automation, or screen coordinates. It discovers the running LIVE Studio process and its owned port, validates the protocol, acknowledges each action, and verifies readable state changes.
Community project. Not affiliated with TikTok, ByteDance, Elgato, Anthropic, or OpenAI.
Features
Twelve typed MCP tools for status, scenes, sources, audio, microphone, recording, actions, and LIVE control.
Official MCP TypeScript SDK with stdio transport.
Windows process, installed-version, and process-owned port discovery.
Automatic rediscovery when LIVE Studio restarts on a different port.
Idempotent scene/source/audio/microphone/recording/LIVE operations.
Action-result validation plus post-action state verification.
Cross-process mutation lock for multiple locally configured MCP clients.
Structured error contract and compact JSONL evidence logs.
Mock Socket.IO, MCP contract, real safe integration, opt-in full integration, built stdio, packaging, and release gates.
Related MCP server: computer-use-windows
Requirements
Windows 10 or Windows 11.
Node.js 20 or newer.
TikTok LIVE Studio installed. Start it before running doctor or real integration checks.
Quick start
git clone https://github.com/dannguyen9x/tiktok-live-studio-mcp.git
cd tiktok-live-studio-mcp
npm.cmd ci
npm.cmd run build
npm.cmd run doctor
npm.cmd run mcp:smokeThen connect your MCP client using the client setup guide. For a complete walkthrough, safety model, examples, updates, and uninstall steps, read the full user guide or Vietnamese user guide.
Run the server directly:
npm.cmd startMCP uses stdout, so ordinary runtime logs are written to artifacts/evidence/runtime.jsonl rather than stdout.
MCP client configuration
Copy the relevant example and replace C:/path/to/tiktok-live-studio-mcp with the absolute clone path:
.mcp.json.exampleconfig/claude-desktop.example.jsonconfig/claude-code.example.jsonconfig/codex.example.toml
The common stdio configuration is:
{
"mcpServers": {
"tiktok-live-studio": {
"command": "node",
"args": [
"C:/path/to/tiktok-live-studio-mcp/dist/src/index.js"
],
"env": {
"TTLS_LOG_PATH": "C:/path/to/tiktok-live-studio-mcp/artifacts/evidence/runtime.jsonl"
}
}
}
}Restart the MCP client after changing its configuration.
For current Codex and Claude Code CLI commands, Claude Desktop configuration, generic-client setup, and verification steps, see docs/CLIENT_SETUP.md.
Example requests
Once the server is connected, ask your MCP client naturally:
Check whether TikTok LIVE Studio is connected and list my scenes.
Switch LIVE Studio to the exact scene "Gameplay".
Hide source "Starting Soon" in scene "Gameplay".
Mute the microphone in LIVE Studio.
Start a local recording, but do not start LIVE.For LIVE state changes, explicitly authorize the dedicated tool call:
Start LIVE using studio_start_live with confirm set to true.Always review account, audience, scene, audio, and recording state before authorizing a LIVE action.
Tools
Tool | Behavior |
| Read running, connected, app version, endpoint, active scene, recording state, and LIVE state. |
| List scenes and the active scene. |
| Idempotently switch to an exact scene and verify it. |
| List source names, internal IDs, and visibility for the active or named scene. |
| Set source visibility without a blind toggle; temporarily switches/restores scene when required. |
| Idempotently set and verify aggregate microphone mute. |
| Idempotently set and verify desktop/audio-output mute. |
| Start recording only when stopped and verify the state. |
| Stop recording only when active and verify the state. |
| Trigger a verified parameterless Stream Deck action and require LIVE Studio acknowledgement. |
| Require |
| Require |
The generic action enum contains live-pause, highlight, recording-gallery, co-host, treasure-box, say-hi, guess-game, play-together, goody-bag, team, game-rewards, live-goal, multi-guest, vote, promote, and viewer-wishes.
Some generic actions are conditional. LIVE Studio returns result code -1 when the verified action exists but the current account, LIVE state, eligibility, or panel state does not permit it. The MCP tool returns that as a structured ACTION_FAILED result rather than pretending the action succeeded.
Verified local protocol
Field | Value |
Endpoint |
|
Socket.IO path |
|
Namespace |
|
Transport |
|
WebSocket subprotocol |
|
Join |
|
State |
|
Action |
|
Action result |
|
The contract was verified against LIVE Studio 1.33.2. See docs/PROTOCOL.md for payloads, status values, action IDs, and evidence provenance.
Reliability and safety model
Every mutation acquires
%TEMP%\tiktok-live-studio-mcp.mutation.lock, reads current state, emits at most one action, verifies readable state, and releases the lock.A crashed lock owner is detected by PID and recovered.
Source operations restore the original scene in
finally.Toggle-like mutations are never automatically retried after an uncertain result.
LIVE start/end requires literal
confirm:true.Disconnects trigger process and port rediscovery rather than retrying forever against a stale endpoint.
Malformed settings or action responses produce
PROTOCOL_MISMATCH.
Every tool error contains:
code, message, operation, appVersion, endpoint, socketEvent,
attempt, suggestedFix, evidencePathTests
CI-safe checks:
npm.cmd run test:ciSafe real integration with LIVE Studio open:
npm.cmd run doctor
npm.cmd run test:integration
npm.cmd run mcp:smoke
npm.cmd run smokeThe safe real suite switches/restores a scene, changes/restores source visibility, and changes/restores microphone mute. It never starts LIVE.
For a deliberately opt-in real audio, recording, LIVE, and generic-action gate, read docs/FULL_INTEGRATION.md. It requires explicit environment confirmations and writes a restoration report.
Full local release evidence:
npm.cmd run verify:finalSee docs/VERIFICATION.md for what each gate proves.
Protocol research
npm.cmd run protocol:researchThis executes npm view ttls-controller --json, downloads the published package with npm pack ttls-controller, records official Elgato Marketplace metadata, and hashes protocol-bearing files from the installed LIVE Studio version. Generated machine-specific evidence is excluded from Git; see artifacts/README.md.
Project layout
src/mcp/ MCP server and schemas
src/domain/ state policy, errors, mutation lock
src/adapters/ttls/ Socket.IO protocol adapter
src/discovery/ Windows process/version/port discovery
src/logging/ structured JSONL logging
tests/unit/ mock Socket.IO and domain tests
tests/contract/ MCP and protocol contract tests
tests/integration/ safe real LIVE Studio integration
scripts/ doctor, smoke, research, full and release gates
docs/ protocol, architecture, and verification guidesContributing and security
Read CONTRIBUTING.md before submitting a change. Report vulnerabilities through GitHub private vulnerability reporting as described in SECURITY.md. Do not publish raw evidence logs, credentials, recordings, account data, or proprietary LIVE Studio bundles.
Documentation
License
MIT. See LICENSE.
Available Tools
12 toolsstudio_get_statusGet TikTok LIVE Studio statusA
Read process, Socket.IO connection, scene, recording, and LIVE state without changing Studio.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and explicitly discloses the key behavioral trait: it does not change Studio state. It could further explain error handling or return format, but for a simple status read it adequately conveys the side-effect-free nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the verb 'Read' and listing the exact state categories. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and no output schema. The description fully enumerates the status areas and clarifies non-mutation, which is sufficient for an agent to understand the tool's purpose and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters, and the empty schema already provides complete coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Read' and specifies a clear resource scope: process, Socket.IO connection, scene, recording, and LIVE state. This distinguishes it from sibling tools that mutate Studio state (switch, set, start, stop).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without changing Studio' establishes a clear read-only context, implying it should be used for observation rather than modification. However, it does not explicitly name alternative tools or state when not to use it, so it lacks a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_list_scenesList LIVE Studio scenesA
List scenes and the active scene from verified sync_settings state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not explicitly state that the operation is read-only or side-effect free, nor does it mention permissions, rate limits, or return format. The verb 'list' implies reads, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and object. Every word earns its place, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema), the description covers the essential what and from-where. It states it lists scenes and the active scene, which describes the returned information. However, it could be slightly more explicit about return structure (e.g., whether scenes are named or identifiers), but it is adequate for a basic list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and it adds no irrelevant parameter information. The focus on output (scenes and active scene) is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'scenes' and 'active scene', clearly distinguishing it from siblings like 'studio_switch_scene' (switching) and 'studio_list_sources' (sources). The phrase 'from verified sync_settings state' adds context without confusing the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool compared to alternatives. It does not mention when to prefer this over studio_get_status or how it relates to switching scenes. The usage context is entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_list_sourcesList scene sourcesA
List source names, IDs, and visibility for the active or named scene.
| Name | Required | Description | Default |
|---|---|---|---|
| sceneName | No | Optional exact scene name; defaults to the active scene. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what is listed (names, IDs, visibility) but does not disclose whether the operation is read-only, what happens if the named scene does not exist, or how the active scene is determined. It also doesn't mention any potential errors or side effects, which is a significant gap for a tool with zero annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that leads with the action ('List') and resource ('source names, IDs, and visibility'), followed by the context ('active or named scene'). Every word earns its place—there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one optional parameter and no output schema, the description adequately communicates the core function and default behavior. It falls slightly short of a 5 because it doesn't explicitly state the return format (e.g., that it returns an array of source objects), though the listed items imply it. Given the low complexity, this is near-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of the single parameter 'sceneName' with an explicit description of its optionality and default behavior. The tool description adds no additional parameter meaning beyond what the schema already contains, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'List' and the resource 'source names, IDs, and visibility' for a scene, clearly distinguishing it from sibling tools like studio_list_scenes (lists scenes) and studio_set_source_visibility (sets visibility). It also specifies the scope ('active or named scene'), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need source metadata for a scene) by mentioning the optional sceneName and default to active scene, but it does not explicitly state when to avoid it or name alternatives. For example, it doesn't say 'use studio_set_source_visibility to change visibility' or 'use studio_list_scenes to enumerate scenes.' Usage is clear from context but not explicitly contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_set_audio_muteSet audio output muteA
Idempotently set and verify the LIVE Studio audio output mute state.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | Yes | Desired mute state. The operation is idempotent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It adds value by noting the operation is idempotent and includes verification. However, it does not describe return values, error conditions, or side effects, leaving some gaps for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action. Every word is meaningful, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one boolean parameter and no output schema, the description is reasonably complete. It covers purpose, idempotency, and verification. It could be more detailed about what 'verify' entails (e.g., return confirmation), but it is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a clear description for 'muted' ('Desired mute state. The operation is idempotent.'). The tool description adds no parameter-specific information, so it does not exceed the baseline expected from high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: idempotently set and verify the mute state for the live studio audio output. It includes a specific verb (set/verify), resource (audio output mute), and scope (LIVE), which distinguishes it from sibling tools like studio_set_microphone_mute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('LIVE Studio audio output mute') but does not explicitly state when to use this tool versus alternatives. It lacks direct mentions of when not to use it or how it differs from sibling tools, though the resource name 'audio output' provides some differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_set_microphone_muteSet microphone muteA
Idempotently set and verify the aggregate LIVE Studio microphone mute state.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | Yes | Desired mute state. The operation is idempotent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It adds behavioral nuance by stating the operation is idempotent and that it verifies the state, which is useful. However, the schema already notes idempotency, and the description omits details like permissions, side effects, or return behavior. The added value is marginal beyond 'verify' and 'aggregate'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and resource. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema) and the description covers its core purpose. However, lacking annotations or an output schema means the description must explain the return or verification behavior more explicitly—'verify' is mentioned but not described, which is a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the 'muted' parameter, so the baseline is 3. The tool description does not add significant parameter-level detail beyond the schema, though 'aggregate' hints at broader scope without specifying parameter syntax or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'set and verify' and the specific resource: the aggregate LIVE Studio microphone mute state. This distinguishes it from sibling tools like studio_set_audio_mute, which likely targets a source's audio mute, by focusing on the microphone and 'aggregate' state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions. The phrase 'aggregate LIVE Studio microphone mute state' implies it affects global microphone muting, but there is no clear context or sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_set_source_visibilitySet source visibilityA
Set, verify, and preserve source visibility without a blind toggle. Restores the original scene when targeting another scene.
| Name | Required | Description | Default |
|---|---|---|---|
| visible | Yes | Desired visibility. The operation is idempotent. | |
| sceneName | No | Optional exact scene name; defaults to the active scene. | |
| sourceName | Yes | Exact source name returned by studio_list_sources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the non-toggling deterministic behavior and the scene-restoration side effect, but it does not mention return values, error handling, or required permissions. This is moderately transparent but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences, front-loaded with the primary action, and every phrase contributes meaning. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key side effect (scene restoration) and the schema handles parameter meanings, but without an output schema, it should explain what the tool returns or how verification is exposed. The lack of return-value/error detail leaves some ambiguity, making it adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description does not add parameter-level detail beyond what the schema provides, though 'targeting another scene' indirectly refers to sceneName.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets and verifies source visibility, with a specific resource (source) and action. It also distinguishes itself from sibling tools like mute controls by focusing on visibility. The phrase 'without a blind toggle' adds specificity without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need to set a source to a specific visible state, and mentions the scene-restoration side effect when targeting another scene. However, it does not explicitly state when to use this tool over alternatives or any exclusions, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_start_liveStart LIVEB
Start LIVE only with confirm:true and only when readable state makes the toggle safe.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be exactly true to authorize the LIVE state change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses a precondition (confirm:true) and a safety condition, but does not explain what happens if the condition fails, what the side effects are, or what 'safe' means. The behavioral transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the critical constraints. Every word is necessary with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a potentially impactful mutation tool with no annotations, no output schema, and only one parameter. The description is too sparse to fully inform the agent: it does not explain what 'safe' means, what the tool actually does beyond the name, or the consequences of starting live. More context is needed for safe and correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a thorough description for the confirm parameter ('Must be exactly true to authorize the LIVE state change'). The tool description merely repeats this ('only with confirm:true'), adding no additional meaning beyond the schema. Schema coverage is 100%, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool is for starting LIVE, with a specific precondition (confirm:true) and safety requirement. It distinguishes from the sibling tool studio_stop_live by the opposite action, though it does not explicitly restate the full purpose beyond the name and title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool should only be used when the readable state is safe and confirmation is provided, but it does not explicitly direct the agent to check studio_get_status or mention when not to use it (e.g., if already live). The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_start_recordingStart recordingA
Start local recording only when stopped, then verify recording state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It goes beyond the name by disclosing 'only when stopped' (a guard condition) and 'then verify recording state' (a post-action verification step). This provides useful transparency, though it omits potential failure modes or what happens if the precondition fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the action, precondition, and verification. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, simple action tool, the description provides adequate context: what it does, when to use it, and a post-condition. It doesn't describe error handling or return values, but given the tool's simplicity and the strong sibling context, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty (100% coverage), so the baseline is 4. The description adds no parameter details, which is appropriate since there are none to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Start' and the resource 'local recording', and the phrase 'only when stopped' adds a specific condition. It distinguishes from sibling tools like studio_stop_recording and studio_start_live by specifying 'local recording' and the precondition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'only when stopped' is a clear when-not condition, implying the tool should not be called if recording is already active. It also distinguishes 'local recording' from live streaming, offering context for when to use this tool over studio_start_live, though it does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_stop_liveStop LIVEA
Stop LIVE only with confirm:true and verify the resulting offline state.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be exactly true to authorize the LIVE state change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It mentions the confirm requirement and the need to verify offline state, but does not address reversibility, permissions, or response format. It adds some value but remains incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, front-loaded, and every sentence earns its place. Two sentences convey both the action and a required verification step with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the essential purpose, the required confirmation, and a post-condition verification. It is adequate for the complexity, though it could mention error handling or what happens if confirm is false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the confirm parameter (100% coverage) with a const true and description. The description's 'only with confirm:true' is redundant and adds no new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Stop LIVE' and description 'Stop LIVE' clearly state the tool's function with a specific verb and resource. It is unambiguous and distinguishes itself from sibling tools like studio_start_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a critical usage condition ('only with confirm:true') and a post-action step ('verify the resulting offline state'), but it does not explicitly mention alternatives or when not to use this tool. The guidance is useful but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_stop_recordingStop recordingA
Stop local recording only when active, then verify recording state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the conditional behavior (only stops when active) and the post-action verification step, which is more than just repeating the tool name. However, it doesn't specify what happens if no recording is active (e.g., no-op or error), which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that fronts the main verb 'Stop' and packs all essential details—'local', 'only when active', and 'verify recording state'—without any wasted words. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter mutation tool, the description covers the action, condition, and post-verification. It hints at state checking but doesn't specify return values or error behavior when no recording is active. Given no output schema, this is a minor gap, but the tool is simple and the description is sufficient for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description coverage is 100% (vacuously, as the schema is empty). According to the rubric, a baseline of 4 is appropriate for 0 params; the description does not need to explain parameter details because there are none to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop local recording') and the resource ('recording'), with a specific condition ('only when active') and a follow-up action ('then verify recording state'). It distinguishes from siblings by specifying 'local', avoiding confusion with live streaming tools like studio_stop_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'only when active' implies a precondition for using the tool, effectively telling the agent when it is appropriate to call it. While it doesn't explicitly name alternatives, the word 'local' contrasts with sibling tools like studio_stop_live, providing context. No exclusions are stated, but the condition is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_switch_sceneSwitch LIVE Studio sceneA
Idempotently switch to an exact scene and verify the resulting active scene.
| Name | Required | Description | Default |
|---|---|---|---|
| sceneName | Yes | Exact scene name returned by studio_list_scenes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It discloses two valuable traits: idempotency (safe to retry) and verification (checks the resulting active scene). These go beyond the tool's name and add insight into execution semantics. However, it does not mention error conditions or return values, which would enhance transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key action ('switch') and adds the critical qualifiers (idempotently, exact scene, verify). Every word contributes meaning, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the core action and idempotency, but it leaves the return value and failure modes ambiguous. The phrase 'verify the resulting active scene' implies a check, but it does not explicitly state what the caller receives (e.g., the active scene name or a success indicator). This is a notable gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with a clear description ('Exact scene name returned by studio_list_scenes'), so the baseline is 3. The tool description reinforces the parameter's exactness by saying 'exact scene,' but adds no new syntactic or semantic detail beyond the schema. Thus, it meets the baseline without enhancing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to switch to an exact scene and verify the active scene afterward. It uses a specific verb ('switch') and resource ('scene'), and the phrase 'exact scene' distinguishes it from listing or other scene-related operations. This is unambiguous and differentiates it from siblings like studio_list_scenes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when the agent wants to change to a specific scene, but it does not explicitly contrast it with alternatives or state when not to use it. The idempotency hint is useful, but there is no direct guidance on how this differs from other studio actions, so it only meets the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
studio_trigger_actionTrigger a verified Stream Deck actionA
Emit one action from the verified LIVE Studio 1.33.2 Stream Deck protocol. Parameterized and stateful actions should use dedicated tools.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Verified TikTok LIVE Studio Stream Deck action name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'emit' without explaining that actions like live-pause or stop_live have immediate side effects on the streaming session. It also omits prerequisites (e.g., must be live) or whether the action is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: one for purpose, one for usage boundary. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple trigger with a single enum parameter and no output schema, the description gives the core purpose and a usage constraint. However, it lacks explicit mention of real-world effects (e.g., pausing live will affect the broadcast), though the enum names imply this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single parameter with an enum and descriptions (100% coverage). The description adds no parameter-specific meaning beyond hinting that non-parameterized actions are appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly state the tool emits a verified Stream Deck action. The phrase 'Emit one action from the verified LIVE Studio 1.33.2 Stream Deck protocol' specifies the verb and resource, and the sibling tools (status, scenes, sources, recording/live controls) make this distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Parameterized and stateful actions should use dedicated tools,' giving a when-not condition. However, it does not name specific alternative tools, so it falls just short of an explicit alternative list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v1.0.1- First observed
studio_get_status - First observed
studio_list_scenes - First observed
studio_list_sources - First observed
studio_set_audio_mute - First observed
studio_set_microphone_mute - First observed
studio_set_source_visibility - First observed
studio_start_live - First observed
studio_start_recording - First observed
studio_stop_live - First observed
studio_stop_recording - First observed
studio_switch_scene - First observed
studio_trigger_action
TDQS
Scored across 12 tools
Each tool targets a distinct resource and action: status, scenes, sources, audio (mic vs output), recording, live, and a generic trigger. The overlap between microphone_mute and audio_mute is clearly separated by description.
All tool names follow the consistent pattern studio_<verb>_<object>, using snake_case throughout. Verbs like get, list, switch, set, start, stop are used predictably.
12 tools is well within the ideal 3-15 range and covers the full scope of controlling a live studio without unnecessary bloat.
Core lifecycle is covered: read status, manage scenes/sources, control audio, recording, and live state. Minor gaps like scene creation or source editing exist, but the generic trigger_action and robust state verification reduce dead ends.
Maintenance
Related MCP Connectors
The official MCP Server for the Mux API
MCP server for ByteDance Seedance AI video generation
MCP server for Hailuo (MiniMax) AI video generation
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseBqualityFmaintenanceA server that provides tools to control OBS Studio remotely via the OBS WebSocket protocol, enabling management of scenes, sources, streaming, and recording through an MCP client interface.100214 npm129GPL 2.0
- AlicenseNot gradedqualityDmaintenanceA standalone MCP server for Windows desktop control, enabling screenshots, mouse and keyboard input, app launch, window/display management, and clipboard access via natural language.2MIT
- AlicenseBqualityCmaintenanceMCP server enabling LLMs to control OBS Studio through high-level show and effect APIs.186 npmMIT
- AlicenseBqualityBmaintenanceMCP server for controlling OBS Studio via obs-websocket, enabling scene switching, source management, streaming, recording, and text overlays through natural language.361MIT