beat-twin
This server provides read-only inspection of a Bitwig Studio session via an MCP bridge — no writes or mutations are exposed.
Session Overview: Full read-only session inspection covering transport, tracks, scenes, selected device, and remote controls.
Arrangement Planning: Generate plan-only arrangement suggestions based on the current Bitwig snapshot, with optional creative goal, style, and target length in bars.
Transport State: Get current tempo (BPM), playhead position in beats, and whether the transport is playing.
Track Inspection: Get volume, pan, mute, and solo status for all 8 tracks in the current bank window, or the currently selected track.
Scene & Clip Inspection: List available scenes in the current scene bank; get loop and playing-step info for the focused cursor clip.
Device Inspection: Get the status and 8 remote control parameters of the currently selected device, or list devices on a specific visible track (index 0–7).
Browser Inspection: Get the status of Bitwig's popup browser and list its visible results.
Provides tools for inspecting and controlling Bitwig Studio sessions, including transport, tracks, scenes, devices, and remote controls, with a read-only mode by default and optional write policies for transport, mixer, clips, scenes, devices, and application actions.
Click on "Install 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., "@beat-twinwhat's the current project tempo and time signature?"
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.
Beat Twin
Beat Twin is an experimental, local-first orchestration layer between musical agents and DAWs.
Its current repo contains four working musical surfaces:
a Bitwig Studio MCP bridge with explicit write-policy gates;
a standalone browser NanoDAW built on the canonical Beat Twin song and command models;
a secure browser Bitwig Remote that reuses the current MCP policy and authenticated controller path without exposing secrets to React;
a NanoDAW MCP planning surface that prepares instrument-track and MIDI-clip plans for explicit review and confirmation in the browser, without Bitwig.
The DAW/agent contracts, transactional NanoDAW memory adapter, LiteRT-LM provider, Gateway security core, and loopback HTTP API are implemented. The authenticated browser WebSocket proxy and Bitwig adapter remain gated follow-up work.
What Works
Read-only session inspection for transport, tracks, scenes, selected device, and remote controls.
Plan-only arrangement suggestions based on the current read-only Bitwig snapshot.
A short read-only live smoke that separates TCP/controller setup failures from session-inspection failures.
Transport, mixer, clip, scene, device, and application write tools, hidden and blocked by default.
A Bitwig controller script that speaks JSON-RPC over a local TCP connection.
A loopback same-origin React Bitwig Remote for session inspection and explicitly confirmed restart/play/stop commands when transport writes are enabled.
Offline protocol and policy tests that run without launching Bitwig.
A browser NanoDAW for command-first song sketches, Tone.js audition, note editing, pattern tools, keyboard shortcuts, local undo/redo, JSON save/load, visible timeline feedback, a local command palette, and deterministic command drafts.
Atomic
ExecutableBeatTwinCommand[]batches with monotonic revisions, stable errors, and idempotent request IDs.A versioned
DawAdaptercontract with fake-adapter conformance tests.Strict
SongPatchV1validation, deterministic compilation, and mutation-free preview.A
NanoDawAdaptermemory port plus an abstract browser-owned proxy boundary.A real S25 LiteRT-LM capture of the exact three-tool runtime request, plus a strict provider loop bounded to four steps; G1 passed with
gemma4-e2bon 2026-07-14.A fail-closed Gateway core for hashed pairing tokens, quotas, immutable plans, short-lived single-use confirmations, and redacted audit events.
A loopback-only Gateway HTTP API with strict pairing, target-fixed preview/confirmation/execution, and durable uncertain-outcome readback.
Related MCP server: io.github.peterkolbe/ableton-for-ai
Architecture
The current Bitwig MCP path is:
MCP client
-> Node.js MCP server (index.js)
-> local TCP JSON-RPC bridge on 127.0.0.1:8888
-> Bitwig controller script
-> Bitwig StudioThe Node process is the MCP server. It connects to the Bitwig controller on demand through BITWIG_HOST and BITWIG_PORT.
The local browser Bitwig Remote reuses the same implementation contract:
React Bitwig Remote
-> same-origin Vite loopback endpoint
-> current MCP tool registry and policy
-> authenticated local TCP JSON-RPC bridge
-> Bitwig controller scriptIt exposes no provider key or bridge secret to the browser. See
docs/BITWIG_WEB_REMOTE.md.
The browser NanoDAW foundation now lives alongside the MCP bridge:
apps/playground
-> @beat-twin/commands
-> @beat-twin/core
-> @beat-twin/audio-tone browser audition
-> localStorage JSON save/loadThe current Bitwig bridge still lives in index.js; adapter extraction is intentionally left for a later compatibility-focused slice. Browser audition is local Web Audio preview, not a Bitwig mutation or MCP write.
Browser save/load is also local NanoDAW state, not a Bitwig mutation.
Browser pattern tools are local document edits for duplicate, quantize, and transpose.
Browser undo/redo restores local NanoDAW command snapshots only.
Browser keyboard shortcuts invoke existing local NanoDAW actions only. After
entering the full workspace, the visible Shortcuts control or ? opens an
inline reference that closes with Escape and restores trigger focus. The guide
never appears automatically on first run. Inspector Compact mode changes only
presentation density and leaves preview/live audio state untouched.
Browser timeline feedback is derived from local song state and does not call Bitwig.
Browser command palette actions reuse the same local NanoDAW action boundary.
Browser command drafts parse known local phrases only; they are not an AI chat path.
The standalone NanoDAW MCP path is separate from the historical Bitwig MCP:
MCP client -> NanoDAW MCP -> immutable plan -> browser review -> human confirmIt exposes catalog, inspection, and plan-preparation tools only. It never owns
song state and has no confirmation or execution tool. See
docs/NANODAW_MCP.md.
The Agent architecture keeps the browser as the only owner of NanoDAW song state and puts Beat Twin on the laptop between the UI, the phone-hosted model, and the selected DAW adapter:
NanoDAW Agent mode
-> Beat Twin Gateway on the laptop
-> LiteRT-LM OpenAI-compatible API on the S25
-> validated SongPatch
-> ExecutableBeatTwinCommand[]
-> side-effect-free preview
-> explicit human confirmation
-> NanoDawAdapter | BitwigAdapter
-> verifiable execution reportGemma may only list targets, inspect the selected session, and propose a
bounded SongPatchV1. Confirmation and execution are gateway/UI operations;
they are never model tools. The existing TOOL_SPECS registry remains the
historical 57-tool Bitwig MCP surface, not the portable agent language. See
docs/LOCAL-LLM-TOOL-ORCHESTRATION.md.
The provider, security core, and loopback HTTP API are implemented; the authenticated WebSocket session proxy and browser connected-mode wiring remain follow-up work.
The preview-only RTX-to-Bitwig composition can be started with
pnpm gateway:rtx-bitwig-preview. It performs real controller inspection,
bounded Qwen proposal generation, compilation, and immutable preview while
omitting confirmation and execution routes. See
docs/RTX_BITWIG_PREVIEW_RUNTIME.md.
The separately gated dual-target runtime uses one Qwen proposal to prepare
independent NanoDAW and Bitwig plans with target-specific previews and
confirmation domains. See
docs/DUAL_TARGET_RUNTIME.md.
Requirements
Node.js 24 for local development; Node.js 22 and 24 are covered by CI
pnpm 11.10.0 through Corepack
Bitwig Studio for live/manual verification
Install
pnpm installRun
node index.jsConfigure your MCP client to run that command from this repository. A portable example lives in llm-mcp/mcp.example.json.
The browser controller is available from Open Bitwig Remote in the
playground started by tp up, or through pnpm nanodaw:dev. It is read-only by
default; its server-side transport policy and live-write gate are documented in
docs/BITWIG_WEB_REMOTE.md.
Codex example:
codex mcp add beat-twin --env BITWIG_HOST=127.0.0.1 --env BITWIG_PORT=8888 -- node /absolute/path/to/beat-twin/index.jsInstall The Bitwig Controller
Copy the controller script into your Bitwig controller scripts directory.
Linux example:
mkdir -p "$HOME/Bitwig Studio/Controller Scripts/BeatTwin"
cp bitwig-controller/BeatTwin/BeatTwin.control.js "$HOME/Bitwig Studio/Controller Scripts/BeatTwin/BeatTwin.control.js"macOS users commonly use:
$HOME/Documents/Bitwig Studio/Controller Scripts/Windows users can copy bitwig-controller/BeatTwin into:
%USERPROFILE%\Documents\Bitwig Studio\Controller Scripts\Then open Bitwig Studio and add the controller manually:
Beat Twin -> Beat TwinIf Bitwig was already open before installing the file, restart Bitwig or reload
the controller settings before testing the bridge. See docs/LOCAL_MCP_SETUP.md
for local verification commands and troubleshooting.
Safety Model
Beat Twin is read-only by default. At the MCP entry point, write tools are not listed by MCP clients and are blocked without an enabling policy. The Bitwig controller also requires per-connection authentication for every non-read RPC. Configure its Bridge secret preference and pass the same value as BITWIG_BRIDGE_SECRET; keep the default bridge on loopback and never expose it to untrusted networks.
The future Agent Gateway does not expose these Bitwig MCP write tools to Gemma.
It validates a constrained SongPatch, materializes executable IDs, previews the
exact plan without mutation, and requires a short-lived human confirmation.
The bitwig-launcher-v1 adapter now authenticates, validates one bounded empty
launcher target, binds every mutation to its confirmed identity, and requires
tempo/clip/note readback. Its first live write belongs to the separately
confirmed BT-213 disposable-project proof.
To enable a narrow write class:
BITWIG_MCP_WRITE_POLICY=transport node index.jsTo enable multiple write classes:
BITWIG_MCP_WRITE_POLICY=transport,mixer_write node index.jsTo enable every write class for disposable test sessions only:
BITWIG_MCP_ENABLE_WRITES=1 node index.jsUse write mode only in a disposable Bitwig project or a copy of real work.
Tests
Run the offline checks:
pnpm testRun a syntax check:
node --check index.jsRun the short read-only live smoke after Bitwig has loaded the controller:
pnpm smoke:read-onlyThis checks TCP connectivity first, then returns a compact read-only session summary. It does not enable write tools or mutate Bitwig.
Run the browser NanoDAW checks:
pnpm nanodaw:test
pnpm test:playground
pnpm --filter @beat-twin/playground build
pnpm --filter @beat-twin/playground test:e2eThe Playwright smoke covers the focused first-run entry, voluntary shortcut
help, Escape focus recovery, and adaptable Inspector density during preview on
desktop and a 390-pixel mobile viewport. It also covers the disconnected,
policy-locked Bitwig Remote and proves that this state sends no command POST.
Install Chromium once with
pnpm --filter @beat-twin/playground exec playwright install chromium when a
machine does not already have the matching browser binary.
Live tests require Bitwig Studio, the controller script, and explicit write permissions. They are intentionally separate from the default test suite.
Useful Docs
Status
Beat Twin is an experimental local integration, not a hardened production tool. It is published as an open-source foundation for safe, inspectable, DAW-agnostic music-agent experiments.
License
MIT
Available Tools
14 toolsbitwig_arrangement_planB
[policy:read] Plan-only arrangement suggestion from the read-only Bitwig session snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Creative target for the arrangement plan | |
| style | No | Arrangement flavor, e.g. minimal, club, ambient, cinematic | |
| targetLengthBars | No | Target arrangement length in bars |
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, but only states it is read-only and plan-only. It does not describe the return format, any side effects (none expected), required permissions, or limitations. This leaves significant behavioral ambiguity for the AI agent.
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, clear sentence that is front-loaded with the '[policy:read]' hint. It is concise and contains no unnecessary words, though it could benefit from slightly more detail without sacrificing brevity.
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?
Despite good schema coverage for parameters, the description lacks information about the output format, which is critical for a tool that generates a plan suggestion. With no output schema provided, the agent has no indication of what to expect from the response, making the tool incomplete for practical 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 has 100% description coverage for all three parameters (goal, style, targetLengthBars), effectively documenting their meaning. The description adds no additional value beyond these schema descriptions, so a baseline score of 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 states the tool provides a 'plan-only arrangement suggestion' and specifies it is from a 'read-only Bitwig session snapshot', indicating a read-only planning function distinct from modification tools. However, it does not fully differentiate from all sibling tools like bitwig_session_inspect, which also inspects the session.
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 for creative planning when a suggestion is needed without modifying the session, via the '[policy:read]' hint and 'plan-only' phrasing. However, it provides no explicit guidance on when to use this tool versus alternatives, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitwig_session_inspectA
[policy:read] Read-only inspection of Bitwig transport, tracks, scenes, selected device, and remote controls
| 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 clearly states the tool is read-only and lists the inspected components. However, it omits details about the output format, whether it returns a snapshot, or if there are prerequisites (e.g., open session). This 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, well-structured sentence. It front-loads the policy tag and immediately conveys the purpose. 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?
While the description covers what the tool inspects, it lacks detail on the return value, whether it aggregates all data, and if any state requirements exist. Given the breadth of inspection, a bit more context would help, but it is minimally adequate for a parameterless 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 input schema has zero parameters, so the description need not explain any. The schema coverage is 100% by default. The description adds no parameter info, but that is acceptable as there are none.
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 is for read-only inspection of multiple specific components (transport, tracks, scenes, selected device, remote controls). It uses a specific verb 'inspect' and identifies the resource 'Bitwig session', and the policy tag reinforces the read-only nature. It distinguishes itself from sibling tools that target individual aspects.
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 does not explicitly state when to use this tool versus its siblings. While it implies comprehensive inspection, an agent benefits from knowing that specific tasks like getting tempo should use transport_get_tempo. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_get_statusB
[policy:read] Get the Bitwig popup browser status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only includes '[policy:read]' to imply safety, but no annotations are present. It does not disclose what the status contains, any side effects, or permission requirements. For a parameterless tool, more behavioral context would be beneficial.
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 with one sentence. It is front-loaded with the policy tag and purpose. However, it might benefit from slightly more detail without compromising brevity.
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?
With no output schema and no elaboration on the status response, the description is incomplete. The agent cannot determine what information will be returned (e.g., boolean, string, object). This is a significant 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?
There are zero parameters and schema coverage is 100% (trivially). The description adds no parameter info, but none is needed. Baseline is 4 for 0-param tools.
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 ('Get') and resource ('Bitwig popup browser status'), and the '[policy:read]' prefix indicates a read operation. However, it does not elaborate on what the status encompasses, which could be slightly ambiguous.
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?
No guidance is provided on when or why to use this tool over sibling status tools like 'device_get_status' or 'track_selected_get_status'. The agent must infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_resultsA
[policy:read] List visible results in Bitwig's popup browser
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It includes '[policy:read]' indicating a read-only operation, but lacks details on side effects, authorization needs, or result freshness. Minimal behavioral context beyond the policy hint.
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 with a single phrase. It is front-loaded with the policy tag. Every word is necessary and there is 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?
Given no parameters, no output schema, and low complexity, the description is largely adequate but lacks information on what 'visible results' contains (e.g., names, IDs) and whether the list auto-updates. Could be more complete for an agent to precisely interpret the output.
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?
With zero parameters, schema coverage is 100% trivially. The description adds meaningful context by specifying it lists results from the popup browser, which clarifies the scope beyond the empty 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 description uses a specific verb 'list' and resource 'visible results' within the context of 'Bitwig's popup browser'. It clearly distinguishes from sibling tools like 'browser_get_status' which deals with status, not listing results.
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?
There is no explicit guidance on when to use this tool versus alternatives. The description implies it is for listing results, but does not provide when-not-to-use or exclude scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clip_get_infoA
[policy:read] Get loop and playing-step info for the focused cursor clip
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a '[policy:read]' tag hinting at read-only behavior, but with no annotations provided, it should disclose more details about what the tool does (e.g., whether it returns current values, any side effects, or required permissions). The description 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 sentence that conveys the essential purpose without any extra words or repetition. It is appropriately concise.
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?
While the purpose is clear, the description lacks details about the return value format (e.g., what fields are in 'loop and playing-step info'). Since there is no output schema, this is a gap. However, for a 0-parameter tool, it is minimally adequate.
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?
There are no parameters, so the baseline is 4 per guidelines. The description does not add parameter-specific info, but none is needed.
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 specifies the verb 'Get' and the resource 'loop and playing-step info for the focused cursor clip', making the tool's purpose distinct from sibling tools.
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?
While no explicit when-to-use or when-not-to-use guidance is given, the description implies usage for retrieving clip info, which is clearly different from sibling tools like transport or browser tools. No exclusions are needed given the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_get_remote_controlsA
[policy:read] Get the 8 remote control parameters for the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions '[policy:read]' which hints at a permission, but does not disclose any side effects, error conditions, or data scope beyond 'current page'.
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?
Single sentence, no wasted words. Front-loaded with the policy prefix and action verb. Perfectly concise for the information provided.
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 getter, the description is adequate but lacks detail on return format or behavior when no page is active. Without output schema, more context would help agent infer response structure.
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?
No parameters exist (schema coverage 100%), baseline is 4. Description adds value by specifying the exact count '8 remote control parameters', which the schema does not convey.
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?
Description uses specific verb 'Get' and resource 'remote control parameters' with context 'for the current page'. No sibling tool shares this purpose, so it is clearly differentiated.
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?
No explicit instruction on when to use this tool vs alternatives. The description only states it gets parameters for the current page, implying a specific context but no exclusions or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_get_statusA
[policy:read] Get status of the currently selected device
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It mentions a policy tag indicating read-only, but does not disclose any behavioral traits such as side effects, prerequisites, or response characteristics. The description is too brief to fully inform an agent of operational implications.
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, efficient sentence with no unnecessary words. It is front-loaded with the policy tag for quick assessment. Every word serves a purpose.
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 has no parameters, no output schema, and a simple read operation, the description is adequate but minimal. It does not explain what 'status' comprises or any error conditions, leaving some ambiguity for complex scenarios.
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 schema coverage is 100%. The description adds meaning by specifying 'currently selected device', which is context not in the schema. According to guidelines, baseline for 0 parameters is 4.
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 'Get status' and the resource 'currently selected device'. The policy tag [policy:read] adds context on access level. It is specific and distinguishes from sibling tools like 'device_get_remote_controls'.
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 does not explicitly state when to use this tool or what alternatives exist. It implies usage for reading device status but lacks guidance on context or exclusions. With many sibling tools, this omission is noticeable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_listB
[policy:read] List devices on a visible track
| Name | Required | Description | Default |
|---|---|---|---|
| trackIndex | Yes | Track index 0-7 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states '[policy:read]' and 'list', implying a read-only operation, but fails to describe what happens if the track is not visible, whether the list includes all device types, or any side effects. This is insufficient for an agent to understand the tool's full behavior.
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 with no superfluous words. It effectively communicates the core purpose, though could benefit from additional context without becoming verbose.
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 low complexity (one parameter, no output schema, no annotations), the description is too minimal. It does not specify the output format, error conditions, or behavior when constraints are violated (e.g., invalid trackIndex or invisible track). An agent would lack critical information to safely invoke this 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?
Schema coverage is 100% with a clear description for 'trackIndex' (0-7). The description adds no additional meaning beyond the schema, so baseline score of 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 states the action ('List'), the resource ('devices'), and the scope ('on a visible track'). This distinguishes it from sibling tools like 'device_get_remote_controls' or 'device_get_status', which have different purposes.
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?
No explicit guidance is provided on when to use this tool versus alternatives like 'device_get_status' or 'device_get_remote_controls'. The description only implies usage for listing devices on a visible track, but lacks when-not or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scene_listB
[policy:read] List available scenes in the current bank
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states it lists scenes, but without annotations, it should disclose more behavioral traits such as whether it requires specific permissions (beyond the policy hint), whether it returns full scene objects or just names, and if there are any side effects. The '[policy:read]' tag helps but is not a full disclosure.
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 very concise, fitting in one sentence with no verbose language. The '[policy:read]' prefix is somewhat extraneous but does not detract much. It is front-loaded and efficient.
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 absence of an output schema and annotations, the description lacks details about the return format, whether it lists all scenes or only a subset, and how agents should interpret the results. More context is needed for effective 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 no parameters, and the schema coverage is 100% (empty schema). The description adds no parameter information because none is needed. A score of 3 is baseline for such cases.
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 ('List') and the resource ('available scenes in the current bank'). The inclusion of '[policy:read]' further clarifies the nature of the operation. It is specific and distinguishes from potential similar tools.
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?
No guidance is provided on when to use this tool versus alternatives. Sibling tools like 'track_selected_get_status' or 'clip_get_info' are listed, but there is no differentiation or context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_bank_get_statusA
[policy:read] Get status (vol/pan/mute/solo) of all 8 tracks in the current bank window
| 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 must fully convey behavior. It indicates a read operation via [policy:read] and lists the status properties, but lacks details on return format, error conditions, or behavior when the bank has no tracks.
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?
A single sentence with no extraneous words. The [policy:read] tag is front-loaded, providing immediate clarity. Every element earns its place.
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 zero-parameter tool, the description adequately specifies the scope (all 8 tracks in current bank window) and the properties retrieved. Lacks detail on return structure, but not critical given 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 input schema has no parameters, so schema coverage is 100%. The description correctly adds no parameter information, meeting the baseline of 4 for zero-parameter tools.
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 'Get' and the resource 'status of all 8 tracks in the current bank window', specifying properties (vol/pan/mute/solo). It is distinct from sibling tools which target different contexts like arrangement, session, or selected track.
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?
No guidance on when to use this tool versus alternatives. Sibling tools like track_selected_get_status suggest a possible alternative for single track status, but no explicit comparison or usage advice is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_selected_get_statusA
[policy:read] Get status of the currently selected track
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a '[policy:read]' tag indicating read-only behavior, which is helpful. However, no further behavioral traits are disclosed, and with no annotations, the description carries the full burden.
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 (one phrase) and front-loaded with the policy tag and verb. Every word is necessary.
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 zero-parameter input and no output schema, the description is minimal. It does not explain what the status contains, which may be needed for an agent to use the output correctly.
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 zero parameters, so no parameter description is needed. Baseline score of 4 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 states the action 'Get status' and the resource 'currently selected track'. It distinguishes from sibling tools like track_bank_get_status and clip_get_info.
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?
No explicit guidance on when to use this tool vs alternatives. However, the tool is simple and its purpose is self-evident given the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transport_get_positionA
[policy:read] Get current playhead position in beats
| 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 full burden; it discloses read-only behavior via [policy:read] and the unit (beats). No contradictions.
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?
One concise sentence, front-loaded with policy tag, 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?
Sufficient for a simple read-only tool with no parameters; could hint at return type but not essential.
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?
No parameters exist; schema coverage is vacuously 100%. The description does not need to add param info, baseline is 4.
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 returns the current playhead position in beats, specifying verb, resource, and unit, and is distinct from sibling tools like transport_get_tempo.
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?
No explicit guidance on when to use versus alternatives, but the tool is simple and its purpose is self-evident; usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transport_get_tempoA
[policy:read] Get the current tempo (BPM)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behaviors. It only states it's a read operation returning BPM, but omits details like data type, interpretation (e.g., floats vs integers), or any side effects.
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?
Highly concise and front-loaded with policy and purpose. One sentence suffices, though it could include more context without adding length.
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, no-output-schema tool, the description is mostly adequate. It lacks return format specification, but the simple nature of 'tempo (BPM)' allows reasonable inference.
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?
With zero parameters and 100% schema coverage, the baseline is 4. The description adds no extra meaning but also doesn't need to, as the schema is complete.
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 it gets the current tempo in BPM, with a specific verb ('get') and resource ('tempo'). It distinguishes from sibling transport tools like transport_get_position and transport_playing_status.
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?
No guidance on when to use this tool vs alternatives. The policy tag [policy:read] hints at read use, but no exclusions or context are provided for the multitude of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transport_playing_statusA
[policy:read] Check if transport is currently playing
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a [policy:read] tag, indicating read-only behavior, but fails to specify the output format (e.g., boolean). Since no annotations are provided, the description carries the full burden and is minimally informative.
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 a clear policy prefix, front-loading the key information. 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?
Given the tool's simplicity (0 params, no output schema, no annotations), the description is nearly complete. It could be improved by stating the return type, but it is sufficient for a basic status check.
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?
With zero parameters and schema coverage at 100%, the description does not need to add parameter details. The baseline of 4 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 states the verb 'Check' and the resource 'if transport is currently playing', which is specific and distinguishes from sibling tools like transport_get_position and transport_get_tempo.
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 (to check playing status) but lacks explicit guidance on when not to use or mention of alternatives. For a simple status check, this is adequate.
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. Dates show when Glama detected each change.
14 tool updates
v0.0.1- First observed
bitwig_arrangement_plan - First observed
bitwig_session_inspect - First observed
browser_get_status - First observed
browser_list_results - First observed
clip_get_info - First observed
device_get_remote_controls - First observed
device_get_status - First observed
device_list - First observed
scene_list - First observed
track_bank_get_status - First observed
track_selected_get_status - First observed
transport_get_position - First observed
transport_get_tempo - First observed
transport_playing_status
TDQS
Most tools target distinct resources (arrangement, session, browser, clip, device, scene, track, transport), but 'bitwig_session_inspect' is broad and could overlap with track/device status tools, though descriptions clarify its role.
All tools follow a consistent pattern: domain prefix (bitwig_, browser_, clip_, etc.) plus descriptive snake_case verb phrase, making the surface predictable and easy to navigate.
With 14 tools covering key aspects of a DAW (arrangement, transport, tracks, devices, clips, browser), the count is well-scoped for a read-only integration.
The read-only surface covers inspection of many elements, but lacks write/mutate tools for actual control, and the 'plan' tool suggests a gap where no apply tool exists.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to control and monitor Bitwig Studio in real-time using natural language commands through MCP and OSC.-
- AlicenseAqualityCmaintenanceMCP server that bridges Ableton Live with AI models, enabling real-time project inspection and control such as track overview, device parameters, and audio analysis.12MIT
- AlicenseAqualityCmaintenanceA loopback-bound MCP server that enables MCP clients to control Ableton Live (set tempo, create tracks/clips, add MIDI notes, start/stop playback) over a secure local-only connection.21MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that exposes Ableton Live control (session state, transport, tracks, devices, clips, MIDI note editing) as tools for LLM agents, enabling natural language manipulation of a Live session.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/LaurentHuzard/beat-twin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server