List, apply, and import genre libraries and presets. The import step (genre import-songsketch) is CLI-only by design — a hidden, internal command not exposed to end users. It is a content-authoring step that converts a proprietary Song Sketch lib JSON into a .vibraigenre file on disk (how the shipped genre catalog is minted), not a runtime operation an agent drives against Live. The MCP surface (GenreTools) exposes the runtime half: discover libraries and presets (list_genres, list_genre_presets) and apply them (apply_genre). Extraction (genre extract CLI ↔ extract_genre MCP) reverse-derives a genre from the open Live set.
Command line
genre list
List installed genre libraries
genre presets
List presets in a genre library
Genre id or display name (run ‘vibrai genre list’)
genre import-songsketch
Convert a Song Sketch lib JSON file to a .vibraigenre
Path to a Song Sketch lib JSON file
Output directory (defaults to ~/.vibrai/genres)
genre apply
Apply a genre+preset to a .vibrai project
Genre id or display name (run ‘vibrai genre list’).
Preset id or display name within the genre (from ‘vibrai genre presets <genre>’).
Path to .vibrai (default: ./project.vibrai)
(deprecated) Use positional <genre> instead. Will be removed in the next minor release.
(deprecated) Use positional <preset> instead. Will be removed in the next minor release.
Confirm destructive overwrite of sections / parts / templates / arrangement / generation
Extract a genre from the open Live set into a .vibraigenre
Genre display name; the filename slug derives from it. Defaults to the open Live set’s name.
Output directory (defaults to ~/.vibrai/genres so the genre is immediately applicable)
Append the set as a new preset to this existing user genre instead of creating a file
Name of the preset this set becomes (defaults to the set name)
Also embed literal note phrases (writes format v3 with playback support)
auto|arrangement|session — auto uses the arrangement when it has clips, else the session
Classification override as <trackId>:<PartType>, repeatable (track ids as shown in the report)
Overwrite an existing target .vibraigenre
list_genres
List installed genre libraries. Returns each genre’s name (slug; other tools accept either the slug or the display name), display name, sub-genres, default BPM, and preset count. Embedded resources ship with Vibrai; users can override or add entries via ~/.vibrai/genres/<name>.vibraigenre.
list_genre_presets
List presets in a genre library. Each entry has id (use with apply_genre / init_project —preset), display name, sub-genre, section/part counts, and an instrumentation summary (snake_case PartType -> stock instrument path, resolved for the preset’s own sub-genre) from the genre’s defaults table — omitted when the genre has none.
Genre id (slug from list_genres) or display name.
apply_genre
Materialize a genre+preset into a .vibrai project at the given path. Destructive: overwrites sections, parts, templates, arrangement.blueprint, and generation — requires confirm=true (parity with the CLI’s genre apply --yes); refuses without modifying the project otherwise. Preserves meta.name and meta.als_path from the existing project if present. Note: the preset_id parameter was renamed to preset for CLI/MCP naming parity; update any callers.
Genre id (slug from list_genres) or display name.
Preset id or display name within the genre (from list_genre_presets).
Absolute path to the .vibrai project file.
Confirm the destructive overwrite (CLI —yes equivalent). Must be true to proceed; confirm with the user first when the project already has content.
Extract a genre from the open Live set into a .vibraigenre file. Reads tempo, scale, tracks, clips, notes, and envelopes; classifies tracks into parts (report shows each decision); detects sections; and writes a generative genre usable by apply_genre. Set faithful=true to also embed literal note phrases (format v3) so regeneration seeds from the source riffs. Set into_genre=<user genre> to append this set as a new preset instead of creating a file. Re-run with part_overrides to correct classifications — extraction never mutates the Live set.
Genre display name; filename slug derives from it. Defaults to the open set’s name.
Output directory. Defaults to ~/.vibrai/genres so the genre is immediately applicable.
Append as a new preset to this existing user genre instead of creating a new file.
Name of the preset this set becomes. Defaults to the set name.
Also embed literal note phrases (writes format v3 with playback support).
auto|arrangement|session — auto uses the arrangement when it has clips, else the session.
part_overrides
Dictionary<String, String>
Classification overrides: track id (as shown in the report) → PartType, e.g. {“3”: “hi_hat”}.
Overwrite an existing target file.