Skip to main content
Glama

fl-bridge-mcp

An MCP server that gives AI assistants (Claude Code, Claude Desktop, Cursor, any MCP client) full control of FL Studio through its scripting API. It connects on its own and never touches your mouse or keyboard.

  • Zero-setup connection. On first use it installs its controller script into FL Studio's settings folder, finds your virtual MIDI port, and probes FL Studio. No native MIDI wheels on Windows: it talks to loopMIDI through the built-in winmm API.

  • 57 focused tools covering the whole API (consolidated so an assistant sees a compact, cheap tool list), built from the official FL Studio API reference (docs/fl-api-reference.md): project save, tempo, time signature, undo, markers, transport, channels, step sequencer (including per-step pitch/velocity), mixer routing and EQ, effect slots, plugin parameters and presets, patterns, playlist tracks, windows, snap, level metering, piano roll note editing (including key/scale and time-signature markers), MIDI file export, music theory helpers (scales including Indian thaats, chords, progressions, drum patterns), plus three areas most FL tooling misses:

    • Automatable parameters (REC events). Read and set any knob FL can automate, the way a hardware controller does: channel arpeggiator, echo/delay, filter, pitch, master pitch, shuffle, mixer EQ bands, effect plugin parameters (fl_param, fl_param_scan, fl_channel_fx, fl_master).

    • Edison audio scripts. Generates ready-to-run Edison scripts (normalize, fade, reverse, trim, tone, gain, beat regions, or raw enveditor code) into FL's Audio scripts folder and can open Edison on a mixer track.

    • FL's internal Python. fl_internal probes for flrack/flcpt, the modules FL's own "Create a chord progression" tool uses to add channels and load assets; when they are importable, fl_exec can use them.

  • Every tool is verified live by tests/smoke_live.py against a running FL Studio; unit tests cover everything that needs no FL Studio.

  • Slash commands: MCP prompts fl_status_check, fl_build_track, fl_mix_check, fl_arrange_chords (shown by MCP clients as /mcp__fl-bridge__...), plus Claude Code commands /fl-status, /fl-track, /fl-mix, /fl-notes in .claude/commands/.

  • fl_exec for anything else: run Python inside FL Studio with channels, mixer, plugins, transport, patterns, playlist, arrangement, general, ui available.

  • Hands off your PC. The only keystroke it can ever send is the piano roll script hotkey, and only when FL Studio is already the active window. Everything else goes through the API.

  • Compatible with the older FL Studio MCP Controller script if that is what FL Studio is running: it auto-detects either.

Requirements

  • FL Studio 20.7+ (developed and tested on FL Studio 2026) on Windows or macOS

  • A virtual MIDI port: loopMIDI on Windows, or the IAC Driver on macOS

  • Python 3.10+ and uv

Related MCP server: flai-mcp

Install

git clone https://github.com/MadBlast0/fl-bridge-mcp
cd fl-bridge-mcp
uv sync

Register it with your MCP client. The server speaks standard MCP over stdio (default), HTTP or SSE, so it works with any MCP-capable assistant, not only Claude. Replace the path with your clone.

Claude Code / Claude Desktop (~/.claude.json or claude_desktop_config.json, under mcpServers):

"fl-bridge": { "command": "uv", "args": ["run", "--directory", "C:\path\to\fl-bridge-mcp", "fl-bridge-mcp"] }

Cursor (.cursor/mcp.json or global settings), Windsurf (~/.codeium/windsurf/mcp_config.json), Cline / Roo Code (MCP settings), Gemini CLI (~/.gemini/settings.json), Codex CLI (~/.codex/config.toml, [mcp_servers.fl-bridge]), Zed, Continue all take the same shape: command uv, args ["run", "--directory", "<path>", "fl-bridge-mcp"].

VS Code (GitHub Copilot agent mode) .vscode/mcp.json:

{ "servers": { "fl-bridge": { "type": "stdio", "command": "uv", "args": ["run", "--directory", "C:\path\to\fl-bridge-mcp", "fl-bridge-mcp"] } } }

Clients that connect over HTTP (ChatGPT connectors, LM Studio, OpenWebUI, LibreChat, n8n, custom agents): start the server once and point the client at the URL.

uv run --directory C:\path	ol-bridge-mcp fl-bridge-mcp --transport http --port 8765   # http://127.0.0.1:8765/mcp
uv run --directory C:\path	ol-bridge-mcp fl-bridge-mcp --transport sse  --port 8765   # http://127.0.0.1:8765/sse

The server must run on the machine where FL Studio runs; expose the port only on networks you trust.

One-time step inside FL Studio

The server copies the FL Bridge controller script into Documents/Image-Line/FL Studio/Settings/Hardware/FLBridge the first time it runs. FL Studio must be told to use it once:

  1. Start FL Studio (restart it if it was already open when the server first ran).

  2. Options > MIDI settings. Under Input, select your loopMIDI / IAC port, enable it, and set Controller type to FL Bridge.

  3. Make sure the same port is not enabled under Output.

Ask your assistant to call fl_status. It reports the port, which controller answered, and exact setup hints if something is missing.

Piano roll notes (fl_notes_add, fl_notes_edit) are applied by the FL Bridge Notes script that the server installs into Settings/Piano roll scripts. Run it from the piano roll's Tools > Scripting menu, or bind a hotkey to it in FL Studio.

Tutorial

Everything below is what you type to your assistant. The tool names in brackets are what it calls under the hood; you never have to type those.

1. First contact (2 minutes)

  1. Start loopMIDI (Windows) and FL Studio.

  2. In your assistant, say "check the FL Studio connection" (or /fl-status in Claude Code). The server installs its scripts and probes FL Studio (fl_status).

  3. If it says FL Studio is not answering, do the one-time step above (Options > MIDI settings > Input > loopMIDI Port > Controller type "FL Bridge") and ask again.

  4. Say "what is in this project?" You get tempo, time signature, channels, mixer tracks with effects, patterns and markers (fl_project_state).

2. Build a track from nothing (10 minutes)

Say: "Build me an emotional Punjabi backing track in D minor at 82 BPM with intro, mukhda, antara and outro." (/fl-track ... in Claude Code, or the fl_build_track prompt in other clients.)

What happens:

  1. The assistant plans sections and bars, picks a scale (fl_music_theory knows western modes and Indian thaats such as bhairavi and kafi), a chord progression (fl_music_progression) and a drum pattern (fl_music_drums has keherwa, dadra, bhangra, trap, boom bap and more).

  2. It writes one multi-track MIDI file with markers (fl_write_midi_file) and asks you to drag it into FL Studio. FL creates one channel per track with a General MIDI sound. This is the only manual step, because FL's API cannot create channels.

  3. Tell it "it's in". It then sets the tempo, names and colours channels and mixer tracks, mutes the guide melody, adds a reverb bus, balances levels, plays a few bars to confirm every instrument makes sound (fl_get_levels) and saves (fl_save_project).

Swap the FLEX sounds for your own instruments whenever you like; everything the assistant set up stays.

3. Write into the piano roll

Open a channel's piano roll in FL Studio, then say: "put a Dm Bb F C progression in this piano roll, arpeggiated in 8ths, 4 bars each" (/fl-notes ...).

The notes are queued (fl_notes_add). Apply them by running Tools > Scripting > FL Bridge Notes in the piano roll; bind a hotkey to it in FL if you do this often. The same path handles edits: "transpose everything up 2", "quantize to 16ths", "humanize the velocities", "make it legato", "add a D minor scale marker" (fl_notes_edit, fl_notes_marker). Ask "what is in the piano roll now?" to read it back (fl_notes_state).

Drum patterns go straight into the step sequencer without any script: "put a keherwa groove on channels 9, 10 and 11" (fl_music_drums, fl_channel_steps). Melodic step sequences work too, with per-step pitch and velocity (fl_channel_step_params).

4. Mix

Say "check my mix" (/fl-mix). The assistant plays the busiest section, reports silent tracks, peaks over 0 dB, channels going straight to master and missing sends, then fixes the safe things: track levels and pans (fl_mixer_track_set), sends to a reverb or delay bus (fl_mixer_send), the built-in 3-band EQ (fl_mixer_eq), effect slot mix and bypass (fl_mixer_effect). Loading a new effect plugin is the one thing it will ask you to click.

Anything FL can automate is reachable too: "open the arpeggiator on the pad channel, chord mode, 1/16", "set the channel filter cutoff to 40%", "master pitch down a semitone", "more shuffle" (fl_channel_fx, fl_param, fl_master). Ask "what knobs does this channel have?" to discover them (fl_param_scan).

5. Everyday commands

Say

Tool

"play from bar 33", "stop", "switch to pattern mode"

fl_transport, fl_goto_bar

"set tempo to 90 and time signature to 6/8"

fl_project_set

"add a marker called Chorus at bar 17"

fl_markers

"undo the last 3 changes"

fl_undo

"rename channel 4 to Bass and colour it purple"

fl_channel_set

"create a pattern called Verse B, 16 beats" / "clone pattern 2"

fl_pattern_create

"solo the vocal mixer track"

fl_mixer_track_set

"what preset is on channel 1? next preset"

fl_plugin_info, fl_plugin_preset

"show the mixer" / "close all windows"

fl_window, fl_ui_action

"save the project"

fl_save_project

"install an Edison script that normalizes the selection"

fl_edison_script (run it inside Edison)

When nothing fits, the assistant can run any FL scripting call directly (fl_exec) and look up the API (fl_api_list, docs/fl-api-reference.md).

6. When something is off

  • "FL Studio is not answering": a modal dialog in FL (a name prompt, a Confirm box) blocks its scripts. Close it. If FL was restarted, the controller must still be enabled in MIDI settings.

  • Playhead did not move / undo did nothing yet: FL applies these a moment later. Ask for the status again.

  • The .mid import plays silence: FL imports MIDI with an empty playlist. In song mode, click the pattern onto Track 1 of the playlist, or switch to pattern mode.

  • Notes did not appear: the piano roll script must be run in the piano roll of the channel you want; check fl_notes_state for pending operations.

Tools

Group

Tools

Connection / raw

fl_status, fl_exec, fl_api_list, fl_project_state

Project

fl_save_project, fl_project_set (tempo, time signature), fl_undo (undo/redo/save point), fl_markers, fl_transport_command (any FPT_* command), fl_capture_played_notes

Transport

fl_transport (play/pause/stop/record, loop mode, speed, status), fl_goto_bar, fl_get_levels

Channels

fl_channels, fl_channel_set, fl_channel_steps (read/write/fill), fl_channel_step_params, fl_channel_audition, fl_channel_window, fl_channel_tools, fl_channel_fx (arp, filter, echo)

Mixer

fl_mixer_tracks, fl_mixer_track_set, fl_mixer_send (routes), fl_mixer_eq, fl_mixer_effect (slots)

Plugins

fl_plugin_info, fl_plugin_params, fl_plugin_set_params, fl_plugin_preset, fl_plugin_pads

Parameters (REC)

fl_param, fl_param_scan, fl_master

Patterns

