gradeNot graded
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/"
}