Skip to main content
Glama
Fannon

u-he-preset-randomizer-mcp

by Fannon

u-he-preset-randomizer

Generate u-he synth presets through randomization and merging of your existing presets (genetics like).

This tool can generate random presets in three different modes:

  • Generate fully random presets based on real values and value distributions in your preset library

  • Randomize existing presets, with a customizable amount of randomness

  • Merge multiple presets together, with randomness introduced by different ratios between them.

The randomization / merging approach is very generic as it analyzes your actual preset library and bases the random values on the resulting statistical distributions.

There are optional flags / modes that that affect the randomization:

  • Narrow down the analyzed presets that are the basis for random generation.

    • E.g. by only using a sub-folder, a certain tag category, author or a favorite file export.

    • This will influence / limit the range of values in the generated presets.

  • Use stable mode for more reliable, but slightly less random results

  • Use binary mode, see --binary CLI arguments documentation.

It should work for all u-he synths on all platforms. Some synths may work better, due to their simpler architecture (e.g. u-he Diva, Repro). More modular synths like Bazille or Zebra also work, but you'll get more "varied" results or broken presets.

How to use

This is a CLI application that you need to run in your terminal / command line.

First you need to install the Node.js runtime. Then you can open your Terminal / Console / Command Prompt and start it by entering a command, optionally with some arguments. They start with npx u-he-preset-randomizer@latest, which will download and run the latest version of this tool:

npx u-he-preset-randomizer@latest

This will start the tool in interactive mode. It will guide you though the necessary choices. Alternatively, you can pass some arguments if you already know the choices (non interactive).

The generated patches will be put into your selected synth preset directory, under a /RANDOM folder in your user presets.

GIF Recording

If you want to download the tool for offline use and manual updates:

# install it as a global CLI tool
npm i -g u-he-preset-randomizer

# Now you can run it without npx:
u-he-preset-randomizer

Related MCP server: ReaperMCP

MCP Server Interface

In addition to the CLI, this tool provides a Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with your u-he presets through natural conversation.

Features:

  • 🔍 Search and browse your preset libraries conversationally

  • 📝 Get detailed explanations of what makes presets unique

  • 🎲 Generate random presets with natural language instructions

  • 🔄 Create variations and merge presets through AI-assisted workflows

  • 💾 Stateful sessions - select a synth once, then explore freely

Quick Setup for Claude Desktop:

Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "u-he-preset-randomizer": {
      "command": "u-he-mcp-server"
    }
  }
}

Then you can ask Claude things like:

  • "What synths do I have installed?"

  • "Show me bass presets from Diva"

  • "Create 5 variations of the '303 Bass' preset with 30% randomness"

  • "Merge my favorite pad presets to create hybrid sounds"

📚 Read the full MCP Server documentation →

CLI Usage Examples

Generate Fully Randomized Presets

This command will run the randomizer to generate 3 fully randomized Diva presets. Random values will be based on real values (and their distribution) of your actual presets.

npx u-he-preset-randomizer@latest --synth Diva --amount 3

Randomize a particular Preset

This command will take one particular preset "HS Greek Horn" and create 5 random variations of it, with a 20% randomization ratio.

npx u-he-preset-randomizer@latest --synth Diva --amount 5 --preset "HS Greek Horn" --randomness 20

Merge multiple Presets together

This command will merge multiple presets together, with a random ratio on how much weight each one has in the "inheritance". The following example will take three Diva presets (each indicated with --merge) and create 5 merged variants out of them.

npx u-he-preset-randomizer@latest --synth Diva --amount 5 --merge "HS Greek Horn" --merge "HS Strumpet" --merge "HS Baroqualog"

Tips & Tricks

  • The u-he preset browser have the most flexibility in filtering and combining presets by category, tags, etc. You can use this to either copy them to a new folder or create a .uhe-fav file export and using this as narrow down selection in the CLI

  • When merging presets, it's possible to select the same preset multiple times. Use this to assign "weights" between how strong a preset will influence the outcome.

CLI Arguments / Configuration