fl_patterns, fl_pattern_create (new or clone), fl_pattern_set (rename/size/colour/select/clear steps/burn loops)

Playlist

fl_playlist_tracks, fl_playlist_track_set, fl_playlist_live

UI

fl_window, fl_ui_action, fl_options, fl_hint, fl_open_event_editor, fl_send_cc_to_plugin, fl_browser

Notes

fl_notes_add, fl_notes_edit, fl_notes_marker, fl_notes_state, fl_write_midi_file

Music

fl_music_theory, fl_music_progression, fl_music_drums

Edison / internal

fl_edison_script, fl_internal

fl_exec example:

# name every used mixer track after the channel routed to it
for i in range(channels.channelCount(True)):
    fx = channels.getTargetFxTrack(i, True)
    if fx:
        mixer.setTrackName(fx, channels.getChannelName(i, True))
result = "done"

What FL Studio's API cannot do

These are limits of FL Studio itself, not of this server:

  • It cannot load plugins or add channels directly. fl_browser(path, load=True) walks the Browser tree through the API and activates an item, which works when the browser has a normal selection; otherwise the assistant tells you what to click.

  • It cannot place clips in the playlist or open files. fl_write_midi_file is the workaround for building arrangements: drag the .mid into FL Studio and it creates one channel per track, with markers.

  • patterns.clearPattern() always opens a confirmation dialog, so fl_pattern_set(clear_steps=True) clears steps instead and piano roll notes are cleared with fl_notes_edit([{"op": "clear"}]).

Testing

uv run python tests/smoke_live.py          # every tool against the running FL Studio
uv run python tests/smoke_live.py --save   # also exercises fl_save_project

The test writes only to a scratch pattern named "Bridge Smoke", the last mixer insert and playlist track 40, and restores what it changes. It does not save unless asked.

How it works

MCP client ──stdio──▶ fl-bridge-mcp ──JSON file + MIDI note 127──▶ FL Bridge (inside FL Studio)
                                    ◀────────── JSON response ─────────┘

The controller script is deliberately tiny: it only knows ping and exec. Every tool is Python code sent through exec, so new capabilities never require touching FL Studio.

Credits

Protocol idea inspired by karl-andres/fl-studio-mcp (MIT). This is an independent rewrite. API reference generated from fl-studio-api-stubs.

License

MIT

Available Tools

57 tools
fl_api_listFl Api ListC

List functions of an FL scripting module (empty = counts for all). Docs: docs/fl-api-reference.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo
moduleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions 'empty = counts for all', giving a clue about the behavior of an empty parameter, but it does not disclose side effects, read-only nature, or return format. Since there are no annotations, the description carries the burden but provides insufficient detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, with no superfluous words, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too brief for a tool with two undocumented parameters. It does not explain what a 'module' is, what 'functions' means in this context, or what the output schema is, relying on an external doc link.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for 'filter' and 'module', and the description barely addresses them. The phrase 'empty = counts for all' is ambiguous regarding which parameter it refers to, and 'filter' is not explained at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'functions of an FL scripting module', making the purpose evident. However, it does not explicitly differentiate from sibling tools that also deal with modules or functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool compared to others, such as fl_param_scan or fl_internal. It only describes the basic function without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_browserFl BrowserA

Walk FL's Browser: list children of a folder path (empty = root), or with load=True activate the last item (a plugin under Plugin database opens in a new channel; a sample loads into the selected channel). preview=True auditions the current item. Reports 'stuck' when FL's browser selection does not move.

ParametersJSON Schema
NameRequiredDescriptionDefault
loadNo
pathNo
previewNo
max_itemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important side effects: load can open a plugin in a new channel or load a sample into the selected channel, and preview auditions the current item. It also mentions the 'stuck' reporting behavior when selection does not move, giving good transparency without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, covering the main action, optional modes, and a notable edge case in a few sentences. No redundant or vague wording is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is largely complete for the tool's core usage, including side effects and the empty-path root behavior. It does not specify the return format or explain max_items, but these are minor gaps given the otherwise clear description and existing output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains path (empty means root), load, and preview, but max_items is not described at all. Since the schema provides no parameter descriptions, the omission of max_items leaves part of the tool's behavior underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's primary purpose: navigating FL Studio's browser by listing folder children. It also specifies optional load and preview behaviors, making it distinct from sibling tools that handle other FL Studio operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to use the path, load, and preview parameters, including the effect of loading different item types. It does not explicitly contrast with sibling tools, but the browser-specific scope is clear enough for an agent to choose it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_capture_played_notesFl Capture Played NotesC

Write the MIDI notes played live in the last N seconds into the selected pattern (dump score log).

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description bears full responsibility for explaining side effects. It does not disclose whether the captured notes overwrite existing pattern data, append to them, or require a specific pattern selection. The phrase 'dump score log' hints at a bulk write but leaves destructive behavior unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that gets to the point. The extra phrase 'dump score log' is somewhat redundant and could confuse, but it does not significantly bloat the text. Overall, it is concise and front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description omits important context such as whether a pattern must be selected, what happens if no pattern is active, and how the captured notes are integrated (replace or merge). It also does not mention any return value or confirmation, despite an output schema being present. This makes it incomplete for a tool that modifies pattern data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'seconds' aligns with the 'last N seconds' phrase, making its purpose clear. However, the description does not elaborate on valid ranges, default behavior, or edge cases like zero or negative values. Since the schema provides no description, the parameter semantics are only partially covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool writes MIDI notes played live into the selected pattern, which is a specific verb and resource. The phrase 'dump score log' adds some ambiguity but does not obscure the core purpose. It is distinct from sibling tools like fl_notes_add or fl_channel_audition by focusing on capturing live performance over a time window.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as fl_notes_add or fl_notes_edit. It implies a scenario of capturing live input but does not state prerequisites or conditions. There is no mention of when this tool is preferred over other note-adding methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_auditionFl Channel AuditionC

Play a note on a channel now (preview only, not recorded).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
indexYes
velocityNo
duration_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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 state that the action is 'preview only, not recorded,' which is a key behavioral trait—it does not commit to a recording. However, it omits other important behaviors, such as whether the audition affects the channel's internal state, whether it sends MIDI to external devices, or whether it requires specific audio output settings. The single qualifier is helpful but incomplete for a tool with no annotation safety net.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, which is appropriately short and front-loaded with the core action. However, the brevity sacrifices necessary detail about parameters and usage context. It is concise but under-specified, striking an imbalance between efficiency and completeness. The structure is clean but does not earn high marks because it omits critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (four parameters, no schema coverage, no annotations, and no sibling differentiation), the description is severely incomplete. It does not explain the meaning of 'channel,' the range or default of note/velocity, the role of duration, or the expected return value. An agent cannot reliably call this tool without external knowledge of FL Studio's API conventions. The output schema exists but is not reflected in the description, and the description offers no context on when or how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any of the four parameters (note, index, velocity, duration_ms). It does not clarify what 'note' means (MIDI note number?), what 'index' refers to (channel index?), how velocity is scaled, or what duration_ms controls. The agent receives no additional meaning beyond the raw schema, which is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool plays a note on a channel now, with the explicit qualifier 'preview only, not recorded.' This distinguishes it from other channel-related tools like fl_channel_set or fl_channel_steps, which modify settings or patterns, while this one is a real-time audition. The verb 'play' and resource 'channel' are specific, and the preview-only qualifier adds crucial differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites (e.g., channel must exist, FL Studio must be running) or contexts where it is appropriate or inappropriate. No sibling alternatives are referenced, leaving the agent to infer usage solely from the name and brief description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_fxFl Channel FxB

Channel settings knobs (arpeggiator, filter, echo delay time), normalised 0-1; omitted ones are read back.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
arp_gateNo
arp_timeNo
arp_chordNo
arp_repeatNo
delay_timeNo
filter_cutNo
filter_resNo
filter_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that omitted values are read back, which is an important behavior. It does not explicitly state that provided values are written to the channel, nor does it mention side effects, permissions, or persistence. Since no annotations are present, the description carries the transparency burden and covers it only partially.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no redundancy. It front-loads the resource ('Channel settings knobs') and includes the most important qualifiers: the parameter categories, normalization, and read-back behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides enough to understand the basic function and normalization, and it notes read-back behavior. However, it does not describe the output schema, the meaning of the index parameter, or the allowed values for filter_type. These gaps make the tool only partially complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no per-parameter descriptions, and the tool description only groups parameters by category and states normalized 0-1. It does not explain specific semantics for parameters like filter_type, delay_time, or arp_gate, nor does it describe the required index parameter. The description adds some context but leaves most parameter meanings unresolved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as channel settings knobs and lists the specific categories: arpeggiator, filter, and echo delay time. It also clarifies normalization and read-back behavior. However, it lacks an explicit verb like 'get/set', so the purpose is slightly implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives such as fl_channel_set or fl_param. There is no guidance about exclusions or preferred use cases, leaving the choice to the agent based only on the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channelsFl ChannelsA

List channels: index, name, type, colour, volume, pan, pitch, mute, solo, selected, mixer track, plugin, MIDI port.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a listing operation, which strongly implies no side effects, but there are no annotations and no explicit statement about behavior such as return shape, channel order, or errors. The read-only nature is only implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that leads with the action and resource, then lists the relevant attributes. No filler or redundant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only listing, the description gives enough context about the returned channel attributes. It could be slightly more complete by noting whether all channels are always returned or if there is any filtering, but that is not essential for the basic call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool declares zero parameters, so there are no parameter semantics that need clarification; the empty input schema fully covers the calling contract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly names the verb 'List' and the resource 'channels', and enumerates the returned fields (index, name, type, colour, volume, etc.). This clearly identifies it as a read-only channel query and distinguishes it from sibling tools like fl_channel_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'List' implies this should be used for querying channel data, but the description does not explicitly state when to prefer it over related tools such as fl_channel_steps or fl_channel_set. No alternative tool is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_setFl Channel SetA

Edit a channel: volume 0-1 (0.8 = 0 dB), pan -1..1, pitch -1..1, colour 0xRRGGBB/'#rrggbb', select exclusively.

ParametersJSON Schema
NameRequiredDescriptionDefault
panNo
muteNo
nameNo
soloNo
colorNo
indexYes
pitchNo
selectNo
volumeNo
mixer_trackNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses value ranges (volume 0-1 with 0.8 = 0 dB, pan -1..1, pitch -1..1), the color format (0xRRGGBB/'#rrggbb'), and exclusive selection behavior, but omits null-parameter semantics, error behavior for invalid indexes, and whether selection also deselects other channels.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the verb and resource, dense but readable. No wasted words or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The flat 10-parameter schema with no enums and an output schema makes this a moderate-complexity tool. The description covers the main editing behaviors but omits meaning for 5 parameters and edge cases (invalid index, null handling), leaving it only moderately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% parameter description coverage, so the description adds meaning for volume, pan, pitch, and color (ranges and formats) and implies select behavior—roughly half of the 10 parameters. name, mute, solo, mixer_track, and index remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Edit') and resource ('a channel') and lists the editable properties (volume, pan, pitch, colour, select). The phrasing clearly distinguishes it from sibling channel tools like fl_channel_steps, fl_channel_window, and fl_channel_tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. The name and 'Edit a channel' wording imply a generic setter role, but no conditions or exclusions are stated relative to alternatives such as fl_channel_tools or fl_channel_steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_step_paramsFl Channel Step ParamsC

