SonicCraft
OCI · GHCR.IO/USER-GITHUB-ME/SONICCRAFT
Compile timelines of TTS speech, music and SFX into ducked, loudness-mastered audio with subtitles
Available components
Last scanned (11 hours ago)
Scores higher than 49% of OCI servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3462 tokens (~577/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 38
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed oci/ghcr.io/user-github-me/soniccraft@0.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
soniccraft_dry_run Dry-run timeline ~624
Plan a SonicCraft timeline without synthesizing audio: free, never calls paid TTS APIs. Lays out every cue, pause and clip with cached or estimated speech durations (mock voices are measured exactly), applies the speech-overlap policy and computes the ducking regions. Returns a PlanReport: valid, diagnostics, duration_ms (estimated total length), items (id, kind, track_id, start_ms, end_ms, duration_source, and pushed_from_ms for cues the overlap policy moved), ducking regions per ducked track, synthesis (cues, cached, characters_to_synthesize, i.e. what a render will bill) and an ASCII timeline diagram, which the text result also shows. A long timeline (more than about 40 items) gets a compact report: totals, cost, ducking, errors and warnings, the diagram's track lanes, the first and last 10 items and every item the overlap policy moved or a diagnostic names (items_total and items_truncated say what was left out); pass `detail: "full"` for every item. Call it after validation passes and before soniccraft_render to check order, timing and cost; show the diagram to the user when timing matters. Estimates are within about ±15%; a render measures exact durations and lays out again. Takes `yaml_content` or `yaml_path` like soniccraft_validate_timeline; an invalid timeline is a successful call with valid: false.
| Name | Type | Req | Description |
|---|---|---|---|
| base_dir | string | – | Directory that relative `yaml_path`, `output_path` and the paths inside `yaml_content` resolve against. Default: the server's base directory (`soniccraft mcp --base-dir`, else env CLAUDE_PROJECT_DIR,… |
| detail | string | – | How much of the plan to return. `auto` (default): the whole PlanReport while it is small (about 12,000 characters, some 40 items), else a compact report with the totals, synthesis cost, ducking, erro… |
| path | string | – | Synonym of `yaml_path`, accepted so either name works. Pass only one of the two. |
| yaml_content | string | – | The timeline document itself, as YAML or JSON text (the same format as a .yaml/.json timeline file). Relative paths inside it (clip `source:` files, `output.path`) resolve against `base_dir`. Pass ex… |
| yaml_path | string | – | Path of a timeline file (.yaml, .yml or .json). A relative path resolves against `base_dir`; absolute paths are safest. Paths inside the file resolve against the file's own directory. Pass exactly on… |
No output schema declared.
No examples provided.
soniccraft_get_schema Get timeline schema ~229
Get the SonicCraft timeline DSL (v1.0): a compact quick reference (document rules, every field with its default, timing and anchor rules, ducking, loudness presets, providers, a complete example and the common diagnostic fixes) as text. structuredContent is {dsl_version, schema_id, quick_reference}. Pass `detail: "full"` to also get the complete JSON Schema (draft 2020-12, about 35,000 characters) as text and as structuredContent.schema; the quick reference is enough to write timelines. Call it once before writing your first timeline; afterwards rely on soniccraft_validate_timeline, whose diagnostics name the exact field to fix.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | How much to return. `auto` (default) and `summary`: the DSL quick reference, which covers every field, default and rule (the JSON Schema is left out while the whole result would be too large for an a… |
No output schema declared.
No examples provided.
soniccraft_list_providers List TTS providers ~181
List the built-in TTS providers (elevenlabs, openai, cartesia, kokoro, piper, macos_say, command, mock) and whether each can be used right now: API key present in the environment, local binary found, local server answering (a quick probe of at most 300 ms), operating system supported. Returns {providers: [{name, aliases, display_name, local, word_timestamps, available, status, api_key_env, default_voice, default_model, notes}]}. `mock` (deterministic synthetic voice, any OS) and `macos_say` (macOS) need no API key. Call it before choosing `provider:` values. If a provider lacks its key, ask the user to export the environment variable named here; never put API keys in a timeline.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
soniccraft_list_voices List provider voices ~197
List the voices of one TTS provider, given its built-in name or alias (e.g. elevenlabs, openai, cartesia, kokoro, piper, macos_say, mock). Returns {provider, voices: [{id, name, language, gender, description}]}; put a voice's `id` into `voice_id` in the timeline. Cloud providers are queried over their API (needs the provider's API key in the environment); local providers list what is installed.
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | Built-in provider name or alias: elevenlabs, openai, cartesia, kokoro, piper, macos_say, command or mock (aliases: eleven_labs, 11labs, open_ai, local_kokoro, kokoro_fastapi, say, system). Instance n… |
No output schema declared.
No examples provided.
soniccraft_render Render timeline ~1,086
Render a SonicCraft timeline to a mastered audio file. Synthesizes the speech (cached by content hash, so re-renders only pay for changed cues), places every item sample-accurately, ducks music under speech, normalizes to the loudness target (EBU R128) with a true-peak limiter, encodes (wav, mp3, flac; ogg, opus and m4a need ffmpeg) and writes the subtitles, stems and manifest the timeline or arguments ask for. It writes files (inside the base directory unless `output_path` names another place) and may call paid TTS APIs; API keys go only to each provider's official host, servers on this machine (own key variable only), or SONICCRAFT_ALLOWED_HOSTS. Programs named by a timeline (`command` providers, a piper `command`) run only if the server was started with --allow-command. Run soniccraft_validate_timeline and soniccraft_dry_run first. Pass `yaml_content` or `yaml_path`; `output_path` chooses the file and `format` the encoding (`format: mp3` for an .mp3 path when the timeline sets another format). Returns a RenderReport: output {path (absolute), format, sample_rate, channels, duration_ms, bytes}, loudness {integrated_lufs vs target_lufs, true_peak_dbtp vs true_peak_target_dbtp, measured on the delivered file; for mp3, ogg, opus and m4a, pre_encode has the master's values}, files {subtitles, stems, manifest} with absolute paths, synthesis, diagnostics and items with exact timings (a long timeline lists the first and last 10; `detail: "full"` lists all), plus links to the files (audio is never inlined). A failure returns isError: true with {message, diagnostics}: fix what they name and render again. Long renders report progress, may first wait for another render to finish, and stop cleanly when the call is cancelled. Files are put in place only when the whole render succeeds: a failed or cancelled render removes its partial files and leaves earlier outputs untouched.
| Name | Type | Req | Description |
|---|---|---|---|
| base_dir | string | – | Directory that relative `yaml_path`, `output_path` and the paths inside `yaml_content` resolve against. Default: the server's base directory (`soniccraft mcp --base-dir`, else env CLAUDE_PROJECT_DIR,… |
| detail | string | – | How much of the render report to return. `auto` (default): the whole RenderReport while it is small, else a compact report with the output file, loudness, side files, synthesis, ducking, errors and w… |
| export_subtitles | boolean | – | Override the timeline's `output.export_subtitles`: true writes subtitle files next to the output (WebVTT + SRT unless the timeline lists its own formats), false writes none. Omit to follow the timeli… |
| format | string | – | Output format, overriding the timeline's `output.format`: wav, mp3 or flac (built in), or ogg, opus or m4a (these need ffmpeg). Pass the format that matches `output_path` (for example `mp3` with `out… |
| no_cache | boolean | – | Ignore cached TTS audio and synthesize every cue again (results still refresh the cache). Costs provider credits; only use it when cached audio is stale. Default false. |
| output_path | string | – | Output audio file; overrides `output.path` in the timeline. A relative path resolves against `base_dir`. Its extension (.wav, .mp3, .flac, .ogg, .opus, .m4a) selects the format unless the timeline se… |
| path | string | – | Synonym of `yaml_path`, accepted so either name works. Pass only one of the two. |
| yaml_content | string | – | The timeline document itself, as YAML or JSON text (the same format as a .yaml/.json timeline file). Relative paths inside it (clip `source:` files, `output.path`) resolve against `base_dir`. Pass ex… |
| yaml_path | string | – | Path of a timeline file (.yaml, .yml or .json). A relative path resolves against `base_dir`; absolute paths are safest. Paths inside the file resolve against the file's own directory. Pass exactly on… |
No output schema declared.
No examples provided.
soniccraft_validate_timeline Validate timeline ~640
Validate a SonicCraft audio timeline (YAML or JSON) without rendering. Parses it and checks every field, reference, timing anchor and the environment (asset files exist, TTS providers available, API keys present, ffmpeg for ogg/opus/m4a), reporting ALL problems in one pass. Call it after every edit, before soniccraft_dry_run and soniccraft_render. Pass exactly one of `yaml_content` (the document text) or `yaml_path` (a file; `path` also works). Returns a ValidationReport {valid, diagnostics, summary}; an invalid timeline is still a successful call, with valid: false. Each diagnostic has a severity, a stable `code`, a `path` such as tracks[1].sequence[0].start_relative.after_cue, the line and column, a `message` and usually a `hint` you can apply mechanically (rename `fade_in` to `fade_in_ms`, use a suggested id): fix every error, then validate again until valid is true. Warnings and infos do not block rendering. A report with many diagnostics comes back compact (every error and warning up to 50, plus counts); `detail: "full"` returns all. Never calls paid APIs; `check_credentials: true` sends one free authenticated request per provider to test its key. API keys only ever go to the provider's official API host, a server on this machine (the provider's own key variable only), or a host listed in SONICCRAFT_ALLOWED_HOSTS.
| Name | Type | Req | Description |
|---|---|---|---|
| base_dir | string | – | Directory that relative `yaml_path`, `output_path` and the paths inside `yaml_content` resolve against. Default: the server's base directory (`soniccraft mcp --base-dir`, else env CLAUDE_PROJECT_DIR,… |
| check_credentials | boolean | – | Also verify each provider's API key with one cheap authenticated request (network access, never synthesizes, costs nothing). Default false: keys are only checked for presence in the environment. |
| detail | string | – | How much of the report to return. `auto` (default): the whole report while it is small, else a compact one (counts and every error and warning, up to 50); `summary`: always the compact report; `full`… |
| path | string | – | Synonym of `yaml_path`, accepted so either name works. Pass only one of the two. |
| yaml_content | string | – | The timeline document itself, as YAML or JSON text (the same format as a .yaml/.json timeline file). Relative paths inside it (clip `source:` files, `output.path`) resolve against `base_dir`. Pass ex… |
| yaml_path | string | – | Path of a timeline file (.yaml, .yml or .json). A relative path resolves against `base_dir`; absolute paths are safest. Paths inside the file resolve against the file's own directory. Pass exactly on… |
No output schema declared.
No examples provided.
How do I install the SonicCraft MCP server?
SonicCraft runs locally as a container image, launched with docker run --rm -i -e ELEVENLABS_API_KEY -e OPENAI_API_KEY -e CARTESIA_API_KEY ghcr.io/user-github-me/soniccraft:0.1.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/user-github-me/soniccraft
claude mcp add user-github-me-soniccraft -- docker run --rm -i -e ELEVENLABS_API_KEY -e OPENAI_API_KEY -e CARTESIA_API_KEY ghcr.io/user-github-me/soniccraft:0.1.0
This image reads ELEVENLABS_API_KEY, OPENAI_API_KEY and CARTESIA_API_KEY. Set them in your client's env block for this server; docker run -e passes each one through to the container.
What is the SonicCraft MCP server?
SonicCraft is an MCP server listed in the public MCP registry as io.github.user-github-me/soniccraft. Compile timelines of TTS speech, music and SFX into ducked, loudness-mastered audio with subtitles. This page covers its container image (ghcr.io/user-github-me/soniccraft).
Is the SonicCraft MCP server safe to use?
SonicCraft scores 39 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SonicCraft MCP server expose?
SonicCraft exposes 6 tools: soniccraft_validate_timeline, soniccraft_dry_run, soniccraft_render, soniccraft_get_schema, soniccraft_list_providers, soniccraft_list_voices. Their descriptions and schemas cost roughly 2,957 tokens of context every time the server is loaded.
Is the SonicCraft MCP server still maintained?
SonicCraft is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the SonicCraft MCP server under?
SonicCraft declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.