If you're unsure which values are correct to use, run the tool in interactive mode. Most config options here will be available with auto-complete or suggestions.

  • --synth: Choose the u-he synth. Not all synths have been tested, but the randomizer tries to be generic. The name must match the folder name convention of u-he. E.g. Diva, Hive, ZebraHZ.

  • --amount: How many presets to generate. Positive integer number.

  • --randomness: Amount of randomness (in percentage) to apply, when randomizing existing presets or resulting merged presets. Value needs to be between 0 and 100.

  • --preset: If given, an existing preset will be used as a based and randomized by --randomness ratio.

    • Use "?" to choose random preset

    • Use ?search string? to choose a random preset containing "search string" in its path and file name.

  • --merge: Can be provided multiple times, for each preset that should be part of the merging. Ratio between merged presets is random and NOT driven by the --randomness parameter.

    • Use ? to choose random preset

    • Use ?search string? to choose a random preset containing "search string" in its path and file name.

    • Use * to select all presets (careful! Better first reduce via --pattern.)

    • Use *search string* to select all presets containing "search string" in its path and file name.

  • --pattern: Define a glob pattern, which presets should be loaded.

    • By default, it's **/* which will load all presets from all sub-folders.

    • To select a subfolder, use e.g. My Folder/**/*

    • To select presets starting with something, use e.g. **/PD *

  • --folder: narrow down presets by folder. Use /Local/ or /User/ as starting point.

  • --category: narrow down presets by preset category (metadata)

  • --author: narrow down presets by preset author (metadata)

  • --favorites: narrow down presets by selection fia .uhe-fav file. The files must be located somewhere within your preset library.

  • --stable: Uses more stable randomization approach

    • For fully random presets, it will randomize not per parameter, but per section (e.g. the entire OSC1 together)

    • Only parameters with numeric non-binary assignments will be further randomized. Otherwise they stay consistent with the chosen base preset or a random starter preset.

  • --binary: Keep the binary part of the u-he presets. They will not be changed, but randomly generated presets will now include the binary section of either a random preset or the base preset that is randomized.

    • This contains advanced settings like MSEG curves, but this tool cannot really parse or modify it. Not every binary section seems to be compatible with other parameter adjustment, leading to invalid presets.

    • ⚠ Using binary mode may lead to broken presets that may crash your synth plugin when loading. Use with care. For some synths this works better (Repro, Diva, Zebralette 3) and for some it frequently leads to invalid presets.

  • --binary-template: Uses curated binary section templates instead of random library presets. This is enabled by default for Zebralette 3.

    • Templates are stored in src/templates/{synthName}/ and are prefixed with a weight (e.g., 15-Basic Shapes.h2p has weight 15, making it 15x more likely to be selected than a 01- prefixed template).

    • This approach is safer than --binary as the templates are tested to work well with randomized parameters.

  • --dictionary: Creates random names from a dictionary of names used in the preset library

  • --custom-folder: In case the installation folder is custom, it can be given here

    • E.g. --custom-folder "C:/Audio/Plugin Installationen/u-he/"

  • --debug: Enables some optional debug logging and file exporting

Soundsets

Cover

Links

Description

Diva Generated Vol. 1 (ZIP), Audio Demo (YouTube)

50 randomly generated presets for u-he Diva, curated, modified and tagged by Simon Heimler in 2024.

Repro-5 Generated (ZIP), Audio Demo (YouTube)

42 randomly generated presets for u-he Repro, curated, modified and tagged by Simon Heimler in 2024.

Repro-1 Generated Vol. 1 (ZIP),

28 randomly generated presets for u-he Repro, curated, modified and tagged by Simon Heimler in 2024.

Developer Guide

To run this tool locally in developer mode, you need Node.js and Bun installed. Check out the repo and:

npm i
npm run build

# Run the CLI in development mode (using Bun):
bun run dev --synth Diva --amount 3

# Run tests:
bun test

# Maintenance scripts
npm run clean      # remove dist output and incremental build cache
npm run build:dist # emit declarations + source maps for npm publish (runs automatically via prepublishOnly)

The AGENTS.md provides more context how the project works from development perspective.

I've also exposed the u-he preset parser / serializer functions in the NPM module, so they could be used programmatically by other projects. However, you might inherit more dependencies than necessary if you're just interested in the parser. See ./src/parser.ts.

Help / Feedback

Please use the related KVR Thread or create a GitHub issue.

Available Tools

14 tools
explain_presetA

