← WebMCP Directory

Tool tree

webmcp-eight.vercel.app

Media & PersonalTools verified
Website
Jam Agent Studio
Explore capabilities
    capture_soundAction

    Start the microphone and record a short voice clip that can become a sampler track. Recording stops automatically after durationMs.

    View tool JSON
    {
      "name": "capture_sound",
      "kind": "act",
      "impl": "imperative",
      "description": "Start the microphone and record a short voice clip that can become a sampler track. Recording stops automatically after durationMs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "durationMs": {
            "type": "number",
            "description": "Recording length in milliseconds, 500-8000. Default 2500."
          }
        }
      }
    }
    capture_found_soundAction

    Record a short clip from a named everyday object, such as a mug or spoon, so it can become a sampler track.

    View tool JSON
    {
      "name": "capture_found_sound",
      "kind": "act",
      "impl": "imperative",
      "description": "Record a short clip from a named everyday object, such as a mug or spoon, so it can become a sampler track.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectId": {
            "type": "string",
            "enum": [
              "mug",
              "spoon",
              "table",
              "bottle",
              "keys",
              "desk"
            ],
            "description": "Object to capture from."
          },
          "sourceLabel": {
            "type": "string",
            "description": "Optional human-readable source label."
          },
          "trackName": {
            "type": "string",
            "description": "Optional track name."
          },
          "durationMs": {
            "type": "number",
            "description": "Recording length in milliseconds, 500-8000. Default 2500."
          }
        }
      }
    }
    compose_found_object_jamAction

    Capture an everyday object sound, turn it into a playable sampler, map it musically, and add a complementary backing layer in one step.

    View tool JSON
    {
      "name": "compose_found_object_jam",
      "kind": "act",
      "impl": "imperative",
      "description": "Capture an everyday object sound, turn it into a playable sampler, map it musically, and add a complementary backing layer in one step.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectId": {
            "type": "string",
            "enum": [
              "mug",
              "spoon",
              "table",
              "bottle",
              "keys",
              "desk"
            ],
            "description": "Object to capture from."
          },
          "durationMs": {
            "type": "number",
            "description": "Recording length in milliseconds, 500-8000. Default 2500."
          },
          "addBacking": {
            "type": "boolean",
            "description": "Add a complementary layer automatically. Default true."
          },
          "play": {
            "type": "boolean",
            "description": "Start playback after composing."
          }
        }
      }
    }
    create_sampler_nodeAction

    Turn the most recently captured sound into a new playable sampler track/node.

    View tool JSON
    {
      "name": "create_sampler_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Turn the most recently captured sound into a new playable sampler track/node.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Optional display name for the new track."
          }
        }
      }
    }
    map_sample_to_keysAction

    Pitch-map a sample node so it can be played melodically across the keyboard, by assigning its native root note.

    View tool JSON
    {
      "name": "map_sample_to_keys",
      "kind": "act",
      "impl": "imperative",
      "description": "Pitch-map a sample node so it can be played melodically across the keyboard, by assigning its native root note.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string",
            "description": "Track/node id. Defaults to the currently selected node."
          },
          "rootNote": {
            "type": "string",
            "description": "Note the raw sample plays at natively, e.g. 'C4'."
          },
          "rangeLow": {
            "type": "string"
          },
          "rangeHigh": {
            "type": "string"
          }
        }
      }
    }
    play_noteAction

    Play a specific note on a given node right now.

    View tool JSON
    {
      "name": "play_note",
      "kind": "act",
      "impl": "imperative",
      "description": "Play a specific note on a given node right now.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string",
            "description": "Track/node id. Defaults to the currently selected node."
          },
          "note": {
            "type": "string",
            "description": "Note name, e.g. 'C4', 'F#3'."
          },
          "velocity": {
            "type": "number",
            "description": "0-100."
          },
          "sustain": {
            "type": "boolean"
          }
        },
        "required": [
          "note"
        ]
      }
    }
    generate_melodyAction

    Create a short call-and-response melody/pattern on a node so it plays automatically in the loop, instead of a flat repeating pattern.

    View tool JSON
    {
      "name": "generate_melody",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a short call-and-response melody/pattern on a node so it plays automatically in the loop, instead of a flat repeating pattern.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string"
          },
          "scale": {
            "type": "string",
            "enum": [
              "major",
              "minor",
              "majorPentatonic",
              "minorPentatonic"
            ],
            "description": "Scale to generate from. Default majorPentatonic."
          },
          "density": {
            "type": "string",
            "enum": [
              "sparse",
              "medium",
              "busy"
            ],
            "description": "How busy the rhythm feels. Default medium."
          },
          "referenceNodeId": {
            "type": "string",
            "description": "Id of another node to rhythmically answer - the new pattern will avoid stepping on that node's onsets instead of colliding with it."
          }
        }
      }
    }
    suggest_next_layerAction

    Propose a complementary layer/instrument that's missing from the current jam (e.g. bass, drums, harmony, lead). Speak the suggestion to the user before calling add_complementary_node.

    View tool JSON
    {
      "name": "suggest_next_layer",
      "kind": "act",
      "impl": "imperative",
      "description": "Propose a complementary layer/instrument that's missing from the current jam (e.g. bass, drums, harmony, lead). Speak the suggestion to the user before calling add_complementary_node.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    add_complementary_nodeAction

    Actually create and add the suggested (or specified) layer as a new node with a generated melody, so it's audible immediately.

    View tool JSON
    {
      "name": "add_complementary_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Actually create and add the suggested (or specified) layer as a new node with a generated melody, so it's audible immediately.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "instrument": {
            "type": "string",
            "description": "Instrument name/id to use. If omitted, uses the last suggestion from suggest_next_layer."
          }
        }
      }
    }
    transform_instrumentAction

    Change the character/instrument of a node, e.g. to Sub Bass, Pluck, or Keys.

    View tool JSON
    {
      "name": "transform_instrument",
      "kind": "act",
      "impl": "imperative",
      "description": "Change the character/instrument of a node, e.g. to Sub Bass, Pluck, or Keys.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string"
          },
          "instrument": {
            "type": "string",
            "description": "Target instrument name, e.g. 'Sub Bass', 'Pluck', 'Keys'."
          }
        },
        "required": [
          "instrument"
        ]
      }
    }
    mute_nodeAction

    Mute or unmute a node.

    View tool JSON
    {
      "name": "mute_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Mute or unmute a node.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string"
          },
          "muted": {
            "type": "boolean",
            "description": "If omitted, toggles the current state."
          }
        }
      }
    }
    set_tempoAction

    Change the global tempo (BPM) of the jam.

    View tool JSON
    {
      "name": "set_tempo",
      "kind": "act",
      "impl": "imperative",
      "description": "Change the global tempo (BPM) of the jam.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bpm": {
            "type": "number",
            "description": "Target tempo, 40-220."
          }
        },
        "required": [
          "bpm"
        ]
      }
    }
    create_demo_jamAction

    Replace the current session with a complete judge-ready multi-layer jam that demonstrates human + agent music collaboration.

    View tool JSON
    {
      "name": "create_demo_jam",
      "kind": "act",
      "impl": "imperative",
      "description": "Replace the current session with a complete judge-ready multi-layer jam that demonstrates human + agent music collaboration.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mood": {
            "type": "string",
            "enum": [
              "neon",
              "moody"
            ],
            "description": "Overall feel of the demo jam."
          },
          "bpm": {
            "type": "number",
            "description": "Target tempo, 40-220. Default 132."
          },
          "root": {
            "type": "string",
            "description": "Root note such as C4 or A3. Default C4."
          },
          "play": {
            "type": "boolean",
            "description": "Start playback after creating the jam."
          }
        }
      }
    }
    move_nodeAction

    Reposition a node on the timeline and/or reorder it in the track list.

    View tool JSON
    {
      "name": "move_node",
      "kind": "act",
      "impl": "imperative",
      "description": "Reposition a node on the timeline and/or reorder it in the track list.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "nodeId": {
            "type": "string"
          },
          "startPct": {
            "type": "number",
            "description": "New horizontal position on the timeline, 0-100."
          },
          "toIndex": {
            "type": "number",
            "description": "New position in the track list, 0-based."
          }
        }
      }
    }
    export_projectAction

    Export the complete project state as structured JSON so the agent can summarize, save, or verify the jam.

    View tool JSON
    {
      "name": "export_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Export the complete project state as structured JSON so the agent can summarize, save, or verify the jam.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    share_projectAction

    Create a compact share URL for the current jam and copy it to the clipboard when the browser allows clipboard access.

    View tool JSON
    {
      "name": "share_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Create a compact share URL for the current jam and copy it to the clipboard when the browser allows clipboard access.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    validate_studioAction

    Run a readiness check over instruments, tracks, role coverage, and WebMCP demo quality.

    View tool JSON
    {
      "name": "validate_studio",
      "kind": "act",
      "impl": "imperative",
      "description": "Run a readiness check over instruments, tracks, role coverage, and WebMCP demo quality.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
    get_studio_stateAnswer

    List the current tempo and every node (id, name, instrument, type, mute state) so you know what exists before calling other tools by id.

    View tool JSON
    {
      "name": "get_studio_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the current tempo and every node (id, name, instrument, type, mute state) so you know what exists before calling other tools by id.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }