← WebMCP Directory

Tool tree

mysynote.vercel.app

Media & PersonalTools verified
Website
A browser-native sound-design studio where a human and an AI agent collaboratively manipulate the same live Web Audio graph via WebMCP.
Explore capabilities
    get_audio_graph_stateAnswer

    Returns the complete current state of the Mysynote synth graph: every module, its type, position, parameter values, lock states, all cable connections, the sequencer pattern, and transport state. Call this before making any changes so you never operate on stale information.

    View tool JSON
    {
      "name": "get_audio_graph_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the complete current state of the Mysynote synth graph: every module, its type, position, parameter values, lock states, all cable connections, the sequencer pattern, and transport state. Call this before making any changes so you never operate on stale information.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    spawn_moduleAction

    Creates a new synth module (oscillator, filter, lfo, distortion, delay, reverb, or gain) at a given canvas position, wires up its real Web Audio node, and animates its appearance.

    View tool JSON
    {
      "name": "spawn_module",
      "kind": "act",
      "impl": "imperative",
      "description": "Creates a new synth module (oscillator, filter, lfo, distortion, delay, reverb, or gain) at a given canvas position, wires up its real Web Audio node, and animates its appearance.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "moduleType": {
            "type": "string",
            "enum": [
              "oscillator",
              "filter",
              "lfo",
              "distortion",
              "delay",
              "reverb",
              "gain"
            ]
          },
          "positionX": {
            "type": "number"
          },
          "positionY": {
            "type": "number"
          }
        },
        "required": [
          "moduleType",
          "positionX",
          "positionY"
        ]
      }
    }
    remove_moduleAction

    Deletes a module and any cables connected to it.

    View tool JSON
    {
      "name": "remove_module",
      "kind": "act",
      "impl": "imperative",
      "description": "Deletes a module and any cables connected to it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "moduleId": {
            "type": "string"
          }
        },
        "required": [
          "moduleId"
        ]
      }
    }
    patch_cableAction

    Connects one module's output port to another module's input port, updating both the visual graph and the real Web Audio routing. Some inputs are modulation targets (e.g. a filter's "cutoff" input) rather than audio-signal inputs — check get_audio_graph_state for each module's inputs.

    View tool JSON
    {
      "name": "patch_cable",
      "kind": "act",
      "impl": "imperative",
      "description": "Connects one module's output port to another module's input port, updating both the visual graph and the real Web Audio routing. Some inputs are modulation targets (e.g. a filter's \"cutoff\" input) rather than audio-signal inputs — check get_audio_graph_state for each module's inputs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sourceModuleId": {
            "type": "string"
          },
          "sourceOutput": {
            "type": "string"
          },
          "targetModuleId": {
            "type": "string"
          },
          "targetInput": {
            "type": "string"
          }
        },
        "required": [
          "sourceModuleId",
          "sourceOutput",
          "targetModuleId",
          "targetInput"
        ]
      }
    }
    remove_cableAction

    Removes a single cable connection by its id.

    View tool JSON
    {
      "name": "remove_cable",
      "kind": "act",
      "impl": "imperative",
      "description": "Removes a single cable connection by its id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "connectionId": {
            "type": "string"
          }
        },
        "required": [
          "connectionId"
        ]
      }
    }
    set_module_paramAction

    Sets a parameter on a module (e.g. filter cutoff, oscillator frequency). Fails with PARAMETER_LOCKED if the human has locked that parameter — the agent must not bypass this and should find another route to its goal. Values are clamped to the parameter's valid range. Value may be a number or a string, depending on the parameter (e.g. waveform names are strings).

    View tool JSON
    {
      "name": "set_module_param",
      "kind": "act",
      "impl": "imperative",
      "description": "Sets a parameter on a module (e.g. filter cutoff, oscillator frequency). Fails with PARAMETER_LOCKED if the human has locked that parameter — the agent must not bypass this and should find another route to its goal. Values are clamped to the parameter's valid range. Value may be a number or a string, depending on the parameter (e.g. waveform names are strings).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "moduleId": {
            "type": "string"
          },
          "paramName": {
            "type": "string"
          },
          "value": {
            "type": "string",
            "description": "A number (e.g. \"440\") or a string enum value (e.g. \"sawtooth\")."
          }
        },
        "required": [
          "moduleId",
          "paramName",
          "value"
        ]
      }
    }
    lock_parameterAction

    Locks a parameter so the agent cannot modify it until unlocked. Typically invoked by the human, but exposed so the agent can confirm a lock state change requested in conversation.

    View tool JSON
    {
      "name": "lock_parameter",
      "kind": "act",
      "impl": "imperative",
      "description": "Locks a parameter so the agent cannot modify it until unlocked. Typically invoked by the human, but exposed so the agent can confirm a lock state change requested in conversation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "moduleId": {
            "type": "string"
          },
          "paramName": {
            "type": "string"
          }
        },
        "required": [
          "moduleId",
          "paramName"
        ]
      }
    }
    unlock_parameterAction

    Unlocks a previously locked parameter. Fails with LOCK_OWNED_BY_HUMAN if a human locked it — that lock can only be cleared from the UI, never by the agent.

    View tool JSON
    {
      "name": "unlock_parameter",
      "kind": "act",
      "impl": "imperative",
      "description": "Unlocks a previously locked parameter. Fails with LOCK_OWNED_BY_HUMAN if a human locked it — that lock can only be cleared from the UI, never by the agent.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "moduleId": {
            "type": "string"
          },
          "paramName": {
            "type": "string"
          }
        },
        "required": [
          "moduleId",
          "paramName"
        ]
      }
    }
    get_spectrum_analysisAnswer

    Returns a real-time quantitative snapshot of the current audio output from the actual AnalyserNode: peak frequency, low/mid/high band energy (0-1), peak amplitude, and whether the signal is clipping. Use this to verify how a change actually affected the sound.

    View tool JSON
    {
      "name": "get_spectrum_analysis",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns a real-time quantitative snapshot of the current audio output from the actual AnalyserNode: peak frequency, low/mid/high band energy (0-1), peak amplitude, and whether the signal is clipping. Use this to verify how a change actually affected the sound.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_sequencer_stateAnswer

    Returns the current 8-step sequencer pattern, tempo, and transport state.

    View tool JSON
    {
      "name": "get_sequencer_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the current 8-step sequencer pattern, tempo, and transport state.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    set_sequencer_stepAction

    Edits a single step of the 8-step sequence (note, octave, velocity, active).

    View tool JSON
    {
      "name": "set_sequencer_step",
      "kind": "act",
      "impl": "imperative",
      "description": "Edits a single step of the 8-step sequence (note, octave, velocity, active).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "index": {
            "type": "number"
          },
          "note": {
            "type": "string"
          },
          "octave": {
            "type": "number"
          },
          "velocity": {
            "type": "number"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "index"
        ]
      }
    }
    clear_graphAction

    Removes all modules and cables. Use sparingly — mainly for starting over on explicit human request.

    View tool JSON
    {
      "name": "clear_graph",
      "kind": "act",
      "impl": "imperative",
      "description": "Removes all modules and cables. Use sparingly — mainly for starting over on explicit human request.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }