Skip to main content
Glama

piano_roll_write_pattern

Write MIDI notes to a specific FL Studio channel and pattern by auto-switching to the target, clearing prior notes, and optionally restoring the starting position after writing.

Instructions

Write notes to a specific channel × pattern using autolocate-style switching.

Mirrors piano_roll_read_patterns_autolocate: switches to the target pattern via patterns.select (no openEventEditor, no visual flicker), selects the channel, then stages a clear+add_notes action sequence and fires Cmd+Opt+Y.

Args: channel: Channel rack index (0-based). pattern: Pattern index (1-based, as returned by patterns.list). notes: List of notes with midi, time_bars, duration_bars, velocity. clear_first: Clear the pattern before writing (default True). restore_start: Restore the original pattern/channel when done (default False — stays on last edited).

Returns: {ok, note_count, hotkey_sent, restored}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesYes
channelYes
patternYes
clear_firstNo
restore_startNo
Install Server

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it discloses the internal mechanism (patterns.select, no openEventEditor), the side effects (clear+add_notes, Cmd+Opt+Y), default destructive behavior (clear_first defaults to True), and selection persistence (restore_start defaults to False, stays on last edited). It also details the return shape. This is exemplarily transparent for a mutation 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 well-structured: a one-sentence purpose, a brief mechanism paragraph, then Args and Returns sections. Every sentence adds information, and the most important scoping/behavioral details are front-loaded. It is detailed yet compact.

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 tool with no annotations, no output schema, and no per-property schema descriptions, the description covers the action, mechanism, side effects, parameters, defaults, and return value. It falls just short of complete because it does not disambiguate from piano_roll_write_patterns and does not document all valid note fields.

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?

With 0% schema description coverage, the description compensates well for top-level parameters: it explains 0-based channel, 1-based pattern, clear_first default, and restore_start behavior. However, the notes parameter is only partially described—it mentions midi, time_bars, duration_bars, and velocity but omits pan, time, and duration, which are present in the schema and could affect how an agent constructs notes.

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 the action clearly: 'Write notes to a specific channel × pattern using autolocate-style switching.' It identifies the verb, resource, and mechanism without vagueness. However, it does not explicitly distinguish this tool from the sibling piano_roll_write_patterns, so it earns a 4 rather than 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 Guidelines3/5

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

The description gives useful context—this uses patterns.select, avoids visual flicker, and mirrors piano_roll_read_patterns_autolocate—so the agent can infer a use case. But it never explicitly says when to prefer this tool over alternatives such as piano_roll_write_patterns 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.

Other Tools

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/marconadas/MacFLStudioMCP'

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