Skip to main content
Glama

stop_clip

Stop playback of a specific clip in Ableton Live by specifying its track and slot positions, allowing precise control over audio or MIDI sequences during music production.

Instructions

Stop playing a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
track_indexYes
clip_indexYes

Implementation Reference

  • MCP tool handler for 'stop_clip'. Forwards the command to the Ableton remote script via the connection's send_command method.
    @mcp.tool()
    def stop_clip(ctx: Context, track_index: int, clip_index: int) -> str:
        """
        Stop playing a clip.
        
        Parameters:
        - track_index: The index of the track containing the clip
        - clip_index: The index of the clip slot containing the clip
        """
        try:
            ableton = get_ableton_connection()
            result = ableton.send_command("stop_clip", {
                "track_index": track_index,
                "clip_index": clip_index
            })
            return f"Stopped clip at track {track_index}, slot {clip_index}"
        except Exception as e:
            logger.error(f"Error stopping clip: {str(e)}")
            return f"Error stopping clip: {str(e)}"
  • Helper method in the Ableton remote script that performs the actual clip stopping using Live API: clip_slot.stop()
    def _stop_clip(self, track_index, clip_index):
        """Stop a clip"""
        try:
            if track_index < 0 or track_index >= len(self._song.tracks):
                raise IndexError("Track index out of range")
            
            track = self._song.tracks[track_index]
            
            if clip_index < 0 or clip_index >= len(track.clip_slots):
                raise IndexError("Clip index out of range")
            
            clip_slot = track.clip_slots[clip_index]
            
            clip_slot.stop()
            
            result = {
                "stopped": True
            }
            return result
        except Exception as e:
            self.log_message("Error stopping clip: " + str(e))
            raise
  • Dispatch handler in remote script that routes 'stop_clip' command to the _stop_clip method.
    elif command_type == "stop_clip":
        track_index = params.get("track_index", 0)
        clip_index = params.get("clip_index", 0)
        result = self._stop_clip(track_index, clip_index)
  • 'stop_clip' is registered as a state-modifying command in the AbletonConnection.send_command method.
    is_modifying_command = command_type in [
        "create_midi_track", "create_audio_track", "set_track_name",
        "create_clip", "add_notes_to_clip", "set_clip_name",
        "set_tempo", "fire_clip", "stop_clip", "set_device_parameter",
        "start_playback", "stop_playback", "load_instrument_or_effect"
    ]
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 of behavioral disclosure. It states the action ('Stop playing') but doesn't describe what happens after stopping (e.g., does the clip reset to start, is there any feedback, are there side effects like track muting?). For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its 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 appropriately sized with a clear purpose statement followed by a parameter list. The first sentence is front-loaded with the core action, and the parameter section is organized. However, the parameter explanations are minimal and could be more informative without sacrificing conciseness.

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 (a mutation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error handling, return values, or side effects, and parameter details are insufficient. For a tool that modifies state, more context is needed to ensure safe and correct usage.

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 both parameters with brief explanations, but schema description coverage is 0%, so the schema provides no additional details. The description adds basic meaning ('index of the track', 'index of the clip slot') but doesn't clarify valid ranges, indexing conventions (0-based vs 1-based), or what happens with invalid indices. It compensates somewhat but not fully for the schema's lack of descriptions.

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 ('Stop playing') and resource ('a clip'), making the purpose immediately understandable. It distinguishes from siblings like 'fire_clip' and 'stop_playback' by specifying it stops a specific clip rather than triggering one or stopping overall playback. However, it doesn't explicitly contrast with all relevant siblings like 'stop_playback'.

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 doesn't mention prerequisites (e.g., a clip must be playing), when not to use it, or direct comparisons to siblings like 'stop_playback' (which stops all playback) or 'fire_clip' (which starts a clip). Usage is implied but not explicitly stated.

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/ahujasid/ableton-mcp'

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