Get detailed information about a specific preset including all metadata, parameters, and values. Use this to understand what makes a preset unique. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault
preset_nameYesName of the preset to explain (without .h2p extension)
include_parametersNoInclude full parameter list in the explanation. Defaults to false (only shows metadata).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. States it fetches detailed info and requires a synth selected, but does not describe error handling, side effects, or auth needs. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. First sentence states purpose, second adds usage context. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description mentions returned content but not structure. Precondition is noted, but more details on response format would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so description adds minimal value beyond the schema. The phrase 'including all metadata, parameters, and values' slightly conflicts with the default of include_parameters=false, but schema clarifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'get' and resource 'preset' with specific scope 'detailed information including all metadata, parameters, and values'. Differentiates from sibling tools like list_presets or filter_presets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use ('to understand what makes a preset unique') and states a prerequisite ('Requires a synth to be selected first'). Does not mention alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_presetsA

Filter presets by specific criteria including category (hierarchical), author, favorites file, or glob pattern. Can combine multiple filters. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault
authorNoFilter by preset author/creator name (exact match required)
patternNoGlob pattern to filter preset paths (e.g., "Bass/**/*", "*Pad*")
categoryNoFilter by category prefix (e.g., "Bass", "Bass:Sub", "Lead:Mono"). Uses hierarchical matching.
favoritesNoFilter by favorites file name (e.g., "MyFavorites.uhe-fav")

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must disclose behavior. It mentions combinability and the prerequisite, but does not discuss edge cases like no results or invalid input, which would benefit an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loaded with the action and criteria, then the prerequisite.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a filter tool with 4 optional parameters and no output schema, the description covers the criteria, combinability, and prerequisite. Could be slightly more detailed about behavior, but generally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds value by noting 'hierarchical matching' for category, but otherwise mirrors the schema. This is adequate but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it filters presets by specific criteria (category, author, favorites file, glob pattern) and can combine filters. It distinguishes from siblings like list_presets and search_presets by specifying the filtering mechanism.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly requires a synth to be selected first, which is a key usage guideline. It implies use when you need to filter by these criteria, but does not explicitly exclude alternatives like search_presets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_random_presetsA

Generate fully random presets based on parameter statistics from the loaded preset library. Optionally filter the statistical basis by author, category, pattern, or favorites to generate more focused/coherent sounds (e.g., random bass presets). Generated presets are automatically added to the library for immediate use with search_presets and explain_preset. Defaults to 16 presets if amount is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoNumber of random presets to generate. Defaults to 16.
authorNoFilter statistical basis by author name (exact match). Use presets from specific author as inspiration.
stableNoUse stable randomization (randomizes per-section to maintain coherence). Defaults to true.
patternNoOptional glob pattern to filter which presets to use as statistical basis (e.g., "Bass/**/*", "**/*Pad*").
categoryNoFilter statistical basis by category prefix (e.g., "Bass", "Bass:Sub"). Generate random sounds in specific category style.
favoritesNoFilter statistical basis by favorites file name (e.g., "MyFavorites.uhe-fav"). Use only favorited presets as inspiration.
dictionaryNoUse dictionary of meaningful names from preset library. Defaults to true.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: presets are automatically added to the library, default quantity, and stable randomization. Without annotations, it covers main traits but lacks info on error conditions or empty library handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with core purpose, then filtering options, then behavioral detail. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers generation, filtering, defaults, and integration with other tools. However, it omits prerequisites (e.g., loaded library) and error handling, which is minor given the clear output behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context with filtering examples and default behavior but does not significantly supplement the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates random presets based on library statistics, with optional filtering for focused sounds. The verb 'generate' and resource 'random presets' are specific, and it distinguishes from siblings like 'randomize_presets' by emphasizing statistical basis from the library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context, including optional filters and defaults, but does not explicitly compare to sibling tools or state when not to use it. The example 'random bass presets' is helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_authorsA

Get a list of all unique preset authors/creators in the currently loaded presets. Useful for filtering by favorite sound designers. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses the prerequisite (synth selected) but does not mention error handling or what happens if no synth is selected. Since it's a read operation, no side effects are expected, but the behavior is not fully elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundant information. Front-loaded with purpose and includes a critical prerequisite. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless tool without an output schema, the description covers the purpose and a key precondition. It does not specify the output format (e.g., array of strings), but the behavior is generally clear. Slight lack of completeness due to missing output description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so baseline is 4. The description does not need to add parameter details; it correctly describes the tool's input-independent behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'list of all unique preset authors/creators' with scope 'in the currently loaded presets'. It is distinct from sibling tools like get_categories or filter_presets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a use case ('filtering by favorite sound designers') and a prerequisite ('Requires a synth to be selected first'). Does not explicitly state when not to use or name alternatives, but the context is clear for a simple parameterless tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesA

