Skip to main content
Glama
ismail: agent DAW (MCP server)

ismail: agent DAW (MCP server)

Live Midi Clock In

live_midi_clock_in

Syncs an ismail set to an external MIDI clock from a DAW or drum machine, following tempo, beat, and optionally transport, with offset and tolerance controls.

Instructions

The set follows another app's MIDI clock in: a DAW or a drum machine sets the set's tempo and beat, and with transport='follow' its Start, Stop and Continue. Reach for it when the set should follow, sync to or slave to an external clock, the tempo of my drum machine or my DAW, when something else leads and ismail plays in time with it (the other way round, the set leading: live_midi_clock). source: an input's name or a unique part of it (midi_sources; Ableton or FL Studio send it through a loopMIDI port). The tempo comes from the 24 ticks per beat through a loop filter (bandwidth_hz, default 0.5: a steady tempo change shows about 0.215 / bandwidth_hz s late, 430 ms by default; higher follows sooner and wobbles more on a jittery clock). The set changes tempo the way live_tempo does (its notes render again from the change), at the first beat its renders can reach, at most once every step_beats (default one bar), and only when the tempo is off by more than tempo_tol_bpm (default 0.25) or the beat by more than phase_tol_ms (default 4); each step bends the tempo by at most max_bend_pct (default 3) to land ismail's beats on theirs. offset_ms: positive lands ismail later, for an app whose sound comes out late (-500 to 2000; set it by ear against their kick). transport: 'follow' (default): their Stop silences the set at once (its time and queue run on), Start or Continue bring it back in on the first of their bar lines it can reach (ismail mixes ahead, so not their very first beat): it runs through the silent stretch at the tempo that lands its own bar line there, and the reply's news says "their bar 3 = ismail bar 17". Start counts from their bar 1, Continue from their Song Position. A Start while the set plays silences it until that bar (one to two bars). 'tempo': tempo and beats only; their transport is ignored. A dropout (no tick for dropout_ms, default 300) holds the last tempo and says so; the set plays on. Clock out (live_midi_clock) and the arp follow the followed tempo. Clock in and clock out on one port is refused (the set would chase its own clock). While it is on, live_tempo is refused. Call again to change a setting; on=False lets go (the tempo holds). With no source: the inputs and the follow; live_status shows it too. A video or a DAW's timecode: live_midi_timecode_in; an Ableton Link session: live_link. Not yet: their meter (ismail's beats per bar is assumed), forwarding their Start/Stop to clock out.

Input Schema

NameRequiredDescriptionDefault
onNo
sourceNo
projectYes
offset_msNo
transportNo
dropout_msNo
step_beatsNo
bandwidth_hzNo
max_bend_pctNo
phase_tol_msNo
tempo_tol_bpmNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.5

TDQS

A4.8/5.0
Behavior5/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 and does so: it discloses tempo-filter latency math (about 0.215/bandwidth_hz s, 430 ms default), the tempo-change cadence and tolerance gates (step_beats, tempo_tol_bpm, phase_tol_ms, max_bend_pct), dropout behavior (holds last tempo at 300 ms), and hard refusals (clock in and out on one port is refused; live_tempo refused while on). It even declares unsupported behavior (their meter is assumed, Start/Stop is not forwarded to clock out).

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?

Purpose and the sibling routing are correctly front-loaded, and nearly every clause carries real information. However, the body is a dense, run-on block of roughly 350 words that mixes parameter semantics, transport state machine, latency math and limitations without paragraph or label structure, which makes it hard to scan and pushes key defaults deep into the text.

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?

For an 11-parameter sync tool this is essentially complete: the interaction with live_tempo, the clock-out collision refusal, the no-source fallback ('the inputs and the follow; live_status shows it too'), and the explicit not-yet list are all covered. Return values need not be explained since an output schema exists.

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 coverage is 0% across 11 parameters, so the description must compensate, and it does for ten of them: source resolution rules, offset_ms sign convention and -500 to 2000 range plus tuning advice, transport's two modes and their exact consequences, dropout_ms, step_beats, bandwidth_hz with its tradeoff, max_bend_pct, phase_tol_ms and tempo_tol_bpm with defaults. Only 'project' (the required parameter) is left unexplained, which is the sole 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 first sentence names the specific verb and resource: the set follows another app's MIDI clock in, and the external app sets tempo, beat, and (with transport='follow') Start/Stop/Continue. It explicitly distinguishes the inverse case ('the other way round, the set leading: live_midi_clock'), so an agent can separate it from live_midi_clock, live_midi_timecode_in and live_link without opening a schema.

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?

Use conditions are stated in plain trigger language ('follow, sync to or slave to an external clock', 'my drum machine or my DAW') plus explicit exclusions routed to siblings: video/timecode goes to live_midi_timecode_in, Ableton Link to live_link. It also states the conflict rule that live_tempo is refused while this is on, and that 'on=False lets go (the tempo holds)'.

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

Deploy Server

Other Tools