Skip to main content
Glama

mcp_opendaw_apply_articulation

Apply staccato, legato, tenuto, or accent articulation to existing MIDI notes to reshape durations and velocities for expressive phrasing.

Instructions

Apply articulation to existing notes — staccato, legato, tenuto, accent.

Reshapes note durations relative to their grid position to change phrasing character. Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios — the fundamental dimension of musical articulation.

unit_index: AU index. track_index: Note track index. region_index: Region index (-1 = all regions on the track). articulation: Articulation type:

  • "staccato" — shorten notes to fraction of their grid slot (default 50%)

  • "legato" — extend notes to nearly the next note's start (default 95%)

  • "tenuto" — hold notes to full grid slot (100%, no gap, no overlap)

  • "accent" — boost velocity on notes that fall on beat boundaries (downbeats) amount: Articulation depth 0-1 (default 0.5):

  • staccato: fraction of slot (0.3 = very short, 0.7 = moderate)

  • legato: overlap fraction (0.9 = near-full, 0.5 = half-fill)

  • tenuto: (unused, always full)

  • accent: velocity boost amount (0.3 = subtle, 1.0 = strong accent)

Returns per-region note counts and total notes reshaped.

Examples: apply_articulation(articulation="staccato", amount=0.3) # crisp, detached apply_articulation(articulation="legato", amount=0.95) # smooth, connected apply_articulation(articulation="accent", amount=0.8) # strong downbeat accents

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountNo
unit_indexNo
track_indexNo
articulationNostaccato
region_indexNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it explains that the tool deterministically reshapes note durations, details each articulation's specific effect (e.g., 'staccato — shorten notes to fraction of their grid slot'), and states the return value. However, it does not explicitly mention irreversibility or in-place modification, though the sibling undo tool exists; this small gap keeps it from a 5.

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 long but appropriately so for a tool with 5 parameters and 4 articulation variants. It uses clear sectioning, bullet lists for parameters, and concrete examples. No sentence is superfluous; each adds either definitional precision or practical guidance, making the length justified.

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

Completeness5/5

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

Despite no annotations and zero schema descriptions, the description covers the tool's purpose, parameter semantics, return type, examples, and relationship to sibling tools. It even explains the algorithmic behavior for each articulation and the impact of amount. The tool is complex, but the description leaves little ambiguity about what will happen when invoked.

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?

Schema description coverage is 0%, but the description fully compensates by explaining every parameter: unit_index, track_index, region_index (with the -1 special case), articulation (with per-type behavior), and amount (with per-articulation meaning and examples). This far exceeds what the bare schema provides, giving the agent complete parameter understanding.

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 opens with a specific verb and resource: 'Apply articulation to existing notes' and enumerates the articulation types. It also explicitly distinguishes the tool from siblings: 'Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios', making its scope and unique purpose unmistakable.

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

Usage Guidelines5/5

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

The description names two direct alternatives (velocity_curve, humanize) and explains why this tool is the right choice for deterministic articulation: 'Unlike velocity_curve (dynamics) or humanize (random), this applies deterministic duration ratios'. This gives clear when-to-use guidance relative to at least two siblings, and the examples further illustrate appropriate invocations.

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

Install Server

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/ameobius-ai/opendaw-mcp'

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