Per-step values (melodic step sequencer): steps=[{step, pitch?, velocity?, pan?, release?, shift?, fine_pitch?, mod_x?, mod_y?}]; pitch = MIDI note, velocity/pan/shift 0-127, fine_pitch 0-240. Turns the step on.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
stepsYes
patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states 'Turns the step on' but does not disclose whether this overwrites existing step data, how it interacts with the pattern parameter, or any side effects on the channel. The behavioral impact is under-explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the core purpose ('Per-step values') and packs the parameter structure into a compact form. It is efficient, though it could benefit from clearer separation between purpose and technical details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a melodic step sequencer and the complete absence of annotations and schema descriptions, the description is insufficient. It does not explain what 'index' refers to, how 'pattern' is used, whether the step list replaces existing steps, or what the output schema provides. An agent would struggle to call this correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage, so the description must compensate. It does explain the steps array structure with field names and value ranges for pitch, velocity, pan, shift, and fine_pitch. However, it does not explain the index parameter or the optional pattern parameter, leaving two of three parameters semantically ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (per-step values for a melodic step sequencer) and an action (turns the step on). It clearly identifies the domain and the scope. However, it does not explicitly differentiate from sibling fl_channel_steps, which might set steps in bulk, so it loses a point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like fl_channel_steps or fl_channel_set. The description provides the data structure but not the conditions or scenarios that would select 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.

fl_channel_stepsFl Channel StepsB

Read or write a channel's step grid in a pattern. steps: list of booleans (16 per bar). fill_every=N fills every Nth step instead. Omit both to read count steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
indexYes
stepsNo
patternNo
fill_everyNo
fill_offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only indicates 'read or write' without detailing side effects, state changes, reversibility, or any warnings. The agent gets minimal behavioral information beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and to the point, covering the core behavior and key parameter hints in a compact manner. It could be slightly more structured but avoids unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks critical information about the output format (despite an output schema being indicated), the meaning of 'pattern', and the behavior of 'fill_offset'. It is insufficient for an agent to use the tool correctly in all intended scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the roles of 'steps', 'fill_every', and 'count', but leaves 'index', 'pattern', and 'fill_offset' undefined. Since the schema itself has no parameter descriptions, this partial coverage leaves significant ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads or writes a channel's step grid in a pattern, with a specific verb and resource. It does not explicitly differentiate from sibling tools, but the name and description are unambiguous enough for basic selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description ('read or write a channel's step grid'), but there is no explicit guidance on when to prefer this tool over alternatives, nor any mention of edge cases or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_toolsFl Channel ToolsC

Utilities: quick-quantize the channel's notes; set its per-pattern step loop point (0 = off); flash a highlight around it in the channel rack.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
quantizeNo
loop_stepsNo
highlight_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It states the actions but not whether quantize permanently alters notes, whether loop setting is destructive, whether highlight is transient, or whether a default call with only index results in a no-op. Side effects and undoability are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very compact, contains no filler, and front-loads the purpose before listing the three operations. Every segment contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool combines multiple optional actions but does not explain what happens when called with only the required index, nor does it mention interaction between parameters, error conditions, or prerequisites. With no annotations and limited description, an agent cannot fully predict the outcome of a default call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description partially maps parameters to meanings: quantize to quick-quantize, loop_steps to per-pattern loop with 0=off, and highlight_seconds to flashing a highlight. However, it does not explain index addressing, default behaviors, allowed ranges, or how the optional parameters interact, so it adds some but not complete semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies three concrete utilities with specific targets: quick-quantizing notes, setting a per-pattern step loop point, and flashing a channel-rack highlight. This is enough to distinguish the tool from broader channel tools, though it lacks a single strong verb and reads more like a label than an imperative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided, and no alternatives among sibling tools are mentioned. The word 'quick' hints at lightweight use, but it does not clarify when this tool should be preferred over fl_channel_set, fl_channel_steps, or fl_notes_edit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_channel_windowFl Channel WindowB

Open/close a channel's plugin window (kind=plugin) or channel settings (kind=settings).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoplugin
showNo
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions the core behavior of opening/closing and the kind distinction, but it does not explicitly state how the 'show' boolean maps to open versus close. With no annotations, the description carries the burden, and it leaves some behavioral details only implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence without unnecessary words. It efficiently conveys the tool's purpose and the two mode options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple UI-window tool, but it lacks explicit parameter mappings and any mention of return behavior. Given the bare schema and no output schema, some details remain implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no property descriptions, so the description must compensate. It explains 'kind' values and implies 'show' through open/close, but 'index' is only indirectly suggested as 'a channel' and is not explicitly documented as the channel selector.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: opening or closing a channel's plugin window or channel settings. It specifies the two kinds, plugin and settings, which helps distinguish the target resource, but it does not explicitly contrast this tool with sibling window or UI tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like fl_window, fl_ui_action, or fl_channel_set. The description is self-explanatory for its immediate purpose but offers no usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_edison_scriptFl Edison ScriptC

Install an Edison audio script (Settings/Audio scripts/FL Bridge/.pyscript) from a template (normalize, gain, reverse, trim_to_selection, tone, fade, regions_every_beat) or raw enveditor code; run it in Edison via Tools > Scripts. No name = list templates. open_on_track opens Edison on that mixer track.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpmNo
codeNo
freqNo
nameNo
levelNo
fade_inNo
templateNo
open_on_trackNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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 discloses that the tool installs and runs a script and that open_on_track opens Edison on a mixer track, but it does not mention side effects, return values, failure modes, or whether it mutates project state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and structured as two sentences without unnecessary filler. It is slightly repetitive in mentioning Edison and scripts, but overall it is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 8 optional parameters and an output schema signal, but the description does not explain all parameters or what the tool returns. It covers the main action but omits enough context that an agent could not confidently predict full behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description partially explains name, template, code, and open_on_track, but leaves bpm, freq, level, and fade_in completely unexplained. Since schema coverage is 0%, the description needed to compensate for all parameters, and it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's action: installing and running an Edison audio script from a template or raw enveditor code. It names a specific resource (Edison/FL Bridge scripts) and includes the special 'list templates' behavior. However, it does not explicitly distinguish this tool from sibling Fl tools, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives minimal usage guidance, mostly the 'No name = list templates' behavior. It does not explain when to use this tool versus alternatives like fl_internal or fl_exec, nor does it mention prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_execFl ExecA

Run Python inside FL Studio. Pre-imported: channels, mixer, plugins, transport, patterns, playlist, arrangement, general, ui, device, midi, utils. Set result to return a value; print() goes to output. Avoid time.sleep and looping plugins.nextPreset; pass midi.FFNEP_DontPromptName to findFirstNextEmptyPat.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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 does disclose output/return behavior and warns about time.sleep and plugins.nextPreset loops, but it does not explicitly warn that arbitrary Python can mutate the project or have other side effects, which is a meaningful gap for a code execution tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and every sentence carries useful information: execution scope, return/output handling, and specific pitfalls. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers execution context, result/print behavior, and known hazards, but omits timeout semantics and does not explain error handling or potential side effects of arbitrary code. Given the generic nature of the tool, these are notable omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The description explains the purpose of 'code' implicitly via 'Set result' and print behavior, but it does not describe the 'timeout' parameter at all, leaving a required/semantically important parameter unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Run Python inside FL Studio') and clearly distinguishes itself from sibling tools that target individual FL Studio features. The pre-imported module list further clarifies scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful behavioral guidance about returning values, printing, and avoiding problematic calls, but does not explicitly state when to choose this generic execution tool over the many specific sibling tools. Thus usage context 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.

fl_get_levelsFl Get LevelsB

Play for seconds (0 = sample instantly without starting playback) and report mixer peaks and channel activity. The reliable way to confirm instruments make sound.

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsNo
from_barNo
stop_afterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden of explaining side effects. It does disclose that the tool may play for a number of seconds and that 0 means sample instantly without starting playback, which is useful. However, it does not explain the effects of from_bar or stop_after, or what output the caller should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short, direct, and free of filler. Every sentence adds functional meaning, and the parenthetical clarification about 0 seconds is useful without bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter tool with no annotations and no schema descriptions, the description is too minimal. It omits the meaning of two parameters and does not describe the output structure or return behavior, leaving the agent with significant gaps when deciding how to invoke and interpret the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only clarifies the `seconds` parameter. The `from_bar` and `stop_after` parameters are left entirely unexplained, so the description does not adequately compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as reporting mixer peaks and channel activity after playing for a given duration, and frames it as a reliable way to confirm instruments make sound. It is specific enough to distinguish it from sibling commands like fl_status or fl_mixer_tracks, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear use case: confirm instruments are producing sound by checking mixer peaks/channel activity. However, it does not explicitly describe when to prefer this tool over related mixer or capture tools, 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.

fl_goto_barFl Goto BarA

Move the playhead to a bar (1-based) or by delta_bars. FL applies it asynchronously; fl_transport confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
barNo
delta_barsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the asynchronous nature of the operation and points to fl_transport for confirmation, which is a behavioral transparency plus. However, it does not mention behavior when both bar and delta_bars are provided, nor does it address error handling or side effects. With no annotations provided, the description carries the full burden but only partially meets it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, tightly worded, with no redundant information. It front-loads the purpose (move playhead) and then adds the crucial async note, making it an exemplar of concise, well-structured documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the primary use cases (absolute bar, relative delta) and the asynchronous behavior with confirmation. Missing edge case handling (e.g., both parameters set or neither) and error behavior, but for a simple move operation it is largely sufficient. Not fully complete, but not severely lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains that bar is 1-based and delta_bars is a delta, which adds meaning beyond the bare schema (which has no parameter descriptions). It does not specify precedence if both are provided or constraints on values, leaving some semantic gaps, but the core meaning of each parameter is covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: moving the playhead to a bar (1-based) or by delta_bars. It distinguishes itself from fl_transport by noting asynchronous application and confirmation via fl_transport, which hints at a division of labor. However, it does not explicitly name alternative tools for comparison, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some usage context by mentioning that FL applies the move asynchronously and that fl_transport confirms, implying a workflow where this tool initiates and fl_transport verifies. Yet it does not explicitly state when to prefer this tool over siblings or provide prerequisites, leaving the guidance implicit rather than direct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_hintFl HintB