Get a list of all unique preset categories available in the currently loaded presets. Useful for discovering what types of sounds are available. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation ('Get') and states a prerequisite, but does not discuss side effects, authentication, or behavior if no synth is selected. Basic transparency is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that are front-loaded with the action and resource. No unnecessary words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless tool with no output schema, the description covers purpose, utility, and prerequisite. It is complete enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description adds no parameter info, which is appropriate. Per guidelines, 0 parameters yields a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all unique preset categories from currently loaded presets, with a specific verb (Get) and resource (categories). It distinguishes itself from siblings like list_presets or get_authors by focusing on categories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use it (to discover sound types) and includes a prerequisite (synth must be selected). However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_synthB

Get information about the currently selected synth, including its name and the number of loaded presets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It does not mention whether the tool is read-only, requires specific permissions, or has any side effects. The lack of behavioral detail is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence of 17 words with no redundancy. It front-loads the core function and is appropriately sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the tool's purpose but lacks important context such as what happens when no synth is selected, error conditions, or confirmation of no input requirements. Given no output schema, more details would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds value by specifying the resource (currently selected synth) and the specific attributes returned, which clarifies the tool's purpose beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves information about the currently selected synth, specifically name and number of presets. It distinguishes itself from siblings like 'list_synths' (lists all synths) and 'get_synth_context' (probably broader context) by focusing on the current selection. However, it does not exhaustively list all returned fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternative siblings, such as 'get_synth_context' which may provide similar or additional information. No when-not-to-use scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_favorites_filesA

Get a list of all .uhe-fav favorites files found for the current synth. These can be used for filtering presets. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the burden. It implies a read operation but does not explicitly state non-destructive nature or other behavioral traits like rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. Front-loaded with the core purpose, then adds context and requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no parameters, the description adequately explains what the tool returns and the necessary precondition. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema; description adds value by explaining the output and context, making the tool's function clear without needing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Get' and resource 'list of .uhe-fav favorites files' for the current synth. Differentiates from siblings like 'get_authors' or 'list_presets' by focusing on favorites files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states a precondition: 'Requires a synth to be selected first.' Also hints at usage for filtering presets, but does not specify when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_synth_contextA

Get detailed technical documentation about how the currently selected u-he synth works, including its preset format, parameters, modules, and architecture. This is extremely useful for understanding synth-specific settings before analyzing or creating presets. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions the prerequisite but does not describe what happens if no synth is selected, nor does it cover output format or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers purpose and usage context. Could specify the nature of the documentation (e.g., preset format, modules) more explicitly, but is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has no parameters (100% coverage, empty), so the description adds no extra parameter info, but this is acceptable as baseline for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('detailed technical documentation about how the currently selected u-he synth works'), clearly distinguishing it from siblings like get_current_synth or list_synths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States a prerequisite ('Requires a synth to be selected first') and gives a usage context ('before analyzing or creating presets'). Does not explicitly exclude alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_presetsA

List all loaded presets for the current synth with their names, categories, and authors. Use this for browsing available presets. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of presets to return. Defaults to 50. Use higher values to see more presets.
offsetNoNumber of presets to skip before returning results. Use for pagination.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. The verb 'list' implies a read-only operation, and the description adds that it returns names, categories, and authors. This is sufficient for a non-destructive tool, though it could explicitly state it does not modify any state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It is front-loaded with the primary action and details. Every sentence adds value: the first explains what it does, the second gives usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (list presets with fields), and the description covers the key aspects: what is returned (names, categories, authors), a prerequisite (synth selected), and a use case (browsing). It does not explain pagination beyond what the schema provides, which is acceptable. No output schema is present, but the return values are implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The tool description does not add any extra meaning beyond what the schema already provides for 'limit' and 'offset'. The schema descriptions are adequate on their own.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all loaded presets for the current synth with their names, categories, and authors.' It uses a specific verb ('list') and identifies the resource ('presets') and the fields returned. This distinguishes it from sibling tools like search_presets or filter_presets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use this for browsing available presets' and adds a prerequisite 'Requires a synth to be selected first.' This gives a clear use case and condition. However, it does not explicitly mention when not to use this tool or suggest alternatives like filter_presets for refined queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_synthsA

