sfx
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sfxmake a chunky laser with a short tail and play it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sfx-api
Parametric video-game sound-effect synthesis for coding agents. You describe a sound to Claude Code or Codex, the agent writes a layered synthesis spec, and this server renders a normalized 16-bit WAV and plays it so you can react in words.
Runs on CPU, no GPU or model downloads. Python 3.11+, Windows first.
Install
cd C:\dev\sfx-api
python -m venv .venv
.venv\Scripts\pip install -e ".[dev,fx]"
.venv\Scripts\sfx demo --play # renders every preset into .\out and plays themThe fx extra installs Spotify pedalboard for better reverb, chorus, compressor, and pitch
shift. It is GPLv3. Without it, built-in NumPy effects are used.
Related MCP server: SuperCollider MCP Server
Hook into Claude Code
claude mcp add sfx -- C:\dev\sfx-api\.venv\Scripts\sfx-mcp.exeOr add to .mcp.json in a project:
{
"mcpServers": {
"sfx": {
"command": "C:\\dev\\sfx-api\\.venv\\Scripts\\sfx-mcp.exe",
"env": { "SFX_OUT_DIR": "C:\\path\\to\\game\\Assets\\Audio\\Generated" }
}
}
}Hook into Codex
Add to ~/.codex/config.toml:
[mcp_servers.sfx]
command = "C:\\dev\\sfx-api\\.venv\\Scripts\\sfx-mcp.exe"
[mcp_servers.sfx.env]
SFX_OUT_DIR = "C:\\path\\to\\game\\Assets\\Audio\\Generated"Then in either host: "Read the sfx cookbook, then make me a chunky retro laser with a short tail and play it."
REST API and preview page
.venv\Scripts\sfx serve-http --port 8765Opens a preview page at http://127.0.0.1:8765/ that lists every render in the output folder
with play buttons, features, warnings, the spec, a merge-patch box to tweak and re-render, a
variations button, and A/B comparison. The REST API is documented at /api/docs: render a
spec, render or save presets, tweak by id, variations, analyze, play, and download WAVs. The
MCP server is also mounted at /mcp over Streamable HTTP for hosts that prefer it to stdio.
Tools
Tool | Purpose |
| Compact schema, cookbook, and preset names; sections available. Agents call this once. |
| Built-in and saved presets. |
| Render a SoundSpec. Returns path, id, features, normalization info, and warnings. |
| Render a preset with optional overrides. |
| JSON merge patch on a previous render by id, re-render. |
| N pitch, filter, timing, and gain jittered siblings for random containers. |
| Play through the default output device. |
| Features for any WAV, including reference sounds. |
| Save a spec to the user preset library. |
Resources: sfx://schema, sfx://cookbook, sfx://presets.
Environment
Variable | Effect |
| Where renders and sidecar specs go. Default |
| User preset folder. Default |
| Make |
| Force NumPy effects even if pedalboard is installed. |
CLI
sfx render spec.json --play
sfx preset laser --set '{"layers":[...]}' --play
sfx variations coin -n 6
sfx tweak is MCP-only; use render with an edited sidecar JSON from ./out
sfx analyze out\coin-ab12cd.wav
sfx list | sfx schema | sfx cookbook | sfx demo | sfx serveSpec at a glance
{
"name": "coin",
"layers": [
{
"id": "body",
"source": {"type": "osc", "wave": "square", "duty": 0.5},
"pitch": {"start_hz": 988, "end_hz": 1319, "curve": "step", "step_at_ms": 80},
"amp": {"attack_ms": 1, "hold_ms": 70, "decay_ms": 260, "release_ms": 40, "punch": 0.15},
"filter": {"type": "lowpass", "cutoff_hz": 6000, "end_cutoff_hz": 2500, "q": 0.7},
"fx": [{"type": "bitcrush", "bits": 8}]
}
],
"master": {"target_lufs": -16, "true_peak_dbtp": -1}
}Sources: osc (sine, triangle, saw, square with duty), noise (white, pink, brown, bit), fm
(two operators), sfxr (a jsfxr-compatible voice with the original p_* fields). Effects: bitcrush, distortion, clip, compressor, delay, reverb, chorus, gain,
pitch_shift. See PLAN.md for the design and roadmap.
Evaluating the docs with real agents
eval/run_group.sh <claude|codex> <A|B|C|D> runs a non-interactive host session that reads the
docs, designs five target sounds from eval/targets.json, and reports what was unclear. Codex
needs --dangerously-bypass-approvals-and-sandbox (already in the script) to call MCP tools
without a human approving each one; interactive Codex sessions prompt instead. Results land in
eval/results/ and renders in out/eval/. The cookbook's feature definitions, loudness notes,
and several recipes came out of the first round.
Tests
.venv\Scripts\python -m pytestAvailable Tools
9 toolssfx_analyzeC
Measure any WAV: active_ms, attack_ms, decay_ms, pitch_hz_start/end, band_db, lufs, peak. Definitions in the cookbook.
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | No | ||
| sound_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior itself. It lists measured attributes but does not mention side effects, whether files are written (despite an out_dir parameter), or any operational constraints. The presence of out_dir suggests possible output-file behavior that is left unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loaded with the verb and resource. Each segment adds value, including the pointer to definitions in the cookbook, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description fails to explain the input parameters or usage context. A new agent would not know what sound_id refers to or what out_dir does, making correct invocation uncertain without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it mentions neither sound_id nor out_dir. The phrase 'any WAV' does not clarify what sound_id represents or how the optional output directory is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('Measure') and resource ('any WAV'), and lists specific output metrics. It does not explicitly differentiate from sibling tools, but none of the siblings appear to offer the same measurement capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Measure any WAV' implies the tool is for audio analysis, but there is no explicit guidance about when to prefer it over sibling tools or when not to use it. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_docsA
Documentation for designing sounds. section: 'all' (compact schema + cookbook + preset names), 'schema' (compact field list), 'json_schema' (full JSON schema), 'cookbook', or 'presets' (full preset specs). Call with 'all' once before designing sounds.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. It explains the output granularity for every section value (compact field list vs full JSON schema vs preset specs) and frames the call as a preliminary read step. It does not explicitly state 'read-only', but the documentation context and the directive to call it before designing make side effects unlikely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first frames the tool, the second enumerates parameter options in pipe-delimited form, and the third gives a usage directive. Information is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter documentation tool with no output schema and no annotations, the description is complete: it defines all possible inputs, what they return, and the recommended invocation order relative to the design workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description fully documents the single section parameter and enumerates all accepted values ('all', 'schema', 'json_schema', 'cookbook', 'presets') with their exact return scopes. This is excellent compensation for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as the documentation resource for sound design and enumerates the content sections, making it distinct from the sibling rendering/tweaking tools. It lacks an explicit retrieval verb ('get', 'fetch'), so it falls just short of a perfect clarity score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use instruction: 'Call with all once before designing sounds.' It does not list exclusions or alternatives, but the sibling tools are clearly different operations, so no ambiguity remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_list_presetsA
List available presets with a one-line summary of each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the safety signal. 'List' is clearly read-only, and 'available presets with a one-line summary' tells the agent what output to expect. It doesn't state 'no side effects' explicitly, but the verb makes that unambiguous for this tool type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, imperative verb, focus on output detail. Nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing with an output schema present, no further information is needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters foreseeable from context and the input schema; baseline 4 applies. The description adds no requirements but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact action ('List available presets') and specifies the output detail ('one-line summary of each'). This clearly differentiates it from sibling tools like sfx_save_preset or sfx_render_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (whenever an agent needs to see what presets exist), but does not explicitly state when to prefer it over siblings or call it before save/render operations. Reasonable but no exclusions or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_playA
Play a WAV (by id or path) through the machine's default audio output so the user can hear it.
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | No | ||
| sound_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It usefully reveals the output destination ('default audio output') and the id-or-path input flexibility, but it omits other behavioral traits such as blocking behavior, error handling, or side effects beyond playback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. Every clause contributes either the action, the input flexibility, or the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simple surface, the absence of annotations and 0% schema coverage leaves important gaps: out_dir's role, whether sound_id is a path or a preset id, and expected return behavior. The description is too thin for an agent to call the tool with full confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds some meaning to sound_id ('by id or path'), but out_dir is entirely undocumented, and the relationship between sound_id and out_dir is unclear. This leaves an agent guessing about a required-or-optional parameter's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('Play a WAV') and a concrete resource ('by id or path'), with a clear user-facing purpose ('so the user can hear it'). This distinguishes it from sibling tools like sfx_render or sfx_analyze, which suggest file generation or analysis rather than audible playback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's use case is implied: use it when the user needs to hear a WAV through the machine's default audio output. However, it does not explicitly state when not to use it or name alternatives, leaving the agent to infer routing from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_renderA
Render a SoundSpec to a 16-bit mono WAV. Returns the file path, an id for later tweaks, features (active_ms, attack_ms, decay_ms, pitch_hz_start/end, band_db, lufs; definitions in the cookbook), normalization info, and warnings such as a missed loudness target. out_dir defaults to the SFX_OUT_DIR environment variable or ./out under the server's working directory.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | ||
| out_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does so well: it states the output format, the out_dir resolution order (SFX_OUT_DIR env var or ./out), normalization info, and the warning behavior for a missed loudness target. This is rich behavioral context for an annotation-free tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence that opens with the core purpose before detailing return values and defaults. There is no filler or repetition, and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, and the description adds useful semantic interpretation (feature definitions pointing to the cookbook, warning conditions). However, for a complex tool with a nested open-object parameter, the spec input structure is left under-specified; the 'cookbook' pointer partially mitigates but doesn't close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds real meaning for out_dir by documenting its default resolution, and hints at spec semantics via the returned features list. But the spec parameter is an open object (additionalProperties: true) and the description never states what fields a SoundSpec requires, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Render a SoundSpec to a 16-bit mono WAV' is a specific verb+resource+output-format statement that clearly states what the tool produces. It lists the returned artifacts (file path, id, features, normalization info, warnings) which disambiguates it from siblings like sfx_analyze or sfx_play, though it never explicitly names a sibling like sfx_render_preset to contrast against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies workflow context by noting it returns an 'id for later tweaks', signaling it is the primary creation step in a pipeline. However, it provides no explicit when-to-use guidance, no exclusions, and never mentions alternatives such as sfx_render_preset, leaving the agent to infer selection logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_render_presetB
Render a named preset, optionally with a JSON merge patch of overrides applied first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| out_dir | No | ||
| overrides | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that overrides are applied as a JSON merge patch before rendering, but it does not disclose side effects such as file output, whether the preset is modified, or what the render operation entails beyond its name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler. It front-loads the core action and includes the important override-ordering detail without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema may cover return values, but the description still lacks essential context: what out_dir controls, whether rendering writes files, and how this tool relates to the sibling sfx_render. An agent has enough to guess the basic operation but not enough to invoke it confidently in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds useful meaning for 'overrides' by specifying JSON merge patch semantics and implies 'name' selects the preset, but it does not explain 'out_dir' at all, leaving a required-use parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Render') and the resource ('a named preset'), and adds the meaningful option of applying a JSON merge patch of overrides. It does not explicitly differentiate from sibling sfx_render, but the 'named preset' phrasing provides reasonable distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you have a named preset and optionally want to override settings before rendering. However, it provides no explicit guidance about when to choose this tool over siblings like sfx_render, sfx_tweak, or sfx_variations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_save_presetC
Save a spec (inline, or from a render id) to the user preset library under a name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| spec | No | ||
| out_dir | No | ||
| sound_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It only states that it 'saves' and mentions the source modes, but it does not explain side effects like overwriting, naming conflicts, required authentication, or whether the operation is reversible. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource. No word is wasted, and it provides the two source modes without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, empty schema descriptions, and four parameters with alternative modes, this description is too short to be complete. It does not explain the difference between inline spec, render id, out_dir, or how they interact. The output schema exists, so return value explanation is not needed, but the usage logic and parameter relationships remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It reveals that 'spec' can be inline or sourced from a render id, but does not map the render id to a specific parameter (sound_id vs out_dir) and leaves 'out_dir' completely unaddressed. The description adds partial meaning but not enough to disambiguate the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (save) and resource (spec to the user preset library), which is specific and understandable. It does not explicitly differentiate itself from sibling tools like sfx_render_preset, but the action of 'saving' to the preset library is distinct enough from rendering or listing presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives, no exclusions, and no context about the scenario in which saving a preset is appropriate. The only implication is that you use it when you want to save a spec, but this is not even made explicit as a condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_tweakA
Apply a JSON merge patch to a previous render (by id or WAV path) and re-render. Example patch: {"layers": [...]} replaces all layers; {"master": {"target_lufs": -14}} changes one field. Lists are replaced wholesale, so send the full layers list when editing a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | ||
| out_dir | No | ||
| sound_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does a good job disclosing key behavior: JSON merge patch semantics, wholesale list replacement, and the requirement to send the full layers list. It does not mention side effects like overwriting output files, but the core behavioral trait is clearly explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core operation front-loaded, followed by concrete examples and an important caveat about list replacement. Every sentence adds value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the non-obvious merge-patch semantics and list replacement behavior, which is the main complexity of this tool. With an output schema present, return-value documentation is not needed, though a note on when to choose this over sfx_render would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the patch object thoroughly with examples and notes that sound_id can be an id or WAV path, but it never explains the out_dir parameter, leaving one of the three parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: apply a JSON merge patch to a previous render and re-render. It also distinguishes this from a fresh render by explicitly targeting a previous render by id or WAV path, which separates it from sibling tools like sfx_render.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of tweaking an existing render is implied through 'previous render', and the examples show what kinds of edits are intended. However, there is no explicit guidance on when to use this tool instead of sfx_render or sfx_variations, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sfx_variationsA
Render N randomized siblings of a sound (by id, path, or inline spec) for engine random containers. Jitter amounts come from spec.variation: pitch_cents, filter_cents, timing_ms, gain_db. Ids are -v1..vN.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | ||
| count | No | ||
| out_dir | No | ||
| sound_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses that the tool creates N randomized siblings, which variation dimensions are jittered, and the resulting ID naming convention. However, it does not mention file-writing side effects, default output location behavior, or whether existing files may be overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences carry concrete, high-value information with no filler. The most important behavior, output naming, and configurable jitter fields are all front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with an output schema present, the description leaves a meaningful gap: it is not explicit enough about how to specify the source sound via id, path, or inline spec using the available parameters. The behavior of out_dir and count is also under-specified, which an agent needs to know before invoking a render/generation tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to 'spec' by listing spec.variation fields and clarifies source references via id/path/inline spec. However, it does not explicitly map those source forms to the actual schema parameters (sound_id vs spec), and it leaves count and out_dir semantics mostly to the schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Render'), a clear resource ('randomized siblings of a sound'), and the intended use case ('for engine random containers'). It also distinguishes itself from sibling tools like sfx_render by focusing on sibling variation generation rather than single renders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear context: generating randomized sibling variants when engine random containers are needed. It does not explicitly name alternatives or state when not to use this tool, but the purpose is distinct enough that an agent can infer appropriate usage from the sibling tool names.
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.
9 tool updates
v0.1.0- First observed
sfx_analyze - First observed
sfx_docs - First observed
sfx_list_presets - First observed
sfx_play - First observed
sfx_render - First observed
sfx_render_preset - First observed
sfx_save_preset - First observed
sfx_tweak - First observed
sfx_variations
TDQS
Scored across 9 tools
Each tool has a clearly distinct role: docs, render, preset render, preset listing, tweak, variations, playback, analysis, and saving presets. The only similar pair—render and render_preset—is disambiguated by input type (inline spec vs. named preset).
Most tools follow a consistent sfx_<verb>[_<object>] pattern (render, render_preset, list_presets, save_preset, analyze, play). Minor deviations: sfx_docs and sfx_variations are noun-style rather than verb-based, so the pattern is not perfectly consistent.
Nine tools is well-scoped for a sound design toolkit. Each tool covers a distinct stage of the workflow without unnecessary redundancy or bloat.
The surface covers the full design workflow: document, render, tweak, randomize, listen, analyze, and save presets. Minor gaps like deleting or editing presets and managing previous renders are absent but not blocking for core sound design.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Free CC0 sound effects for agents: ask by role (button-click, coin), sets, or search 4,600+.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
FFmpeg as a service for AI agents: typed video editing tools, async jobs, downloadable outputs.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides audio playback functionality for AI agents, allowing them to play notification sounds when coding tasks are completed.1MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to generate and control real-time audio synthesis through natural language descriptions using SuperCollider. Features 10 built-in synth types, pattern sequencing, audio recording, and server lifecycle management for creating sounds from simple English descriptions.111-
- AlicenseAqualityDmaintenanceEnables AI agents to synthesize sounds using Csound, including subtractive synthesis and drum synthesis, via Model Context Protocol tools.21MIT
- AlicenseNot gradedqualityCmaintenanceEnables local generation of game sound effects from text prompts using Stability AI's Stable Audio Open model, with no API keys or per-generation cost.MIT