← WebMCP Directory

Tool tree

xiehuanyi.github.io

Media & PersonalTools verified
Website
A browser groovebox that you and your AI agent play together. The page registers WebMCP tools; the agent composes, you listen and steer.
Explore capabilities
    get_songAnswer

    Read the whole song: tempo, swing, playback state, and every track with its 16-step pattern ("." rest, "x" hit, "X" accent) and notes for melodic tracks. Call this first, and again after edits to verify.

    View tool JSON
    {
      "name": "get_song",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the whole song: tempo, swing, playback state, and every track with its 16-step pattern (\".\" rest, \"x\" hit, \"X\" accent) and notes for melodic tracks. Call this first, and again after edits to verify.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    set_patternAction

    Replace a track's 16-step pattern. "." = rest, "x" = hit, "X" = accented hit. Example: "X...x...X...x..." is four-on-the-floor. Spaces and | are ignored, so "X.x. x.x. | X.x. x.x." also works. On melodic tracks existing pitches are kept; use set_notes to choose pitches.

    View tool JSON
    {
      "name": "set_pattern",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace a track's 16-step pattern. \".\" = rest, \"x\" = hit, \"X\" = accented hit. Example: \"X...x...X...x...\" is four-on-the-floor. Spaces and | are ignored, so \"X.x. x.x. | X.x. x.x.\" also works. On melodic tracks existing pitches are kept; use set_notes to choose pitches.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "track": {
            "type": "string",
            "description": "Track id (\"t1\"), name (\"Bass\"), or instrument (\"kick\") — see get_song."
          },
          "pattern": {
            "type": "string",
            "description": "16 steps of . x X",
            "minLength": 16
          }
        },
        "required": [
          "track",
          "pattern"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    set_notesAction

    Write pitched notes on a bass or lead track. Each entry places a note at a step (0-15); note: null clears that step. Notes use scientific pitch ("C2", "F#3", "Bb1"). Bass range C1..C4, lead range C3..C6 (out-of-range notes are clamped).

    View tool JSON
    {
      "name": "set_notes",
      "kind": "act",
      "impl": "imperative",
      "description": "Write pitched notes on a bass or lead track. Each entry places a note at a step (0-15); note: null clears that step. Notes use scientific pitch (\"C2\", \"F#3\", \"Bb1\"). Bass range C1..C4, lead range C3..C6 (out-of-range notes are clamped).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "track": {
            "type": "string",
            "description": "Track id (\"t1\"), name (\"Bass\"), or instrument (\"kick\") — see get_song."
          },
          "notes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 16,
            "items": {
              "type": "object",
              "properties": {
                "step": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 15
                },
                "note": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "e.g. \"C2\"; null clears the step"
                },
                "accent": {
                  "type": "boolean"
                }
              },
              "required": [
                "step",
                "note"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "track",
          "notes"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    set_tempoAction

    Set tempo (bpm 40-220) and/or swing (0-60 percent shift of off-beat 16ths).

    View tool JSON
    {
      "name": "set_tempo",
      "kind": "act",
      "impl": "imperative",
      "description": "Set tempo (bpm 40-220) and/or swing (0-60 percent shift of off-beat 16ths).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bpm": {
            "type": "number",
            "minimum": 40,
            "maximum": 220
          },
          "swing": {
            "type": "number",
            "minimum": 0,
            "maximum": 60
          }
        },
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    set_trackAction

    Mix a track: volume (0-100), mute (true/false), and/or rename it.

    View tool JSON
    {
      "name": "set_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Mix a track: volume (0-100), mute (true/false), and/or rename it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "track": {
            "type": "string",
            "description": "Track id (\"t1\"), name (\"Bass\"), or instrument (\"kick\") — see get_song."
          },
          "volume": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "mute": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "maxLength": 24
          }
        },
        "required": [
          "track"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    add_trackAction

    Add an instrument track (current: 4/8). Drums: kick, snare, hihat, clap. Melodic: bass, lead. New tracks start empty — follow up with set_pattern or set_notes.

    View tool JSON
    {
      "name": "add_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Add an instrument track (current: 4/8). Drums: kick, snare, hihat, clap. Melodic: bass, lead. New tracks start empty — follow up with set_pattern or set_notes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "instrument": {
            "type": "string",
            "enum": [
              "kick",
              "snare",
              "hihat",
              "clap",
              "bass",
              "lead"
            ]
          },
          "name": {
            "type": "string",
            "maxLength": 24
          }
        },
        "required": [
          "instrument"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    clear_trackAction

    Erase every step on one track. Asks the person at the keyboard to approve first.

    View tool JSON
    {
      "name": "clear_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Erase every step on one track. Asks the person at the keyboard to approve first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "track": {
            "type": "string",
            "description": "Track id (\"t1\"), name (\"Bass\"), or instrument (\"kick\") — see get_song."
          }
        },
        "required": [
          "track"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    remove_trackAction

    Delete a track and its pattern. Asks the person at the keyboard to approve first.

    View tool JSON
    {
      "name": "remove_track",
      "kind": "act",
      "impl": "imperative",
      "description": "Delete a track and its pattern. Asks the person at the keyboard to approve first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "track": {
            "type": "string",
            "description": "Track id (\"t1\"), name (\"Bass\"), or instrument (\"kick\") — see get_song."
          }
        },
        "required": [
          "track"
        ],
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }
    playAction

    Start looping the song out loud so the human can hear it. (You cannot hear it — ask them how it sounds.)

    View tool JSON
    {
      "name": "play",
      "kind": "act",
      "impl": "imperative",
      "description": "Start looping the song out loud so the human can hear it. (You cannot hear it — ask them how it sounds.)",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/sidejam/"
    }