Show a message in FL Studio's hint bar.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description directly states the core behavior of showing a message, but it does not mention return values, side effects, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple action the description is minimally adequate, but it omits usage context, expected return, and failure cases, leaving an agent with incomplete information for robust invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides a required string named 'message' with no description coverage. The description repeats the word 'message' but does not clarify formatting, length, or behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Show a message') and a specific target ('FL Studio's hint bar'), making the tool's purpose unambiguous. It also clearly differs from sibling UI tools by focusing on the hint bar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided about when to use this tool versus other UI or feedback tools, and no conditions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_internalFl InternalC

No arguments: which internal FL modules import from the controller context (flrack = add channels/load assets). With module (+ name): signature, docstring and members for use through fl_exec.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
moduleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It is implied that this tool only reads internal module information, but side effects are not explicitly stated. No annotations are provided, so the description carries the full burden but fails to confirm whether it is read-only, safe, or has any hidden effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and to the point, but the phrasing is cryptic and densely packed with domain-specific shorthand (e.g., 'flrack = add channels/load assets'). It is efficient but sacrifices clarity for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large set of sibling tools, this description lacks context about what 'internal FL modules' are, how they relate to the controller context, and why an agent would need this information. The tool appears niche, but the description does not provide enough context to determine its place in the overall workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the two invocation modes: no arguments lists modules, and passing a module (plus optional name) retrieves signature/docstring/members. This adds meaning to the otherwise undocumented 'name' and 'module' parameters, though the exact format and default behavior are still unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description hints at inspecting internal FL modules (list imports or get signature/docstring/members) but lacks an explicit verb or clear statement of what is returned. It does not distinguish itself from the many sibling tools, making the purpose somewhat ambiguous for an unfamiliar agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'for use through fl_exec' but does not explain when to use this tool instead of alternatives such as fl_plugin_info or fl_param_scan. There is no guidance on typical scenarios, prerequisites, or how to combine it with other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_markersFl MarkersA

List arrangement markers; optionally add one at a bar (add_name + add_bar) or jump the playhead by jump markers (+1 next, -1 previous).

ParametersJSON Schema
NameRequiredDescriptionDefault
jumpNo
add_barNo
add_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It clearly explains three modes and jump direction semantics, but leaves gaps: what happens when both add and jump parameters are set simultaneously, what the list output format looks like, and whether add requires both add_name and add_bar strictly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences with the main action front-loaded, followed by compact mode notations ('add_name + add_bar', '+1 next, -1 previous'). No redundant words or filler—every token carries semantic load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 optional parameters, no annotations, and no output schema details, the description covers the three modes and core jump semantics but omits conflict resolution (jump + add), error behavior, return format, and precise parameter constraints. These are material gaps for a triple-mode tool with 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain all parameters. It gives meaning to jump (+1/-1 direction), add_bar (bar position), and add_name (marker label), and implies add_name + add_bar work together. However, it lacks units for add_bar (1-indexed vs 0-indexed, bars from song start) and does not specify jump range limits or validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the primary action ('List arrangement markers') with a specific verb and resource, and distinguishes two optional behaviors (add at bar, jump by marker). It differentiates from siblings like fl_goto_bar (bar navigation) and fl_notes_marker (notes context) by scoping exclusively to arrangement markers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage modes through the optional parameter combinations: default listing, add via 'add_name + add_bar', jump via 'jump' with explicit semantics (+1 next, -1 previous). It does not explicitly name alternatives like fl_goto_bar or fl_transport_command, but the mode-based explanation provides adequate implicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_masterFl MasterA

Master volume, master pitch (0.5 = none) and global shuffle, normalised 0-1; omitted ones are read. Also reports the last-tweaked parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
pitchNo
volumeNo
shuffleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, but the description discloses the combined setter/getter behavior, normalization range, pitch midpoint, and extra last-tweaked output. It does not discuss side effects or permissions, but for this control-surface tool the key behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences pack the core semantics without fluff; front-loads the resource and includes the key normalization caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return details are not required. The description covers all behavior needed to call the tool correctly with partial or full parameter sets, though it could mention whether all provided params are set at once.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but the prose maps each parameter to meaning, gives the normalized range, explains pitch 0.5 = none, and states omitted params are read rather than written. This substantially compensates for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies the resource (master volume/pitch/shuffle) and the dual read/write behavior via 'omitted ones are read' and 'reports the last-tweaked parameter.' It is slightly less explicit as a verb phrase but distinguishable from siblings like fl_get_levels or fl_transport.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over related tools such as fl_get_levels, fl_status, or fl_transport. It implies use for master-level controls but does not state alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_mixer_effectFl Mixer EffectA

List a track's effect slots (omit slot) or edit one: dry/wet mix 0-1, mute, slot colour, focus its window.

ParametersJSON Schema
NameRequiredDescriptionDefault
mixNo
muteNo
slotNo
colorNo
focusNo
trackYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the dual read/write nature (listing vs. editing mix, mute, color, focus window) and hints at a UI side effect ('focus its window'). It doesn't detail validation behavior, range clamping, or other side effects, but the core behavior is adequately surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that efficiently packs the dual-mode behavior, parameter list, and range constraints. It avoids fluff and front-loads the primary action (list vs. edit), making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (relieving the need to describe return values) and the dual-mode behavior is explained, the description is reasonably complete. However, it doesn't address potential ambiguities like what happens when both slot and mix are provided, or whether slot omission with other edit parameters triggers an error, leaving some edge cases unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the tool description must carry parameter semantics. It covers all six parameters: track (implied by 'a track's'), slot ('omit slot' triggers list mode), mix (range 0-1), mute, color ('slot colour'), and focus ('focus its window'). The mix range and slot mode semantics add meaningful value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's dual purpose: listing a track's effect slots or editing one (mix, mute, color, focus). The verb is explicit ('List' / 'edit') and the resource ('a track's effect slots') is specific, distinguishing it reasonably from sibling mixer tools like fl_mixer_track_set, fl_mixer_send, or fl_mixer_eq.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage patterns ('omit slot' to list vs. edit one), giving some operational guidance. However, it doesn't explicitly state when to prefer this tool over sibling mixer-related tools (e.g., fl_mixer_track_set for track-wide settings), nor does it mention prerequisites or invalid parameter combinations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_mixer_eqFl Mixer EqA

Built-in 3-band track EQ: band 0/1/2 = low/mid/high; values 0-1 (gain 0.5 = 0 dB). Omit values to read.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandYes
gainNo
trackYes
bandwidthNo
frequencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that omitting values performs a read operation, and it gives a gain mapping (0.5 = 0 dB). However, it lacks detail on side effects (e.g., immediate audio impact), error handling for out-of-range values, and the range for bandwidth and frequency. This is a partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose and value mapping. No redundant words, and it fits the essential information into a compact format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, including 2 required and 3 optional, the description covers only band and partially gain. It does not explain bandwidth, frequency, or the track parameter (though track is likely obvious). It also doesn't clarify the return format beyond the existence of an output schema. Given the absence of schema descriptions, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the band parameter (0/1/2 = low/mid/high) and gives a gain range (0-1) with a dB reference. However, it does not explain bandwidth or frequency at all, and the 0-1 range is ambiguous (likely applies to gain only but not stated). This leaves half the parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly identifies the tool as a built-in 3-band track EQ, specifies band-to-frequency mapping (0/1/2 = low/mid/high), and explains the value range. This distinguishes it from other mixer tools like fl_mixer_track_set or fl_mixer_send, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context that this is the built-in 3-band EQ for a track, implying when to use it for EQ adjustments. It does not explicitly name alternatives or exclusions, but the purpose is self-evident, making it sufficient for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_mixer_sendFl Mixer SendA

Route a track into another (send/bus) at level 0-1, disable a route, or list a track's routes (omit dest_track).

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo
enabledNo
dest_trackNo
source_trackYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It mentions the level range (0-1) and the ability to disable a route, but does not explain side effects (e.g., whether existing routes are replaced, what happens on invalid tracks, or if actions are reversible). It also fails to indicate whether listing is read-only versus mutating actions. The description covers basic behavior but omits critical operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary action and then enumerates variants concisely. There is no filler or redundant wording; every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are documented. However, the description does not address edge cases like existing routes, multiple sends, error behavior, or prerequisites (e.g., valid track indices). Given the complexity and lack of annotations, it is adequate for basic use but not fully complete for a mutation tool with routing semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that level is 0-1, that omitting dest_track lists routes, and that disabling a route corresponds to setting enabled=false. However, it does not explicitly describe source_track (though implied) or clarify the interaction between dest_track and enabled. It partially bridges the gap but leaves some parameters under-explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Route a track into another'), identifies the resource (track into a send/bus), and lists three distinct operations: routing, disabling, and listing routes. It is unambiguous and clearly distinguishes itself from mixer track property tools like fl_mixer_track_set by focusing on routing logic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage scenarios (routing a track to a bus, disabling a route, listing routes) but does not explicitly compare with sibling tools or state when not to use it. It mentions 'omit dest_track' as a usage hint for listing, but lacks explicit alternatives or exclusions, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_mixer_tracksFl Mixer TracksB

List mixer tracks (named/used by default) with levels, mute/solo/arm, effects; plus master/selected indexes.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_emptyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The word 'List' implies a read-only operation with no side effects, and the output contents are partially described. However, there is no mention of error behavior, empty results, or how the master/selected indexes are represented, so transparency is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the tool's purpose and key output fields. There is no redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple and the description lists the main output categories, but it lacks explicit parameter semantics and does not clarify ambiguous terms like 'named/used by default'. Given the absence of parameter descriptions in the schema, the description should carry more explanatory weight.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides the type and default for include_empty with no description. The tool description's parenthetical 'named/used by default' vaguely hints at the parameter's effect, but it does not explicitly state that include_empty=true includes empty tracks or clarify the default filtering behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as 'List mixer tracks' with a specific resource and action, and enumerates the returned data (levels, mute/solo/arm, effects, master/selected indexes). The parenthetical 'named/used by default' is slightly ambiguous, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 compared to sibling tools like fl_mixer_track_set or fl_mixer_effect. The description does not state use cases or conditions that would make this tool preferable over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_mixer_track_setFl Mixer Track SetA

Edit a mixer track: volume 0-1 (0.8 = 0 dB), pan/stereo_separation -1..1, colour, mute/solo/arm, select, enable, bypass all slots, lock mute, polarity, swap L/R.

ParametersJSON Schema
NameRequiredDescriptionDefault
armNo
panNo
muteNo
nameNo
soloNo
colorNo
trackYes
selectNo
volumeNo
enabledNo
swap_lrNo
mute_lockedNo
slots_enabledNo
polarity_reversedNo
stereo_separationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses parameter ranges (volume 0-1 with 0 dB reference, pan/stereo_separation -1..1) and lists all editable properties. However, it does not mention side effects, such as whether setting one parameter resets others, or any limitations on track index validity. Since no annotations are present, the description carries full burden, and while it covers the main actions, it lacks detail on behavior for null/default values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that clearly states the purpose and lists properties, with no unnecessary words. It is appropriately concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are 15 parameters and no schema descriptions, the description provides a broad overview but lacks per-parameter details and does not mention the output or return value. However, since an output schema exists, the return value may be covered elsewhere; still, the description does not explain the behavior of optional parameters when left null or defaulted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds semantic value for volume (0.8 = 0 dB) and stereo separation range, but does not explain arbitrary parameter formats such as color (integer vs string) or the exact meaning of select, enabled, or swap_lr beyond their names. Schema has no per-parameter descriptions, so the description partially fills the gap but not completely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Edit) and the resource (mixer track), and lists the editable properties. It distinguishes from sibling tools like fl_mixer_tracks which likely list or get tracks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool instead of alternatives such as fl_mixer_tracks for reading mixer state or fl_mixer_send for send levels. No prerequisites or conditional usage are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_music_drumsFl Music DrumsA

