{"ok":true,"site":{"host":"sfxforge.vercel.app","url":"https://sfxforge.vercel.app/","type":"live","desc":"SFX Forge","tools":[{"name":"sfx_describe","kind":"act","impl":"imperative","description":"Describe SFX Forge: sound-effect categories, music styles, macros and remixable parts, plus a summary of the sound currently loaded in the editor. Call this first.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_generate_sound","kind":"act","impl":"imperative","description":"Generate a new sound effect in the editor from a category generator, or \"random\" to build one from scratch. Returns its stats.","inputSchema":{"type":"object","required":["category"],"properties":{"category":{"type":"string","enum":["random","coin","pickup","jump","laser","shoot","explosion","hit","punch","kick","block","hurt","whoosh","dash","powerup","blip","select","confirm","cancel","magic","ko","victory","gameover"],"description":"e.g. punch, coin, laser, explosion, ko, or random"},"wildness":{"type":"number","minimum":0,"maximum":1,"description":"random only: 0 = tidy and short, 1 = layered and strange"},"seed":{"type":"integer","description":"Same seed + category gives the same sound"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_compose_music","kind":"act","impl":"imperative","description":"Compose a full arranged music track (drums, bass, chords, melody; intro → A → B → outro) in the editor. Length is rounded to whole 4-bar sections.","inputSchema":{"type":"object","properties":{"style":{"type":"string","enum":["random","chiptune","fight","citypop","synthwave","lofi","house","dnb","trap","boss"],"description":"\"random\" picks one and, with high wildness, can mix two styles"},"seconds":{"type":"number","minimum":10,"maximum":60,"description":"Default 32"},"wildness":{"type":"number","minimum":0,"maximum":1,"description":"More drum variation, generated chords, key changes, hybrids"},"bpm":{"type":"number","minimum":50,"maximum":220},"seed":{"type":"integer"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_remix_music","kind":"act","impl":"imperative","description":"Change the loaded music track: reroll some parts (drums, bass, chords, lead) while keeping the rest, and/or transpose or change tempo. New chords also move bass and melody notes to the new harmony.","inputSchema":{"type":"object","properties":{"parts":{"type":"array","items":{"type":"string","enum":["drums","bass","chords","lead"]}},"transpose":{"type":"integer","minimum":-12,"maximum":12,"description":"Semitones"},"bpm":{"type":"number","minimum":50,"maximum":220}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_get_sound","kind":"answer","impl":"imperative","description":"Read the sound loaded in the editor: stats, layers, and optionally the full sfx-forge/1 JSON (for editing or saving elsewhere).","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"include_json":{"type":"boolean","description":"Include the full JSON (can be large for music)"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_load_sound","kind":"act","impl":"imperative","description":"Load a full sfx-forge/1 JSON sound into the editor, for example one made by the sfx MCP server.","inputSchema":{"type":"object","required":["sound"],"properties":{"sound":{"type":"object","description":"A full sfx-forge/1 sound object"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_edit_sound","kind":"act","impl":"imperative","description":"Edit the loaded sound. \"patch\" deep-merges into top-level fields (name, length, steps, swing, master). \"layers\" deep-merges into layers by index or name; arrays such as hits are replaced whole. Layer fields: wave, freq, freqEnd, slide, amp {a,h,d,s,r}, filter {type,cutoff,cutoffEnd,q}, vib, fm, crush, drive, gain, pan, repeat, hits [{t,note,vel,len}], mute.","inputSchema":{"type":"object","properties":{"patch":{"type":"object"},"layers":{"type":"array","items":{"type":"object","required":["layer","set"],"properties":{"layer":{"type":["integer","string"]},"set":{"type":"object"}}}}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_apply_macro","kind":"act","impl":"imperative","description":"Bend the whole sound with one knob: pitch (semitones, -24..24), length (time stretch 0.25..4; for music this changes tempo), punch, grit, space, distance, retro (0..1).","inputSchema":{"type":"object","required":["macro","value"],"properties":{"macro":{"type":"string","enum":["pitch","length","punch","grit","space","distance","retro"]},"value":{"type":"number"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_mutate","kind":"act","impl":"imperative","description":"Randomly nudge pitch, timing, filters and gains of the loaded sound (music stays in tune).","inputSchema":{"type":"object","properties":{"amount":{"type":"number","minimum":0,"maximum":1,"description":"Default 0.25"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_play","kind":"act","impl":"imperative","description":"Play the loaded sound through the speakers so the person can hear it, or stop playback. Browsers only allow sound after the person has clicked the page once.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["play","stop"],"description":"Default play"},"loop":{"type":"boolean"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_history","kind":"answer","impl":"imperative","description":"List the history strip (every roll, remix and edit this session) or go back to an earlier entry by index (0 = newest).","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"go_to":{"type":"integer","minimum":0,"description":"Omit to just list"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"sfx_export","kind":"act","impl":"imperative","description":"Download the loaded sound to the person's computer as a 16-bit stereo WAV, or as sfx-forge/1 JSON.","annotations":{"consequentialHint":true},"inputSchema":{"type":"object","properties":{"format":{"type":"string","enum":["wav","json"],"description":"Default wav"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]}],"category":"Media & Personal","apiSurface":"spec","toolCount":12}}