Skip to main content
Glama

adjust_playback_rate

Set the playback rate of an audio item to alter its speed, with 1.0 for normal and lower values for slower playback, enabling time-stretching effects.

Instructions

Adjust playback rate of an audio item. 1.0 = normal speed, 0.5 = half speed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
track_indexYes
item_indexYes
rateYes

Implementation Reference

  • The actual implementation of adjust_playback_rate. It gets the project, track, and item via indices, sets the active take's playback_rate, and returns success/failure.
    def adjust_playback_rate(track_index: int, item_index: int, rate: float) -> dict:
        """Adjust playback rate of an audio item. 1.0 = normal speed, 0.5 = half speed."""
        try:
            project = get_project()
            track = project.tracks[track_index]
            item = track.items[item_index]
            take = item.active_take
            take.playback_rate = rate
            return {
                "success": True,
                "track_index": track_index,
                "item_index": item_index,
                "playback_rate": take.playback_rate,
            }
        except Exception as e:
            return {"success": False, "error": str(e)}
  • The @mcp.tool() decorator registers adjust_playback_rate as an MCP tool.
    @mcp.tool()
    def adjust_playback_rate(track_index: int, item_index: int, rate: float) -> dict:
  • The audio_tools module is imported and its register_tools function is called in server.py, which registers all audio tools including adjust_playback_rate.
    from reaper_mcp.project_tools import register_tools as _reg_project
    from reaper_mcp.track_tools import register_tools as _reg_track
    from reaper_mcp.midi_tools import register_tools as _reg_midi
    from reaper_mcp.fx_tools import register_tools as _reg_fx
    from reaper_mcp.audio_tools import register_tools as _reg_audio
    from reaper_mcp.mixing_tools import register_tools as _reg_mixing
    from reaper_mcp.render_tools import register_tools as _reg_render
    from reaper_mcp.mastering_tools import register_tools as _reg_mastering
    from reaper_mcp.analysis_tools import register_tools as _reg_analysis
    
    _reg_project(mcp)
    _reg_track(mcp)
    _reg_midi(mcp)
    _reg_fx(mcp)
    _reg_audio(mcp)
    _reg_mixing(mcp)
    _reg_render(mcp)
    _reg_mastering(mcp)
    _reg_analysis(mcp)
Behavior2/5

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

No annotations are provided, and the description gives minimal behavioral disclosure. It explains rate unit but doesn't mention range limits, whether pitch is preserved, or any side effects. The agent is left to infer behavior from the input schema.

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 short and front-loaded with the action. Every sentence is relevant, though more details could be added without becoming verbose. It is efficiently stated.

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 required parameters and no output schema, the description is too minimal. It lacks instructions on how to select the correct track and item, and what the effect entails (e.g., real-time, destructive). The agent may struggle to invoke it correctly without external knowledge.

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% with no descriptions on parameters. The description adds meaning only for the 'rate' parameter by giving examples. The 'track_index' and 'item_index' are left unexplained, forcing the agent to rely on naming conventions alone.

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 adjusts playback rate of an audio item and provides common values (1.0 normal, 0.5 half). However, 'audio item' is somewhat vague and could be more specific, but the purpose is well understood.

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 use this tool versus alternatives like adjust_pitch or other manipulation tools. There is no when-not-to-use or context for choosing this over siblings.

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/bonfire-audio/reaper-mcp'

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