Built-in drum patterns (keherwa, keherwa_dholak, dadra, bhangra, four_on_floor, trap, boom_bap, reggaeton) or custom JSON {"voice": "x..x"}; with channel_map {voice: channel index} writes them into the step sequencer. No arguments = list patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
barsNo
patternNo
fl_patternNo
channel_mapNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool 'writes' patterns into the step sequencer, implying a project modification. However, it does not state whether it overwrites existing patterns, whether it creates a new pattern, or how it interacts with the current project state. No annotations are present to fill this gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and avoids filler, packing pattern options, JSON syntax, channel mapping, and no-argument behavior into two sentences. It is slightly dense but still readable and well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main action and two parameters, but omits the meaning of 'bars' and 'fl_pattern', the return value when listing patterns, and the relationship to the current pattern/channel selection. Given the tool's complexity and lack of schema descriptions, it is only partially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the 'pattern' parameter with built-in names and custom JSON, and describes the 'channel_map' object format. However, it does not explain the 'bars' or 'fl_pattern' parameters at all, leaving 50% of the schema undocumented. Since the schema itself has no descriptions, this is a notable gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool writes drum patterns into the step sequencer and lists patterns when no arguments are provided. It names concrete built-in patterns and custom JSON support, so the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a conditional usage instruction ('No arguments = list patterns') and explains the input format, but it does not explicitly say when to prefer this tool over sibling music tools like fl_music_theory or fl_music_progression. Some context is implied but no alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_music_progressionFl Music ProgressionC

Chord progression -> note list for fl_notes_add or fl_write_midi_file. style: block | arpeggio_8 | arpeggio_16 | broken; adds a root bass line when bass_octave is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoblock
chordsYes
octaveNo
velocityNo
bass_octaveNo
beats_per_chordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It mentions style options and the bass line addition when bass_octave is set, but does not describe side effects (e.g., whether it modifies the project), return value structure, or error behavior. The lack of explicit behavioral details limits transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, packing key information into a single sentence with a semicolon separating the main function from additional details. It avoids fluff and focuses on essential aspects, though the brevity causes some ambiguity that could be resolved with slightly more structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, one required) and lack of schema descriptions, the description is incomplete. It does not specify the chord notation format (e.g., 'C', 'Am'), the output note list structure, or how parameters like octave and velocity affect the result. This leaves significant gaps for an agent attempting to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains 'style' and 'bass_octave' (implicitly via the bass line note) and implies 'chords' from 'Chord progression', but entirely omits 'octave', 'velocity', and 'beats_per_chord'. Since the schema has no parameter descriptions (0% coverage), the description leaves the meaning of these parameters unclear, making it insufficient for correct usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool converts a chord progression into a note list for use with fl_notes_add or fl_write_midi_file. The verb '->' implies generation, and the mention of specific target functions distinguishes it from generic note utilities, though it could be more explicit about the exact action (e.g., 'generates' or 'creates').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide guidance on when to use this tool versus alternatives like fl_music_theory or fl_music_drums. It only mentions that the output is intended for fl_notes_add or fl_write_midi_file, which is more about output usage than selection criteria. No explicit 'use this when' or 'avoid if' context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_music_theoryFl Music TheoryB

Music theory lookup: notes of a scale (scale_root + scale; modes, pentatonics, Indian thaats bhairavi, bhairav, kafi, yaman, khamaj, asavari), notes of a chord symbol (Dm, Bbmaj7, A7, C/E), or the name of a MIDI note.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
chordNo
scaleNominor
octaveNo
scale_rootNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'music theory lookup', which implies read-only but does not explicitly state it, nor does it mention parameter precedence, error handling, or what happens if multiple parameters are set. The description adds minimal behavioral context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose and then lists capabilities. It is informative without being overly verbose, though the parenthetical list of scale types adds some clutter. Overall it is efficient and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 optional parameters with no required fields, but the description does not explain how to use octave, what happens if no parameters are provided, or how multiple query types interact. The output schema covers return values, but the description lacks essential usage context for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the meaning of scale_root+scale, chord, and note, but completely omits the octave parameter and does not clarify interactions or defaults. It partially covers parameter semantics but leaves gaps, especially for octave and how parameters combine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs music theory lookups for scale notes, chord notes, and MIDI note names, with concrete examples like 'Dm' and 'C/E'. This is distinct from sibling tools like fl_music_progression and fl_music_drums, which are about generating progressions and drum patterns, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (for theory lookups) but does not explicitly contrast it with alternatives or state when not to use it. There is no mention of exclusions or comparisons to siblings, so 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.

fl_notes_addFl Notes AddB

Queue notes for the open piano roll: [{midi, time, duration, velocity?, pan?, color?, slide?, porta?, fcut?, fres?, pitchofs?}] (beats; velocity 0-1). Applied by the FL Bridge Notes script; auto_trigger presses its hotkey only when FL Studio is already the active window.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYes
replaceNo
auto_triggerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It does explain that notes are queued, applied by the FL Notes Bridge script, and that auto_trigger only presses the hotkey when FL Studio is active. However, it omits the effect of the replace parameter and any side effects of queuing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but not bloated; it packs important note fields, units, and behavioral caveats into two sentences. It is front-loaded with the primary action and resource. Minor redundancy in the note field list is acceptable given the schema provides no descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the essential purpose and note structure, but it lacks guidance on the replace parameter and does not mention the return value or output schema. Given the moderate complexity and missing schema descriptions, it is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description compensates for the missing schema descriptions by detailing the notes array fields, units, and velocity range. It also partially explains auto_trigger. But the replace parameter is not mentioned at all, leaving one of three parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queues notes for the open piano roll, identifying the resource and action. It also lists the note fields, which helps distinguish it from editing or state-related sibling tools. However, it does not explicitly contrast with fl_notes_edit or mention the replace behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives like fl_notes_edit or fl_notes_state. It mentions the auto_trigger hotkey behavior but gives no guidance on when queuing is appropriate or how it relates to other note operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_notes_editFl Notes EditC

Queue piano roll edits: clear | delete{notes:[{midi,time}]} | delete_where{filter} | set{filter,props} | transpose{filter,semitones} | shift{filter,beats} | scale_length{filter,factor} | quantize{filter,grid,strength,lengths} | humanize{filter,time,velocity,seed} | legato{filter,gap} | select{filter,selected} | markers{markers:[{time,name, kind?:time_signature|scale,tsnum,tsden,scale_root,scale_helper}]} | clear_markers. filter: midi_min/max, time_min/max, velocity_min/max, color, selected, muted.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationsYes
auto_triggerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description only reveals that edits are 'queued'. It does not disclose side effects, ordering behavior, undo interaction, persistence, or the effect of the auto_trigger parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with no filler words. The dense DSL syntax packs a lot of information into a small space, though it could benefit from a bit more prose for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the lack of annotations, the description is incomplete. Key parameters and operation details are undefined, and the output schema is not explained, leaving an agent without enough context to reliably construct valid inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the operations grammar and filter fields, but the input schema is generic and almost fully undocumented. The auto_trigger parameter is not described at all, and many terms like props, grid, strength, and lengths are left undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Queue piano roll edits' and enumerates the supported operations, making its purpose explicit and distinguishing it from read-only tools like fl_notes_state or single-purpose tools like fl_notes_add.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as fl_notes_add, fl_notes_marker, or fl_undo. It lists operations but does not explain use cases, conditions, or 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.

fl_notes_markerFl Notes MarkerB

Queue a piano roll marker: kind=scale (root + scale name, highlights in-scale keys) or kind=time_signature.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
nameNo
rootNoC
timeNo
scaleNominor
numeratorNo
denominatorNo
auto_triggerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description partially explains behavior (queues a marker, highlights in-scale keys) but leaves side effects, state changes, or requirements (e.g., open piano roll) unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with a clear structure, though the 'kind=scale' notation could be slightly more explicit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters), the description is too brief. It omits parameter interactions, default behaviors, and potential errors, making it incomplete for reliable usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema lists 8 parameters but the description only explains 'kind' and indirectly mentions 'root' and 'scale'. It does not clarify the meaning of 'name', 'time', 'numerator', 'denominator', or 'auto_trigger', and the schema has no descriptions to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('queue a piano roll marker') and the resource, and distinguishes two specific kinds (scale and time_signature). This is specific enough to differentiate from sibling tools like fl_markers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 over alternatives such as fl_markers or fl_notes_add. Scenarios, prerequisites, or conditions for choosing this tool are not mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_notes_stateFl Notes StateB

Last exported piano roll state (notes, markers, time signature, timeline selection) plus pending operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description alone must clarify behavior. It implies a read operation ('last exported state') but does not explicitly state that it is non-destructive or describe any side effects. 'Pending operations' is vague and could suggest stateful behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a single sentence to convey the essential content. It is well-structured and free of redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with no parameters, the description is mostly adequate. However, it does not clarify what 'pending operations' refers to or how the returned state is formatted. The presence of an output schema is implied but not elaborated, leaving some ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, and the empty schema has full coverage. The baseline for no parameters is 4, and the description does not need to explain parameters. It is clear there are no inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a noun phrase 'Last exported piano roll state' rather than a clear verb, but it does convey the resource being accessed. It distinguishes from sibling tools like fl_notes_add and fl_notes_edit by focusing on state, though the distinction is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus alternatives. It does not mention conditions for retrieving state or suggest when to prefer other note-related tools. The context of 'exported' is ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_open_event_editorFl Open Event EditorB

Open the automation (event) editor for a channel parameter: volume, pan, pitch, filter_cut, filter_res, or p.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramNovolume
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of transparency. It states the action 'open' but does not disclose potential side effects, required permissions, or whether the operation is read-only or modifying (e.g., whether it changes state or just displays). No information about return values or success/failure indicators is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, immediately identifying the action and target. It uses a compact list for parameter values, avoiding unnecessary verbosity while remaining clear and direct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple UI action like opening an editor, the description is generally complete: it identifies the object and the parameter. It lacks explicit mention of outcomes (e.g., opening a window) or error cases, but these are not critical for such a straightforward tool. Given the absence of an output schema, this level of detail is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds semantic value by explaining the 'param' parameter with a list of valid values (volume, pan, pitch, filter_cut, filter_res, p<plugin param index>). However, the 'channel' parameter is not described beyond its existence; its role as a channel identifier is implied but not clarified. Schema coverage is 100% for required fields, but only half of the parameters are meaningfully described in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Open the automation (event) editor') and specifies the resource ('channel parameter'), with explicit enumeration of valid parameter values. This distinguishes it from related tools like fl_channel_steps or fl_param_scan, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not name any sibling tools or give conditions for selection, leaving the agent to infer usage context from the description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_optionsFl OptionsA

