← WebMCP Directory

Tool tree

drora.github.io

Media & PersonalTools verified
Website
Strudel Studio
Explore capabilities
    get_sessionAnswer

    Get the full current Strudel Studio session + Jam state: tracks (name, role, code, muted, soloed, volume, locked, octave), BPM, playback, kitId, songRoot/songScale, songWalk (centers + patternId + walkLength + concertNames chips), intensityLevel (1–4), spawnedPadId/spawnedBassId, A/B active, and cheap phase. Always call this first.

    View tool JSON
    {
      "name": "get_session",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get the full current Strudel Studio session + Jam state: tracks (name, role, code, muted, soloed, volume, locked, octave), BPM, playback, kitId, songRoot/songScale, songWalk (centers + patternId + walkLength + concertNames chips), intensityLevel (1–4), spawnedPadId/spawnedBassId, A/B active, and cheap phase. Always call this first.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    get_jam_stateAnswer

    Jam-only snapshot: kitId, vibe, songRoot/songScale, songWalk (centers + walkLength + concertNames), intensityLevel (1–4), spawnedPadId/spawnedBassId, lockKit, A/B slots, activeVariant, lastPeek, undoDepth, soundTrackId/codeTrackId.

    View tool JSON
    {
      "name": "get_jam_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Jam-only snapshot: kitId, vibe, songRoot/songScale, songWalk (centers + walkLength + concertNames), intensityLevel (1–4), spawnedPadId/spawnedBassId, lockKit, A/B slots, activeVariant, lastPeek, undoDepth, soundTrackId/codeTrackId.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    get_phaseAnswer

    Scheduler cycle + normalized phase [0,1). Uses liveUpdateEngine / getSchedulerCycle when available.

    View tool JSON
    {
      "name": "get_phase",
      "kind": "answer",
      "impl": "imperative",
      "description": "Scheduler cycle + normalized phase [0,1). Uses liveUpdateEngine / getSchedulerCycle when available.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    set_bpmAction

    Set the global tempo in BPM. Updates the session store and, while playing, recomposes the full pattern at the new tempo.

    View tool JSON
    {
      "name": "set_bpm",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the global tempo in BPM. Updates the session store and, while playing, recomposes the full pattern at the new tempo.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bpm": {
            "type": "number",
            "minimum": 20,
            "maximum": 300,
            "description": "Beats per minute"
          }
        },
        "required": [
          "bpm"
        ]
      },
      "page": "/strudel-synth/"
    }
    list_kitsAnswer

    List Jam kits (id, name, bpm, drumsBank, vibe, description, shuffle{groove,density,root,scale}). Optional search / soft tags (tempo:slow|mid|fast, bank:909, vibe:techno) / vibe / tempo filters.

    View tool JSON
    {
      "name": "list_kits",
      "kind": "answer",
      "impl": "imperative",
      "description": "List Jam kits (id, name, bpm, drumsBank, vibe, description, shuffle{groove,density,root,scale}). Optional search / soft tags (tempo:slow|mid|fast, bank:909, vibe:techno) / vibe / tempo filters.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "vibe": {
            "type": "string",
            "enum": [
              "techno",
              "lofi",
              "ambient",
              "house"
            ]
          },
          "tempo": {
            "type": "string",
            "enum": [
              "slow",
              "mid",
              "fast"
            ]
          }
        }
      },
      "page": "/strudel-synth/"
    }
    get_kitAnswer

    Full kit by id: layout tracks + metadata + shuffle profile (groove/density/root/scale/melodicSounds/fxBias/pinN). Prefer this over inventing mini-notation.

    View tool JSON
    {
      "name": "get_kit",
      "kind": "answer",
      "impl": "imperative",
      "description": "Full kit by id: layout tracks + metadata + shuffle profile (groove/density/root/scale/melodicSounds/fxBias/pinN). Prefer this over inventing mini-notation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/strudel-synth/"
    }
    apply_kitAction

    Apply a kit (same as Jam picker): regenerates tracks from the kit shuffle profile, then reshuffles. Peek `kit · Name · shuffled`. While playing, preserves current BPM; when stopped, adopts kit BPM.

    View tool JSON
    {
      "name": "apply_kit",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a kit (same as Jam picker): regenerates tracks from the kit shuffle profile, then reshuffles. Peek `kit · Name · shuffled`. While playing, preserves current BPM; when stopped, adopts kit BPM.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "fromPicker": {
            "type": "boolean",
            "description": "Close kit picker if open"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_lock_kitAction

    Legacy kit-bank lock (UI omitted). When true, reshuffle keeps the kit drum bank; when false, free bank shuffle. Prefer per-track set_track_lock for pinning lanes.

    View tool JSON
    {
      "name": "set_lock_kit",
      "kind": "act",
      "impl": "imperative",
      "description": "Legacy kit-bank lock (UI omitted). When true, reshuffle keeps the kit drum bank; when false, free bank shuffle. Prefer per-track set_track_lock for pinning lanes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lock": {
            "type": "boolean"
          }
        },
        "required": [
          "lock"
        ]
      },
      "page": "/strudel-synth/"
    }
    shuffle_soundsAction

    Reshuffle unlocked tracks from the active kit shuffle profile + drumsBank when kitId is set (else free pools). Optional trackId reshuffles a single unlocked lane; omit for all unlocked. Respects pinEffects; locked tracks are skipped (single-track returns error if locked/missing).

    View tool JSON
    {
      "name": "shuffle_sounds",
      "kind": "act",
      "impl": "imperative",
      "description": "Reshuffle unlocked tracks from the active kit shuffle profile + drumsBank when kitId is set (else free pools). Optional trackId reshuffles a single unlocked lane; omit for all unlocked. Respects pinEffects; locked tracks are skipped (single-track returns error if locked/missing).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string",
            "description": "Optional track id — reshuffle only this lane (keep sheet open / one-track mode)"
          }
        }
      },
      "page": "/strudel-synth/"
    }
    set_song_harmonyAction

    Set song root + scale (same as Jam key/scale controls). Scales: minor/major/dorian/pentatonic/mixolydian/phrygian/lydian/harmonic_minor. Remaps existing note() melodic lanes like the UI (skips locked / non-melodic). get_session exposes songRoot/songScale + songWalk.

    View tool JSON
    {
      "name": "set_song_harmony",
      "kind": "act",
      "impl": "imperative",
      "description": "Set song root + scale (same as Jam key/scale controls). Scales: minor/major/dorian/pentatonic/mixolydian/phrygian/lydian/harmonic_minor. Remaps existing note() melodic lanes like the UI (skips locked / non-melodic). get_session exposes songRoot/songScale + songWalk.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "root": {
            "type": "string",
            "enum": [
              "c",
              "c#",
              "d",
              "eb",
              "e",
              "f",
              "f#",
              "g",
              "ab",
              "a",
              "bb",
              "b"
            ],
            "description": "Song root pitch class"
          },
          "scale": {
            "type": "string",
            "enum": [
              "minor",
              "major",
              "dorian",
              "pentatonic",
              "mixolydian",
              "phrygian",
              "lydian",
              "harmonic_minor"
            ],
            "description": "Song scale kind"
          },
          "remap": {
            "type": "boolean",
            "description": "Remap melodic notes (default true)"
          }
        },
        "required": [
          "root",
          "scale"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_walk_lengthAction

    Set chord-walk length N (1–4): N chord centers stretched across N drum cycles (1 chord/cycle by default; densify-walk → 2/cycle). Reshuffles unlocked melodic; drums/hats/fx unchanged. Sticky N for later Song Shuffle. Not Intensity L4.

    View tool JSON
    {
      "name": "set_walk_length",
      "kind": "act",
      "impl": "imperative",
      "description": "Set chord-walk length N (1–4): N chord centers stretched across N drum cycles (1 chord/cycle by default; densify-walk → 2/cycle). Reshuffles unlocked melodic; drums/hats/fx unchanged. Sticky N for later Song Shuffle. Not Intensity L4.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "walkLength": {
            "type": "number",
            "enum": [
              1,
              2,
              3,
              4
            ],
            "description": "Walk length in cycles (1–4)"
          }
        },
        "required": [
          "walkLength"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_walk_centerAction

    Replace one chord-walk slot (0-based index) with a legal in-scale center (degree + quality). Same pool as walk generation (NEIGHBORS + tonic); rejects illegal / out-of-range. Keeps walk length; reshuffles unlocked melodic (skips Pads Keep / locked). Dice / New kit / Song Shuffle still roll a fresh walk.

    View tool JSON
    {
      "name": "set_walk_center",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace one chord-walk slot (0-based index) with a legal in-scale center (degree + quality). Same pool as walk generation (NEIGHBORS + tonic); rejects illegal / out-of-range. Keeps walk length; reshuffles unlocked melodic (skips Pads Keep / locked). Dice / New kit / Song Shuffle still roll a fresh walk.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number",
            "description": "Walk slot index 0..N-1"
          },
          "degree": {
            "type": "number",
            "description": "Semitones from song home (0, 2, 3, 5, 7, 8, 10…)"
          },
          "quality": {
            "type": "string",
            "enum": [
              "min",
              "maj"
            ],
            "description": "Triad quality"
          }
        },
        "required": [
          "index",
          "degree",
          "quality"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_octaveAction

    Set melodic track octave offset (−3…+3), shifting note() pitches like the Mix sheet. Errors on drums/hihats/fx.

    View tool JSON
    {
      "name": "set_octave",
      "kind": "act",
      "impl": "imperative",
      "description": "Set melodic track octave offset (−3…+3), shifting note() pitches like the Mix sheet. Errors on drums/hihats/fx.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          },
          "octave": {
            "type": "number",
            "minimum": -3,
            "maximum": 3,
            "description": "Octave offset −3…+3"
          }
        },
        "required": [
          "trackId",
          "octave"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_track_lockAction

    Lock or unlock a track lane (pins Shuffle / Shuffle this / Mutate / song harmony remap). Uses session toggle/set. shuffle_sounds already skips locked.

    View tool JSON
    {
      "name": "set_track_lock",
      "kind": "act",
      "impl": "imperative",
      "description": "Lock or unlock a track lane (pins Shuffle / Shuffle this / Mutate / song harmony remap). Uses session toggle/set. shuffle_sounds already skips locked.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          },
          "locked": {
            "type": "boolean"
          }
        },
        "required": [
          "trackId",
          "locked"
        ]
      },
      "page": "/strudel-synth/"
    }
    update_trackAction

    Replace a track's Strudel code. Queued on the next cycle boundary when playing. Prefer quantization 1 or 2. Call get_reference / search_strudel_docs before writing code.

    View tool JSON
    {
      "name": "update_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace a track's Strudel code. Queued on the next cycle boundary when playing. Prefer quantization 1 or 2. Call get_reference / search_strudel_docs before writing code.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string",
            "description": "Track ID"
          },
          "code": {
            "type": "string",
            "description": "Complete Strudel code for the track"
          },
          "quantization": {
            "type": "string",
            "enum": [
              "1",
              "2",
              "4",
              "immediate"
            ],
            "description": "Cycle quantization. Default: 1"
          }
        },
        "required": [
          "trackId",
          "code"
        ]
      },
      "page": "/strudel-synth/"
    }
    add_trackAction

    Add a track (role + optional name/code). Without code, generates a seed-aware pattern from the current song seed / root / scale (same as Jam + Track). Explicit code is used as-is.

    View tool JSON
    {
      "name": "add_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Add a track (role + optional name/code). Without code, generates a seed-aware pattern from the current song seed / root / scale (same as Jam + Track). Explicit code is used as-is.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Track display name"
          },
          "role": {
            "type": "string",
            "enum": [
              "drums",
              "hihats",
              "bass",
              "lead",
              "pad",
              "arp",
              "fx",
              "vox",
              "custom"
            ],
            "description": "Track role"
          },
          "code": {
            "type": "string",
            "description": "Optional Strudel code"
          }
        },
        "required": [
          "name",
          "role"
        ]
      },
      "page": "/strudel-synth/"
    }
    remove_trackAction

    Remove a track by ID. Never remove without asking the user. Keeps ≥1 track.

    View tool JSON
    {
      "name": "remove_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove a track by ID. Never remove without asking the user. Keeps ≥1 track.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        },
        "required": [
          "trackId"
        ]
      },
      "page": "/strudel-synth/"
    }
    mute_trackAction

    Toggle mute on a track.

    View tool JSON
    {
      "name": "mute_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Toggle mute on a track.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        },
        "required": [
          "trackId"
        ]
      },
      "page": "/strudel-synth/"
    }
    solo_trackAction

    Toggle solo on a track.

    View tool JSON
    {
      "name": "solo_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Toggle solo on a track.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        },
        "required": [
          "trackId"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_volumeAction

    Set track volume (0–1.5). Mix change — applied immediately when playing.

    View tool JSON
    {
      "name": "set_volume",
      "kind": "act",
      "impl": "imperative",
      "description": "Set track volume (0–1.5). Mix change — applied immediately when playing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          },
          "volume": {
            "type": "number",
            "minimum": 0,
            "maximum": 1.5
          }
        },
        "required": [
          "trackId",
          "volume"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_active_trackAction

    Focus a track (activeTrackId) for editor/quantization defaults.

    View tool JSON
    {
      "name": "set_active_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Focus a track (activeTrackId) for editor/quantization defaults.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        },
        "required": [
          "trackId"
        ]
      },
      "page": "/strudel-synth/"
    }
    list_sound_choicesAnswer

    List SOUND_CHOICES for a track role (or active track). Shows which choice is currently matched.

    View tool JSON
    {
      "name": "list_sound_choices",
      "kind": "answer",
      "impl": "imperative",
      "description": "List SOUND_CHOICES for a track role (or active track). Shows which choice is currently matched.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        }
      },
      "page": "/strudel-synth/"
    }
    apply_sound_choiceAction

    Apply a SOUND_CHOICES id to a track (bank/sound/n via applySoundChoiceToCode).

    View tool JSON
    {
      "name": "apply_sound_choice",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a SOUND_CHOICES id to a track (bank/sound/n via applySoundChoiceToCode).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          },
          "choiceId": {
            "type": "string"
          }
        },
        "required": [
          "trackId",
          "choiceId"
        ]
      },
      "page": "/strudel-synth/"
    }
    set_fxAction

    Set or clear a code effect on a track (lpf/hpf/room/roomsize/delay/delaytime/delayfeedback/gain/shape/…). Pass value null or clear:true to remove.

    View tool JSON
    {
      "name": "set_fx",
      "kind": "act",
      "impl": "imperative",
      "description": "Set or clear a code effect on a track (lpf/hpf/room/roomsize/delay/delaytime/delayfeedback/gain/shape/…). Pass value null or clear:true to remove.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          },
          "effect": {
            "type": "string",
            "description": "Effect key. Known: lpf, hpf, lpq, hpq, bpf, bandpass, vowel, room, size, roomsize, delay, delaytime, delayfeedback, gain, shape, distort, crush, coarse, phaser, tremolo, pan, attack, decay, sustain…"
          },
          "value": {
            "type": "number",
            "description": "Scalar value; omit/null with clear to remove"
          },
          "clear": {
            "type": "boolean",
            "description": "Remove the effect"
          }
        },
        "required": [
          "trackId",
          "effect"
        ]
      },
      "page": "/strudel-synth/"
    }
    open_code_sheetAction

    Open the Jam Code sheet for a track (setCodeTrackId).

    View tool JSON
    {
      "name": "open_code_sheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Open the Jam Code sheet for a track (setCodeTrackId).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string"
          }
        },
        "required": [
          "trackId"
        ]
      },
      "page": "/strudel-synth/"
    }
    close_code_sheetAction

    Close the Jam Code sheet.

    View tool JSON
    {
      "name": "close_code_sheet",
      "kind": "act",
      "impl": "imperative",
      "description": "Close the Jam Code sheet.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    stash_abAction

    Stash current arrangement into A or B slot.

    View tool JSON
    {
      "name": "stash_ab",
      "kind": "act",
      "impl": "imperative",
      "description": "Stash current arrangement into A or B slot.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slot": {
            "type": "string",
            "enum": [
              "a",
              "b"
            ]
          }
        },
        "required": [
          "slot"
        ]
      },
      "page": "/strudel-synth/"
    }
    punch_abAction

    Punch A or B arrangement (stashes first if empty).

    View tool JSON
    {
      "name": "punch_ab",
      "kind": "act",
      "impl": "imperative",
      "description": "Punch A or B arrangement (stashes first if empty).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slot": {
            "type": "string",
            "enum": [
              "a",
              "b"
            ]
          }
        },
        "required": [
          "slot"
        ]
      },
      "page": "/strudel-synth/"
    }
    toggle_abAction

    Toggle between A/B (stash missing slots, then punch the other).

    View tool JSON
    {
      "name": "toggle_ab",
      "kind": "act",
      "impl": "imperative",
      "description": "Toggle between A/B (stash missing slots, then punch the other).",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    list_mutationsAnswer

    Catalog of Jam Mutate transforms (id, label, hint, scope song|track). Includes intensity-up/down (footer stepper: 1 as-is · 2 hats fill gaps (incl. hh(3,8) / .euclid) · 3 pad → arp → keys → fx (L3 spawn shared with L4; no L4 reshuffle) · 4 bd ~ ~ ~ → bd ~ bd ~ · *N→*2N · perc snares; bass+keys walk @0.5; no mush FX). Song-scope ops apply to all unlocked lanes; track-scope uses last-touched or apply_mutate trackId.

    View tool JSON
    {
      "name": "list_mutations",
      "kind": "answer",
      "impl": "imperative",
      "description": "Catalog of Jam Mutate transforms (id, label, hint, scope song|track). Includes intensity-up/down (footer stepper: 1 as-is · 2 hats fill gaps (incl. hh(3,8) / .euclid) · 3 pad → arp → keys → fx (L3 spawn shared with L4; no L4 reshuffle) · 4 bd ~ ~ ~ → bd ~ bd ~ · *N→*2N · perc snares; bass+keys walk @0.5; no mush FX). Song-scope ops apply to all unlocked lanes; track-scope uses last-touched or apply_mutate trackId.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    apply_mutateAction

    Apply a Mutate transform (same as Mutate sheet). intensity-up/down = footer Intensity stepper (1 as-is · 2 hats fill gaps (incl. hh(3,8) / .euclid) · 3 pad → arp → keys → fx (L3 spawn shared with L4; no L4 reshuffle) · 4 bd ~ ~ ~ → bd ~ bd ~ · *N→*2N · perc snares; bass+keys walk @0.5; no mush FX; kit/Shuffle resets to 1). Song-scope = all unlocked (skips locked); track-scope = optional trackId else last-touched/active. Undo snapshots (batch for song).

    View tool JSON
    {
      "name": "apply_mutate",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a Mutate transform (same as Mutate sheet). intensity-up/down = footer Intensity stepper (1 as-is · 2 hats fill gaps (incl. hh(3,8) / .euclid) · 3 pad → arp → keys → fx (L3 spawn shared with L4; no L4 reshuffle) · 4 bd ~ ~ ~ → bd ~ bd ~ · *N→*2N · perc snares; bass+keys walk @0.5; no mush FX; kit/Shuffle resets to 1). Song-scope = all unlocked (skips locked); track-scope = optional trackId else last-touched/active. Undo snapshots (batch for song).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Mutation id from list_mutations"
          },
          "trackId": {
            "type": "string",
            "description": "Optional track for track-scope mutations"
          }
        },
        "required": [
          "id"
        ]
      },
      "page": "/strudel-synth/"
    }
    spiceAction

    Same as Jam footer Spice — one FX/timbre nudge (lpf/room/shape/delay/gain). Same tune, not Shuffle. Optional trackId prefers that lane.

    View tool JSON
    {
      "name": "spice",
      "kind": "act",
      "impl": "imperative",
      "description": "Same as Jam footer Spice — one FX/timbre nudge (lpf/room/shape/delay/gain). Same tune, not Shuffle. Optional trackId prefers that lane.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string",
            "description": "Prefer this track; default active"
          }
        }
      },
      "page": "/strudel-synth/"
    }
    spice_tracksAction

    Alias of spice — Jam footer Spice FX/timbre nudge on prefer trackId / active / any.

    View tool JSON
    {
      "name": "spice_tracks",
      "kind": "act",
      "impl": "imperative",
      "description": "Alias of spice — Jam footer Spice FX/timbre nudge on prefer trackId / active / any.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "trackId": {
            "type": "string",
            "description": "Prefer this track; default active"
          }
        }
      },
      "page": "/strudel-synth/"
    }
    undo_jamAction

    Undo last Jam sound/FX (or historical) change.

    View tool JSON
    {
      "name": "undo_jam",
      "kind": "act",
      "impl": "imperative",
      "description": "Undo last Jam sound/FX (or historical) change.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    playAction

    Start playback. Evaluates all tracks and begins audio.

    View tool JSON
    {
      "name": "play",
      "kind": "act",
      "impl": "imperative",
      "description": "Start playback. Evaluates all tracks and begins audio.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    stopAction

    Stop all playback immediately. Never stop/hush without asking the user in a liveloop.

    View tool JSON
    {
      "name": "stop",
      "kind": "act",
      "impl": "imperative",
      "description": "Stop all playback immediately. Never stop/hush without asking the user in a liveloop.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    mic_statusAnswer

    Mic Rec status. Recording REQUIRES a user gesture in the Jam UI (Rec button) — browsers block getUserMedia from agent tools. This tool never fakes start/stop; it only reports whether a recording is currently active via isMicRecording().

    View tool JSON
    {
      "name": "mic_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Mic Rec status. Recording REQUIRES a user gesture in the Jam UI (Rec button) — browsers block getUserMedia from agent tools. This tool never fakes start/stop; it only reports whether a recording is currently active via isMicRecording().",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    get_referenceAnswer

    Get the complete Strudel API reference (~15KB markdown). Covers mini-notation, functions, effects, pattern modifiers, signals, scales, common recipes, and mistakes. Always call this before writing Strudel code.

    View tool JSON
    {
      "name": "get_reference",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get the complete Strudel API reference (~15KB markdown). Covers mini-notation, functions, effects, pattern modifiers, signals, scales, common recipes, and mistakes. Always call this before writing Strudel code.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    search_strudel_docsAnswer

    Search a cached index of official Strudel docs (https://strudel.cc/) and return relevant snippets + URLs. Also use get_reference for the full in-app API.

    View tool JSON
    {
      "name": "search_strudel_docs",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search a cached index of official Strudel docs (https://strudel.cc/) and return relevant snippets + URLs. Also use get_reference for the full in-app API.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "limit": {
            "type": "number",
            "minimum": 1,
            "maximum": 10
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/strudel-synth/"
    }
    get_samplesAnswer

    Available sample name abbreviations + drum banks (tidal list + banks used by Jam kits / BANK_SHORT).

    View tool JSON
    {
      "name": "get_samples",
      "kind": "answer",
      "impl": "imperative",
      "description": "Available sample name abbreviations + drum banks (tidal list + banks used by Jam kits / BANK_SHORT).",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    get_scales_and_chordsAnswer

    Get available scale and chord names for use with .scale() and .chord().

    View tool JSON
    {
      "name": "get_scales_and_chords",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get available scale and chord names for use with .scale() and .chord().",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/strudel-synth/"
    }
    evaluate_codeAction

    Execute arbitrary Strudel code directly. Use with caution — prefer update_track for liveloop.

    View tool JSON
    {
      "name": "evaluate_code",
      "kind": "act",
      "impl": "imperative",
      "description": "Execute arbitrary Strudel code directly. Use with caution — prefer update_track for liveloop.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Strudel JavaScript code to evaluate"
          }
        },
        "required": [
          "code"
        ]
      },
      "page": "/strudel-synth/"
    }