List all available u-he synths detected on this system. Call this to see which synths are installed and can be selected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It states the tool lists synths detected on the system, implying a read-only operation with no side effects. However, it does not discuss permissions, error conditions, or the return format, but the behavior is simple and non-controversial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short, clear sentences with no extraneous information. It is front-loaded with the core action and immediate use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and a simple purpose, the description is adequately complete. It could be slightly enhanced by indicating the output format (e.g., list of names), but the user can infer from the tool name and sibling tools. Overall, it provides sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (100% coverage), so the description does not need to add parameter information. A baseline score of 4 is appropriate given zero parameters and clear tool purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available u-he synths detected on the system. It identifies a specific verb and resource, and distinguishes from sibling tools like list_presets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call this to see which synths are installed and selectable. Although it does not mention when not to use it or compare to alternatives, the purpose is so straightforward that additional guidance is unnecessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

merge_presetsA

Merge multiple presets to create hybrid sounds using weighted random ratios. Select presets via preset_names (supports wildcards: "*" for random from all, "?" for random from list), or filter by author/category/pattern. Generated merges are automatically added to the library. Defaults to 16 merged presets with 0% additional randomness.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoNumber of merged presets to generate. Defaults to 16.
authorNoFilter source presets by author name. Random presets from this author will be merged. Alternative to preset_names/pattern.
stableNoUse stable randomization for any additional randomness. Defaults to true.
patternNoPath substring to select presets to merge from (e.g., "Bass/**/*"). Alternative to preset_names.
categoryNoFilter source presets by category prefix. Random presets from this category will be merged. Alternative to preset_names/pattern.
randomnessNoAdditional randomness to apply after merging (0-100). Defaults to 0.
preset_namesNoNames of presets to merge (without .h2p). Use "*" for random from all presets, "?" for random from specified list.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description must disclose side effects. It states 'Generated merges are automatically added to the library.' and mentions defaults, but does not detail whether the operation is destructive (e.g., overwrites existing presets) or describe other safety aspects like rate limits or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, selection methods, default behavior. Front-loaded and no wasted words. Efficiently communicates key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers purpose, selection methods, and result handling (auto-add to library). However, it lacks details on error conditions, limits, or precise meaning of 'weighted random ratios.' For 7 parameters and no output schema, it is fairly complete but could be more precise.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds some context (e.g., 'weighted random ratios', auto-add to library) not present in parameter descriptions, but the marginal value is limited since schema descriptions already cover wildcards and filtering options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Merge multiple presets to create hybrid sounds using weighted random ratios.' This distinguishes from sibling tools like generate_random_presets (creates new presets) and randomize_presets (randomizes existing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains how to select presets (via preset_names with wildcards or filters), but does not explicitly state when to use this tool versus alternatives like generate_random_presets or randomize_presets. This limits guidance for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

randomize_presetsA

Create variations of existing presets by randomly modifying their parameters (0-100% randomness). Select source presets by preset_names, pattern, author, or category. IMPORTANT: 'amount' is per source preset (1 preset + amount=4 → 4 files; 10 presets + amount=2 → 20 files). Generated variations are automatically added to the library. Defaults to 16 variations per preset and 50% randomness.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoNumber of variations to generate per base preset. Defaults to 16.
authorNoFilter source presets by author name (exact match). Alternative to preset_names/pattern.
stableNoUse stable randomization (randomizes per-section). Defaults to true.
patternNoPath substring to filter presets (e.g., "Bass/**/*"). Alternative to preset_names.
categoryNoFilter source presets by category prefix (e.g., "Bass", "Bass:Sub"). Alternative to preset_names/pattern.
randomnessNoPercentage of randomness to apply (0-100). 0 = no change, 100 = completely random. Defaults to 50.
preset_namesNoNames of presets to randomize (without .h2p extension). Can specify multiple.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that generated variations are 'automatically added to the library' (side effect), explains the amount scaling, and mentions defaults. It does not describe auth needs or destructive potential, but the mutation is non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences are concise and well-structured: action, selection methods, important note, defaults. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters, no output schema, and no annotations, the description covers purpose, selection, scaling, and defaults. It could mention the 'stable' parameter, but the schema already describes it. Overall sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds meaning: clarifies that 'amount' is per source preset, defaults (16 variations, 50% randomness), and that preset_names exclude '.h2p' extension. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create variations of existing presets by randomly modifying their parameters', specifying the action and resource. It distinguishes from siblings like 'generate_random_presets' (which likely creates from scratch) and 'merge_presets'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to select source presets (by name, pattern, author, category) and includes an important note about the amount parameter scaling per preset. However, it does not explicitly state when not to use this tool or compare to alternatives like 'merge_presets'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_presetsA