Read/set global options: snap mode (line, cell, none, step, half_step, beat, bar, events, markers...), snap on/off, step-edit mode, time display, step-sequencer swing 0-1; also reports metronome/precount/loop-record.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapNo
swingNo
step_editNo
toggle_snapNo
time_display_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool can both read and set global options and 'reports' metronome/precount/loop-record. However, it does not explain behavior when no parameters are supplied, whether multiple settings can be combined, output format, or side effects. With no annotations, this leaves notable behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence with no redundant or filler content. It efficiently packages the tool's purpose and key parameter domains.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the description lists all relevant options, but it does not specify no-argument behavior, read-versus-set semantics in practice, or return value details. These gaps matter because no parameters are required and the tool is dual-purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no per-property descriptions, but the description partially compensates by listing snap mode values, swing range, and naming the options. Still, mappings are not explicit: 'time_display_minutes' is not directly tied to 'time display', and 'toggle_snap' semantics remain ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Read/set') and resource ('global options'), and enumerates the affected options. This distinguishes it from sibling tools focused on project state, transport, or channel-specific operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as fl_status, fl_project_set, or fl_channel_set. The description explains what it does but does not state the conditions or scenarios where it should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_paramFl ParamD
ParametersJSON Schema
NameRequiredDescriptionDefault
rawNo
nameNo
slotNo
indexNo
paramNo
valueNo
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_param_scanFl Param ScanC

Discover named automatable parameters of a channel, mixer track, effect slot or global (offset, name, value, display). Address results later as raw_ or target id.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
countNo
indexNo
startNo
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only discovery operation ('Discover') and provides output context (offset, name, value, display) and how to address results. However, it does not explicitly state that it does not modify state, nor does it mention any permissions, side effects, or limitations. Some behavioral context is given, but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a single sentence that conveys the main purpose and a parenthetical for the output fields, plus a sentence on addressing results. It front-loads the core function and includes useful usage detail without redundancy. It is well-structured for its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, no annotations, and an output schema not shown, the description is incomplete. It does not explain how the parameters affect the scan, what values target accepts, or how slot/count/index/start are used. The output addressing is mentioned, but the operational details are missing. An agent would struggle to call this tool correctly without additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description does not explain any of the five parameters (target, slot, count, index, start). It only hints at the target scope but does not define the meaning, format, or relationships of the parameters. Given the low coverage, the description must compensate, but it fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool discovers named automatable parameters for channels, mixer tracks, effect slots, or global, and lists the output fields (offset, name, value, display). It is specific about the action and resource. However, it does not differentiate from sibling tools like fl_param, which likely performs a related function, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like fl_param or other parameter-related tools. It only mentions how to address results later, not when to invoke this scan. There is no mention of prerequisites, use cases, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_pattern_createFl Pattern CreateC

Create an empty pattern (no name prompt) or clone an existing one (clone_of), then name/size/colour it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
selectNo
clone_ofNo
length_beatsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full burden of behavioral disclosure. It says 'create' and 'then name/size/colour it' but does not clarify whether the operation is destructive, requires permissions, or what happens to existing patterns. The phrase 'no name prompt' is ambiguous, and there is no mention of side effects, return values, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the primary action and its two modes. There is no wasted wording, and it is appropriately concise for a tool with this level of complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, no annotations, and zero schema coverage, this description is incomplete. It does not explain all parameters, does not clarify the behavior for the select parameter, and provides no information about output or error conditions. The output schema exists but is not referenced. An agent would need to open the schema and infer much of the behavior, which is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain all parameters. It references clone_of and the concept of 'name/size/colour' (which maps loosely to name, color, and possibly length_beats), but it completely omits the 'select' parameter and does not clarify the exact semantics of any parameter. The description adds minimal value over the schema and fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb-resource pair ('create a pattern') and distinguishes between empty creation and cloning via clone_of. It does not explicitly differentiate from sibling tools like fl_pattern_set, but the core purpose is unambiguous and not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating new patterns and mentions the clone_of alternative, but it never states when to prefer this tool over fl_pattern_set or any other sibling. No explicit exclusions or prerequisites are given, leaving the agent to infer the intended use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_patternsFl PatternsA

List patterns (1-based): name, length in beats, colour, selected; groups; current pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return contents including the 1-based indexing convention, selected flag, groups, and current pattern — useful context beyond a bare 'list patterns.' It doesn't describe timing or live-state behavior, but for a zero-parameter read tool this is largely sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that front-loads the verb and packs the entire return contract into a tight parenthetical list. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value structure is already covered. The description adds the 1-based indexing note and scope (patterns, groups, current pattern), which is complete for a stateless query tool with no parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so per calibration this receives the baseline 4. There is no parameter ambiguity to resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and resource (patterns), and enumerates the exact fields returned (name, length in beats, colour, selected; groups; current pattern). This clearly distinguishes it from mutation siblings like fl_pattern_create and fl_pattern_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'List' makes the read-only intent self-evident, and the explicit mention of what data is returned clarifies when to call it. The contrast with fl_pattern_create and fl_pattern_set is implied by the enumerative nature, though no explicit when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_pattern_setFl Pattern SetB

Edit a pattern: rename, resize (beats, 0 = auto), recolour, make current, clear all step-sequencer steps (FL's clearPattern opens a dialog, so steps only; notes via fl_notes_edit), bake per-channel loops.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
colorNo
selectNo
patternYes
burn_loopsNo
clear_stepsNo
length_beatsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It provides useful specifics: 'FL's clearPattern opens a dialog, so steps only' explains why clear_steps excludes notes, and '0 = auto' for beats clarifies a special value. However, it does not mention side effects, reversibility, or the impact of setting name/color without other parameters, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence that front-loads the primary action and packs in parenthetical clarifications. It avoids redundancy and every clause adds value, though it could be slightly more structured for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters and no annotations, the description covers most operations but omits details like the format of color values (integer vs. string), the exact effect of burn_loops, and the behavior when optional parameters are null. Since there is an output schema, return values are not required, but the parameter semantics are not fully fleshed out, leaving some ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It maps operations to parameters implicitly: 'rename' → name, 'resize (beats, 0 = auto)' → length_beats, 'recolour' → color, 'make current' → select, 'clear all step-sequencer steps' → clear_steps, 'bake per-channel loops' → burn_loops. While it explains the 0 = auto behavior, it does not explicitly link each action to its parameter name or describe the required 'pattern' parameter, which is a minor gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Edit a pattern:' and lists specific editing operations (rename, resize, recolour, make current, clear steps, bake loops), making the verb and resource clear. It distinguishes from sibling tools like fl_pattern_create by focusing on modification rather than creation, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 only routing hint is 'notes via fl_notes_edit', which tells the agent to use a different tool for note editing, but it does not address broader scenarios like creating patterns or viewing them. This leaves the usage context under-specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_playlist_liveFl Playlist LiveC

Performance mode: read a track's live blocks/modes, or trigger/stop a block.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopNo
blockNo
trackYes
blocksNo
triggerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It mentions read and trigger/stop actions but does not explain side effects, state changes, or whether trigger/stop affects playback persistently.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence and front-loads the main purpose. It avoids redundancy, though it is slightly terse given the number of parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks essential context about parameter semantics, return values, and operational effects. For a tool with five parameters and no annotations, the description is not complete enough for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no per-parameter descriptions. The description names block and track but leaves 'blocks', 'trigger', and 'stop' unexplained, so parameter meanings and relationships are unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific function: performance mode operations on a track's live blocks, including reading and triggering/stopping. It is reasonably distinct from sibling playlist tools, though 'modes' is slightly vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus sibling playlist or transport tools. The phrase 'performance mode' hints at context, but no explicit alternatives or conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_playlist_tracksFl Playlist TracksC

List playlist tracks (1-based): name, colour, mute, solo, selected, activity; time selection; performance mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_tracksNo
only_namedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. The verb 'List' strongly implies a read-only operation with no side effects, but it does not explicitly state that no modifications occur or that it is safe. It also does not mention any potential side effects related to 'performance mode' or other aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and to the point, consisting of a single sentence that directly states the purpose and the output fields. There is no redundant information or unnecessary verbosity, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the output fields are listed, the description omits any explanation of the parameters, which are essential for using the tool correctly. It also does not clarify what 'performance mode' refers to or whether the list is ordered. Given the simplicity of the tool, it is still incomplete without parameter details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The parameters max_tracks and only_named are not described in the text. Since schema_description_coverage is 0%, the description must compensate, but it makes no mention of these parameters or their meanings. The parameter names offer some hints but the description itself provides no guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the object 'playlist tracks', and lists specific properties (name, colour, mute, solo, selected, activity, time selection, performance mode). It distinguishes this tool from others that modify tracks (e.g., fl_playlist_track_set) and is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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. There are many sibling tools (e.g., fl_channels, fl_mixer_tracks) but the description does not clarify what makes this the right choice for listing playlist tracks specifically, nor does it mention any conditions for not using it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_playlist_track_setFl Playlist Track SetB

Edit a playlist track: rename, colour, mute, solo, select, lock mute; scroll the playlist to a bar.

ParametersJSON Schema
NameRequiredDescriptionDefault
muteNo
nameNo
soloNo
colorNo
trackYes
selectNo
mute_lockedNo
scroll_to_barNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing side effects, but it only says 'Edit a playlist track' and 'scroll the playlist to a bar.' It does not mention whether changes are destructive, whether the track must exist, what happens when no optional parameters are set, or whether the scroll action is immediate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core action and then lists the supported operations in a compact, readable way. There is no fluff, repetition, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no schema descriptions, the description is not complete enough for an agent to call the tool confidently. It omits return value/result behavior, whether parameters are independent or mutually exclusive, and any preconditions like needing an existing playlist or valid track index.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description's action words map roughly to the parameter names ('rename' to name, 'colour' to color, etc.), but it does not clarify the meaning of the required 'track' parameter, the null-default behavior, or the expected value range for 'scroll_to_bar.' Schema coverage is 0%, so the description adds some meaning but leaves many parameter details ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action 'Edit a playlist track' and lists all the operations it performs: rename, colour, mute, solo, select, lock mute, and scroll to a bar. This clearly distinguishes it from sibling playlist tools like fl_playlist_tracks and fl_playlist_live.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention conditions where another tool would be preferable. It only states what the tool does, so the agent must infer appropriate usage from the tool name and parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_plugin_infoFl Plugin InfoC

Plugin at a channel (slot -1) or mixer track+slot: name, preset, param/preset counts, pad count.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not explicitly state whether the operation is read-only, whether a plugin must exist at the target location, or what happens on invalid targets. The word 'Info' weakly suggests non-destructive behavior, but that is not sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence with no filler words and directly lists the returned information. It is slightly telegraphic and relies on a colon list, but it remains compact and reasonably scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must cover return expectations; it lists the fields but not their structure or types. More importantly, it omits the parameter selection logic and error behavior, leaving significant gaps for a two-parameter API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no parameter descriptions, and the description does not clearly map 'channel' and 'mixer track+slot' to the `index` and `slot` parameters. It is unclear what `index` refers to, how `slot` default -1 selects a channel, or what values are expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states that the tool returns plugin information (name, preset, param/preset counts, pad count) at a channel or mixer track+slot, which distinguishes it from sibling tools like fl_plugin_params or fl_plugin_preset. However, the phrase 'slot -1' is cryptic and no explicit verb such as 'get' or 'retrieve' is used.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 instead of fl_plugin_params, fl_plugin_preset, fl_plugin_pads, or fl_param_scan. The listed return fields imply a summary use case, but the description never states when this tool should be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_plugin_padsFl Plugin PadsC

Drum pad info (FPC etc.): semitone and colour per pad.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
indexYes
max_padsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must convey side effects or safety. It states 'info,' implying a read-only operation, but does not explicitly confirm that it has no destructive effects or whether it requires special permissions. This lack of explicit transparency is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and uses only one short sentence, efficiently conveying the core purpose without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and minimal parameter explanation, the description is incomplete for an agent to fully understand the tool's usage. It provides a hint about the output (semitone and color) but omits context on when to use it, how the parameters work, and any edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain any of the three parameters (slot, index, max_pads). The schema provides only types and defaults, and the description adds no semantic meaning, leaving the agent to guess how these parameters affect the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates that the tool provides information about drum pads (e.g., FPC) including semitone and color per pad. It is specific enough to distinguish it from siblings like fl_plugin_info or fl_plugin_params, though it lacks an explicit verb like 'get' or 'retrieve'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or comparisons to other sibling tools, leaving the agent without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_plugin_paramsFl Plugin ParamsA

List plugin parameters (index, name, normalised value, display string); filter by substring, page with offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
indexYes
filterNo
offsetNo
max_paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not mention side effects, permissions, or error behavior. It is reasonable to infer a read-only operation, but this is not explicitly stated, so transparency is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that conveys the action, result fields, and key features without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks essential context for proper usage, particularly the meaning of the required 'index' parameter and the role of 'slot'. Since no output schema is provided, the agent cannot fully understand the expected result shape, making it incomplete for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 'filter' and 'offset' are explained in the description. The required 'index' parameter and 'slot' and 'max_params' are not described, leaving their meaning and usage ambiguous. Schema coverage is less than 50%, and the description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists plugin parameters and specifies the fields returned (index, name, normalised value, display string) along with filtering and pagination options. This distinguishes it from sibling tools like fl_plugin_set_params or fl_plugin_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for reading plugin parameters without modifying them, and mentions filtering by substring and paging with offset. However, it does not explicitly state when to use this over other parameter-related tools (e.g., fl_plugin_set_params).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_plugin_presetFl Plugin PresetA

Step to the next/previous preset (one step per call; FL loads it asynchronously and renames the channel).

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
indexYes
directionNonext

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses two important behavioral aspects: 'FL loads it asynchronously' and 'renames the channel'. This gives the agent awareness of side effects. However, it does not mention potential errors, return values, or whether the operation is reversible, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that packs essential information without redundancy. It is well-structured and front-loads the core action, followed by useful caveats. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives the core action and a few side effects, but lacks context about the return value, error conditions, and the precise meaning of all parameters. Given the simplicity of the tool, it is somewhat adequate, but a more complete description would clarify parameter semantics and expected outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema defines three parameters (slot, index, direction) with zero description coverage. The description only hints that 'next/previous' is relevant (likely to 'direction'), but does not explain the role of 'slot' or 'index'. This is a significant gap; the agent cannot correctly populate all parameters based on the description alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Step to the next/previous preset') and specifies the resource (plugin preset). It also adds operational detail ('one step per call') which distinguishes it from a bulk operation. It is unambiguous and easily differentiates from sibling tools like fl_plugin_info or fl_param_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions 'one step per call', implying the tool should be invoked repeatedly to step through presets, and notes the async loading behavior. While it does not explicitly contrast with alternatives, the operational hint provides sufficient guidance for typical usage. A clear 'when to use' statement would improve it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_plugin_set_paramsFl Plugin Set ParamsC

Set plugin parameters: values = {"": 0-1, ...}.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotNo
indexYes
valuesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It only says 'set', implying mutation, but does not disclose side effects, reversibility, or whether the plugin must be loaded. This is a significant gap for a state-changing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, and the core purpose is front-loaded. It is appropriately sized, though it sacrifices informativeness for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, a nested object, and an output schema, the description is too sparse. It omits semantics for `index` and `slot`, and lacks any context on usage or prerequisites, making it incomplete for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the `values` object format (keys as param index/name, values 0-1), but provides no meaning for the required `index` parameter or the optional `slot` parameter. This is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Set plugin parameters' and gives the value format, distinguishing it from likely read tools like fl_plugin_params. However, it does not explicitly name siblings or clarify which plugin instance is targeted, so it's not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like fl_plugin_params or fl_param_scan, nor any mention of prerequisites or conditions. The agent is left to infer usage 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.

fl_project_setFl Project SetA

Set tempo (BPM) and/or time signature.

ParametersJSON Schema
NameRequiredDescriptionDefault
tempoNo
numeratorNo
denominatorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states what is set without covering side effects, return values, error behavior, or the effect of omitting parameters. The burden is on the description, which does not disclose these behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no unnecessary words. It directly conveys the tool's functionality without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter, the description covers the core action, but it lacks details on parameter combinations (e.g., setting numerator without denominator), return values, or error cases. Given that no output schema is shown, the description should have addressed these aspects more thoroughly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema defines three optional numeric/integer parameters but provides no descriptions. The tool description adds the interpretation of 'tempo (BPM)' and 'time signature' for numerator and denominator, giving some meaning beyond the raw schema. However, it does not explain parameter relationships, defaults, or ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Set tempo (BPM) and/or time signature.' This is a specific action on project-level settings, distinguishing it from sibling tools that target channels, mixer tracks, or other elements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when changing the project's tempo or time signature, but does not explicitly mention alternatives or conditions when not to use it. The context of sibling tools makes the scope somewhat clear, but the description itself offers no explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_project_stateFl Project StateA

Full project snapshot: title, tempo, time signature, transport, unsaved flag, channels, used mixer tracks with effects, patterns, markers. Call this first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description lists return contents but does not explicitly state side effects or read-only nature. Since annotations are absent, the description carries the burden; it could be clearer about whether it modifies state or is expensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, to the point, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it's a simple snapshot tool, the description lists all included fields and provides a clear call order. It doesn't specify data formats, but that's acceptable for a snapshot summary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description correctly has nothing to explain. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it provides a full project snapshot and enumerates included data (title, tempo, time signature, transport, etc.), distinguishing it from sibling tools that focus on individual aspects. The 'Call this first' instruction reinforces its purpose as an overview tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call this first, giving clear timing guidance. It does not mention alternatives, but for a state-snapshot tool, that is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_save_projectFl Save ProjectA

Save the project to its .flp (Ctrl+S via FL's transport command; an unsaved new project opens FL's Save dialog).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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 discloses a key behavior (opening the Save dialog for unsaved projects) and mentions it's via FL's transport command. However, it does not mention that saving overwrites an existing file without a confirmation prompt, nor does it describe any potential side effects like blocking or error conditions. It's adequate but leaves out some behavioral nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action first, then adds a parenthetical with the important edge-case behavior. Every word earns its place; there's no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple save operation with no parameters and an existing output schema, the description covers the main behavior and the special case of unsaved projects. It doesn't explain the return value, but the output schema handles that. The only gap is the lack of explicit mention that existing files are overwritten without prompting, which is standard for a save action and arguably expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and schema coverage is 100% (empty schema). Per the rubric, 0 parameters sets a baseline of 4. The description doesn't need to explain parameters, and it doesn't attempt to, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Save the project to its .flp') with a specific resource (.flp file). It also mentions the keyboard shortcut (Ctrl+S) and the transport command, which distinguishes it from other project-related tools like fl_project_set or fl_transport_command. It's unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context by noting that it uses FL's transport command and that an unsaved new project will open FL's Save dialog. While there are no direct sibling save tools to contrast with, this guidance helps the agent understand when the tool will prompt for a file path versus when it saves silently. It doesn't explicitly state when not to use it, but given the unique save purpose, that's acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_send_cc_to_pluginFl Send Cc To PluginB

Forward a MIDI CC to the focused plugin window (for plugins that learn/respond to CCs).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYes
valueYes
channelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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 says 'Forward' but does not indicate if this alters persistent state, if it requires the plugin to be focused, or what side effects might occur. The description is minimal and leaves ambiguity about the operation's impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no fluff. It front-loads the action and resource, followed by a parenthetical qualifier. This is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description just barely covers the essential action. It lacks details on value ranges, channel mapping, or return values, which would be needed for a fully autonomous agent. For a simple MIDI forward, it might suffice, but gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has three parameters (cc, value, channel) but the description only indirectly references 'MIDI CC' which hints at 'cc'. There is no explanation of 'value' or 'channel' ranges or meanings. With zero parameter descriptions, the agent must infer from context, making this weak.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Forward' and the resource 'MIDI CC' to the 'focused plugin window', making the action specific. However, it does not explicitly distinguish from sibling tools that might also send MIDI data, though the focus on plugin window and CC is fairly unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions the condition 'for plugins that learn/respond to CCs', which gives some indication of when to use it. But it lacks explicit guidance on when not to use it or how it compares to alternatives like parameter automation. The guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_statusFl StatusA

Connection status (port, controller, scripts, FL running) with setup hints; reconnect=True forces a re-probe.

ParametersJSON Schema
NameRequiredDescriptionDefault
reconnectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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 mentions the tool returns status and setup hints, and that reconnect forces a re-probe. However, it does not explicitly state whether the operation is read-only or if there are side effects beyond the reconnect action, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the main purpose and then adds the parameter detail. Every word adds value, with no redundancy or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description outlines the key components of the returned status (port, controller, scripts, FL running) and mentions setup hints, giving a reasonable mental model of the output. However, it does not describe the exact format or structure of the output, and since an output schema exists but is not shown, the description alone is slightly incomplete but adequate for the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has no descriptions for parameters, so coverage is 0%. The description compensates by explaining the sole parameter 'reconnect' and its effect (forces a re-probe). This covers the parameter adequately, though it does not elaborate on the default behavior when reconnect is false, which is implied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: reporting connection status involving port, controller, scripts, and FL running state. It also mentions setup hints, giving a precise scope of what the tool checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. While the purpose implies it is for checking connection status, it does not state scenarios such as 'use before other FL operations' or contrast with sibling tools. The only usage hint is about the reconnect parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_transportFl TransportB

Transport control and status. action: play | pause | stop | record_on | record_off. loop_mode: song | pattern. speed: playback multiplier (1.0 normal). Call with no arguments for status only.