Search presets by name, category, or author using fuzzy matching. Returns matching presets with relevance scoring. Requires a synth to be selected first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Defaults to 20.
queryYesSearch query to match against preset names, categories, and authors (e.g., "bass", "pad", "fat")

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and adds fuzzy matching and relevance scoring, but does not disclose rate limits, auth needs, or any destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with clear, front-loaded content, no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, prerequisite, search method, and result type; lacks output structure details but is adequate for a search tool without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds context for fuzzy matching and relevance scoring but does not significantly extend parameter meaning beyond schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'Search', the resource 'presets', and the method 'fuzzy matching', clearly differentiating from siblings like 'filter_presets' or 'list_presets'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear prerequisite ('Requires a synth to be selected first'), providing context for when to use, but lacks explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_synthA

Select a synth and load its preset library. MUST be called before other preset tools. Optional pattern filters which presets are loaded (for faster loading with large libraries). Trade-off: filtered loading is faster but limits subsequent operations to only those presets until reloaded. Omit pattern for full library access (recommended unless library is very large). Known synth options include: ACE, Bazille, Diva, Hive, Repro-1, Repro-5, Zebra2, ZebraHZ, Zebralette3, Zebra3, TyrellN6, Podolski, TripleCheese, TestSynth.

ParametersJSON Schema
NameRequiredDescriptionDefault
synthYesName of the synth to select (e.g., "Diva", "Zebra3", "Hive")
patternNoOptional glob pattern to filter loaded presets (e.g., "Bass/**/*", "**/*Pad*"). Use for faster loading with large libraries (3000+ presets). Omit to load all presets (default, recommended). To switch between filtered/full, call again with/without pattern.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the trade-off of pattern filtering (faster loading vs. limited subsequent operations) and lists known synth options. However, it omits details about error handling, persistence of selection across sessions, or side effects like unloading previous presets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: first sentence states purpose and requirement, second sentence explains the optional pattern and trade-off, followed by a bullet list of known synths. No unnecessary verbiage; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the output or return value (no output schema exists). It does not explain what happens after selection (e.g., presets loaded into context, potential side effects like unloading previous synth's presets). Given the complexity and reliance on this tool by siblings, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters with 100% description coverage. The description adds value by providing usage context for the pattern parameter (glob pattern example, trade-off explanation) and listing all known synth values in text, enhancing the schema's enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Select a synth and load its preset library' and distinguishes itself from sibling tools like list_synths (which only lists synths) and get_current_synth (which gets current selection). It also notes that it must be called before other preset tools, reinforcing its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'MUST be called before other preset tools' and explains when to use the pattern parameter (for faster loading with large libraries) vs. omitting it (recommended for full access). It provides clear context but does not explicitly exclude alternatives or mention when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv1.2.0
    • First observedexplain_preset
    • First observedfilter_presets
    • First observedgenerate_random_presets
    • First observedget_authors
    • First observedget_categories
    • First observedget_current_synth
    • First observedget_favorites_files
    • First observedget_synth_context
    • First observedlist_presets
    • First observedlist_synths
    • First observedmerge_presets
    • First observedrandomize_presets
    • First observedsearch_presets
    • First observedselect_synth

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: selection, listing, filtering, searching, and various generation methods (full random, variation, merge) are all separate. No two tools do the same thing.

Naming Consistency4/5

Tool names consistently use snake_case and a verb_noun pattern. Minor inconsistency: some retrieval tools use 'get_' (get_authors, get_categories) while others use 'list_' (list_presets, list_synths), but overall pattern is clear.

Tool Count5/5

14 tools is well-scoped for a preset randomizer domain, covering selection, browsing, filtering, searching, and three distinct generation approaches without unnecessary overlap.

Completeness4/5

The tool surface covers the core workflow of selecting a synth, browsing/understanding presets, and generating variations. A minor gap is the lack of explicit save/delete operations, but generated presets are automatically added.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Connects AI assistants to REAPER for music production, enabling full control over tracks, MIDI, mixing, mastering, and audio analysis through 153 tools across 24 modules.
    173
    65
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI-powered music composition and synthesis by generating Pure Data patches, VCV Rack modules, and MIDI controller mappings through natural language.
    10
    10 npm
    4
    MIT