ParametersJSON Schema
NameRequiredDescriptionDefault
speedNo
actionNo
loop_modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description should disclose side effects, but it only lists actions without mentioning whether they modify project state or require specific permissions. The tool changes transport state (play, stop, record), but this is not explicitly flagged as potentially destructive or reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, using a clear format to list parameter values. It covers all key information without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple transport control tool, the description provides adequate context for usage, including status retrieval. However, it does not explain the return value or any error conditions, though an output schema is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains all three parameters and their allowed values: action, loop_mode, and speed. It also notes the default speed of 1.0, providing sufficient semantic context for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as responsible for transport control and status, listing the main actions. However, it does not explicitly differentiate it from the sibling tool fl_transport_command, which may also handle transport commands.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides basic usage details, such as calling with no arguments for status, but it does not explain when to use this tool over alternatives like fl_transport_command or fl_status. No comparison or selection guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_transport_commandFl Transport CommandC

Fire any FL global transport command by FPT name: Save, SaveNew, Metronome, Loop, LoopRecord, Overdub, Snap, StepEdit, TapTempo, AddMarker, Punch, CountDown, NextWindow, Escape, Enter, F1..F12, Undo...

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It implies mutation via 'fire' but does not mention prerequisites (e.g., an open project), side effects, idempotency, or what happens on invalid command names. It also does not describe the output, even though an output schema exists, leaving the behavior largely opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core purpose and then provides a comprehensive command list. It is efficient and avoids redundant wording, though the list is long. The structure is acceptable for a generic command tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's generic nature, the description is incomplete. It fails to explain the 'value' parameter, any constraints on command names, or the behavioral effects of firing commands. While an output schema exists, the description alone does not give an agent enough context to call the tool correctly, especially with no annotation support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain all parameters. It lists valid values for 'command' via examples, but provides no explanation for the 'value' parameter, which is an integer with a default of 1. The agent is left guessing what 'value' controls, making the description insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fires any FL global transport command by FPT name and enumerates many valid commands. This distinguishes it from siblings like fl_transport (which likely manages transport state) and fl_exec (which executes scripts). The verb 'fire' and the resource 'transport command' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. The description simply says what it does without mentioning that it should be used for transport commands not covered by fl_transport or other specialized tools. An agent has no explicit criteria for selecting this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_ui_actionFl Ui ActionA

Send an action to the focused FL window through the API (no OS keyboard): enter, escape, yes, no, delete, insert, copy, cut, paste, up, down, left, right, next, previous, next_window, close_popup, close_all_windows, zoom_h, zoom_v (value = delta). Optionally focus a window first.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
actionYes
windowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose potential side effects, permissions, error handling, or whether the action is synchronous. It mentions 'no OS keyboard' but does not elaborate on behavior when an invalid action is provided or if the window is not found. With no annotations provided, the description carries the full burden and falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the primary purpose and then efficiently lists the action values. It avoids redundancy and is easy to scan, though the list is long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not mention the output schema or return values, nor does it explain error handling or failure modes. For a tool with an output schema (as indicated in the context) and three parameters, the description leaves out critical details. It covers the action list and window focus hint but lacks completeness for a user to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists all valid 'action' values, which is crucial since the schema lacks enums. It clarifies that 'value' is a delta for zoom actions. However, it does not explain the 'window' parameter beyond 'Optionally focus a window first', leaving ambiguity about its format (e.g., name, ID) and required structure. Given the 0% schema coverage, this is a partial effort.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: sending an action to the focused FL window via the API. It specifies the resource (focused FL window), the verb (Send), and lists the exact valid actions. This distinguishes it from other tools that manipulate project state or query status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by stating actions are sent 'through the API (no OS keyboard)', implying it should be used when UI automation is needed without simulating keyboard input. It also notes that a window can be focused first, hinting at a prerequisite. However, it does not explicitly contrast with alternative tools or state 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.

fl_undoFl UndoA

Undo N steps (negative = redo). save_point="name" instead creates a named undo point. FL applies undo with a short delay.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNo
save_pointNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the short delay and the save_point behavior, which is useful. However, it does not mention that undo is a mutating operation, what state is affected, or any side effects beyond the undo itself. Since annotations are absent, more behavioral detail would be expected, but the delay note adds some transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary behavior, followed by the secondary mode and a timing caveat. No wasted words; every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter action tool, the description covers the essential usage: how to undo, redo, and create a save point, plus the delay. It does not specify return values or error behavior, but the output schema exists and the tool is simple. This is reasonably complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain parameters. It does explain steps (including negative direction) and save_point (creating a named point). This covers both parameters meaningfully, though it does not state defaults or edge cases like step count limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (undo/redo) and resource (FL steps), and clearly distinguishes two modes: undoing N steps and creating a named save point. This is unambiguous and differentiates from sibling tools like fl_transport_command or fl_exec.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 undo vs redo (negative steps) or when to prefer save_point over steps. It does not mention any alternatives or exclusions. The only context is the delay note, which hints at timing but not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_windowFl WindowA

Show/hide/focus an FL window (mixer, channel_rack, playlist, piano_roll, browser, plugin_picker...). Omit window to list visibility/focus of all.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoshow
windowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the main behavioral effects (show, hide, focus, list all) without relying on annotations. It does not mention potential side effects or return details, but for a simple UI-control tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with no redundant words, and clearly organizes the core action and the special case of omitting the window parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool, the description is complete enough to use confidently. It explains the main behavior and the key edge case (omitting window), though it does not describe return values or error conditions; the existence of an output schema reduces the need for that detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema itself has no parameter descriptions, the tool description fully explains both parameters: 'action' implies show/hide/focus values, and 'window' is identified by examples and the omission rule. This compensates for the lack of schema-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool's purpose with explicit verbs (show/hide/focus) and identifies the resource type (FL windows), with concrete examples (mixer, channel_rack, playlist). The omit-window behavior is also described, making the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides basic usage instructions, such as omitting the window parameter to list all windows, but does not explicitly compare with sibling tools or state when this tool should be preferred over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fl_write_midi_fileFl Write Midi FileA

Write a multi-track MIDI file; dragging it into FL creates one channel per track (GM sound) with markers. tracks: [{name, channel 0-15 (9 = drums), program 0-127, notes: [{midi, time, duration, velocity}]}]; markers: [{time, text}]. Times in beats.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
tempoYes
tracksYes
markersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the mapping behavior (each track becomes a channel with GM sound, markers included) and that times are in beats. However, it does not mention side effects like file overwriting, permissions, or whether the operation is non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and uses a clear format to explain nested parameters. It avoids unnecessary verbosity while covering all essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the parameter structure, the description covers purpose, parameter semantics, and key behavior. It does not mention return values, but an output schema exists, so this is acceptable. Minor gaps like file path handling are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds substantial meaning to the parameters by defining the structure of 'tracks' and 'markers', including field names, value ranges (channel 0-15, program 0-127), and units (time in beats). This goes far beyond the schema, which has no descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool writes a multi-track MIDI file and explains the behavior when dragged into FL. The verb 'write' and resource 'MIDI file' are specific, and it is distinct from sibling tools that manipulate FL state directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 over alternatives. It lacks information about conditions or prerequisites, such as when writing an external MIDI file is preferable to using FL's native channel/note editing tools.

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.

  1. 57 tool updatesv0.1.0
    • First observedfl_api_list
    • First observedfl_browser
    • First observedfl_capture_played_notes
    • First observedfl_channel_audition
    • First observedfl_channel_fx
    • First observedfl_channel_set
    • First observedfl_channel_step_params
    • First observedfl_channel_steps
    • First observedfl_channel_tools
    • First observedfl_channel_window
    • First observedfl_channels
    • First observedfl_edison_script
    • First observedfl_exec
    • First observedfl_get_levels
    • First observedfl_goto_bar
    • First observedfl_hint
    • First observedfl_internal
    • First observedfl_markers
    • First observedfl_master
    • First observedfl_mixer_effect
    • First observedfl_mixer_eq
    • First observedfl_mixer_send
    • First observedfl_mixer_track_set
    • First observedfl_mixer_tracks
    • First observedfl_music_drums
    • First observedfl_music_progression
    • First observedfl_music_theory
    • First observedfl_notes_add
    • First observedfl_notes_edit
    • First observedfl_notes_marker
    • First observedfl_notes_state
    • First observedfl_open_event_editor
    • First observedfl_options
    • First observedfl_param
    • First observedfl_param_scan
    • First observedfl_pattern_create
    • First observedfl_pattern_set
    • First observedfl_patterns
    • First observedfl_playlist_live
    • First observedfl_playlist_track_set
    • First observedfl_playlist_tracks
    • First observedfl_plugin_info
    • First observedfl_plugin_pads
    • First observedfl_plugin_params
    • First observedfl_plugin_preset
    • First observedfl_plugin_set_params
    • First observedfl_project_set
    • First observedfl_project_state
    • First observedfl_save_project
    • First observedfl_send_cc_to_plugin
    • First observedfl_status
    • First observedfl_transport
    • First observedfl_transport_command
    • First observedfl_ui_action
    • First observedfl_undo
    • First observedfl_window
    • First observedfl_write_midi_file

TDQS

C2.5/5.0

Scored across 57 tools

Disambiguation2/5

There are several overlapping tools that could be confused: fl_transport_command vs fl_transport, fl_param_scan vs fl_plugin_params, and fl_channel_tools vs the individual fl_channel_* tools. The presence of fl_param with no description adds further ambiguity.

Naming Consistency3/5

All tools share the fl_ prefix and mostly use snake_case, but the verb/object order is inconsistent: fl_notes_add vs fl_goto_bar, fl_plugin_params vs fl_param_scan, and many noun-only names like fl_markers, fl_master, and fl_param. The pattern is recognizable but not uniform.

Tool Count1/5

With 57 tools, the server is well above the typical 3-15 range and even beyond the 25+ too-many threshold. Although the FL Studio domain is broad, this many tools feels like an extreme call in a single MCP server.

Completeness5/5

The tool set covers nearly every FL Studio workflow: project/transport, channels, mixer, playlist, patterns, piano roll, plugins, browser, music theory, MIDI export, and Edison scripting. There are no major gaps for the apparent DAW-automation purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that connects AI assistants to FL Studio for music production via Virtual MIDI. It enables users to control transport, manage the mixer, write notes, and manipulate plugin parameters through natural language.
    1
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to control FL Studio on Windows through a local MCP server without cloud dependencies. Bridges MCP clients to FL Studio's Python scripting environment via file-based IPC for project management, transport control, and UI workflow automation.
    -
  • A
    license
    A
    quality
    C
    maintenance
    AI control for FL Studio via the Model Context Protocol — full in-DAW mixing (Mix Doctor diagnosis, gain staging, EQ/compression/reverb, reference matching), routing, and composition through Claude and any MCP client. 67 tools. Windows.
    67
    34
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MadBlast0/Fl-Studio-MCP'

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