Sonilo Music & Sound Effects
PYPI · SONILO-MCP · SCANNED SEP 21
Licensed soundtracks and sound effects matched to your video. Commercial use OK.
Available components
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 Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 34 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency48
- 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 (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability58
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 8427 tokens (~526/item across 16 items; 16 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 Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (88% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 16 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Sonilo Music & Sound Effects MCP server?
Sonilo Music & Sound Effects runs locally as a PyPI package, launched with uvx sonilo-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · sonilo-mcp
claude mcp add sonilo-ai-sonilo-mcp -- uvx sonilo-mcp
{
"mcpServers": {
"sonilo-ai-sonilo-mcp": {
"command": "uvx",
"args": [
"sonilo-mcp"
]
}
}
} {
"servers": {
"sonilo-ai-sonilo-mcp": {
"command": "uvx",
"args": [
"sonilo-mcp"
]
}
}
} codex mcp add sonilo-ai-sonilo-mcp -- uvx sonilo-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sonilo-ai-sonilo-mcp": {
"type": "local",
"command": [
"uvx",
"sonilo-mcp"
],
"enabled": true
}
}
} openclaw mcp add sonilo-ai-sonilo-mcp --command uvx --arg sonilo-mcp
mcp_servers:
sonilo-ai-sonilo-mcp:
command: "uvx"
args: ["sonilo-mcp"] {
"McpServers": {
"sonilo-ai-sonilo-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"sonilo-mcp"
]
}
}
} assistant mcp add sonilo-ai-sonilo-mcp -t stdio -c uvx -a sonilo-mcp
{
"mcpServers": {
"sonilo-ai-sonilo-mcp": {
"command": "uvx",
"args": [
"sonilo-mcp"
]
}
}
} 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.
- 21 Sept 26 −1
- Stability: pass → 0.93 functional
- 20 Sept 26 +1
- Stability: 0.97 → pass security
- 19 Sept 26 +15
- Known CVEs: unverified → pass ▲ security
- Install scripts: unverified → pass ▲ security
- The scripts that run when this package is installed changed: build_backend security
- Dependency health: unverified → 1.00 ▲ functional
- Package version: 0.26.0 → 0.27.0 functional
- Package version: 0.13.1 → 0.26.0 functional
- 18 Sept 26 −14
- Known CVEs: pass → unverified ▼ security
- Install scripts: pass → unverified ▼ security
- Judged manipulation: pass → unverified ▼ security
- The scripts that run when this package is installed changed: build_backend security
- Schema quality: 7585 → 8356 ▼ functional
- Dependency health: 1.00 → unverified ▼ functional
- Schema quality: excellent → unverified ▼ functional
- Package version: 0.24.0 → 0.26.0 functional
- Package version: 0.24.0 → 0.25.0 functional
- Package version: 0.24.0 → 0.24.2 functional
- Package version: 0.24.0 → 0.24.1 functional
- 17 Sept 26 −1
- Security disclosure: unverified → pass ▲ functional
- Stability: pass → 0.90 functional
- 16 Sept 26 0
- Stability: 0.97 → pass security
- Security disclosure: pass → unverified ▼ functional
- 15 Sept 26 −4
- Malware scan: pass → unverified ▼ security
- Judged manipulation: unverified → pass ▲ security
- Schema quality: unverified → excellent ▲ functional
- Package version: 0.23.0 → 0.24.0 functional
- 14 Sept 26 −10
- Judged manipulation: pass → unverified ▼ security
- Stability: 0.90 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Schema quality: excellent → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 0.13.1 → 0.23.0 functional
- Package version: 0.22.0 → 0.23.0 functional
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 21 Sept 2026 · Analysed pypi/sonilo-mcp@0.27.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 34 packages
| Packages resolved | 34 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
analyze_video ~515
Analyze a video and return a CREATIVE BRIEF derived from the footage itself. Generates NOTHING — no audio, no video, no file is written. `mode` picks which brief comes back: "both" (the default) returns a music-direction brief in `segments`/`variations` AND a sound-design brief in `sfx_segments`/`sfx_prompt` in one call; "music" returns only the scoring brief (a time-aligned section plan plus one ready-to-use generation prompt per variation); "sfx" returns only the sound-design brief. All three modes cost the same. Use it when the user does not know what music or sound effects the video should get, then feed a variation's prompt into video_to_music, video_to_sfx, video_to_sound or their video-to-video counterparts. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Subject to the account upload cap. video_url (str, optional): HTTP(S) URL to a video file. prompt (str, optional): Guidance for the analysis, e.g. 'focus on the chase'. At most 2000 characters. variants_num (int, optional): 1-5, default 1. How many independent briefs to author for the same video. Billed per brief. mode (str, optional): "both" (default), "music" or "sfx". Exactly one of video_path and video_url must be provided. Maximum video duration is 480 seconds (8 minutes); billing has a 10-second floor, so a very short clip costs the same as a 10-second one. Returns: TextContent holding the brief as JSON: `mode` (echo of the request), `segments` (start, end, label, prompt) and `variations` (one prompt each); in both mode also `sfx_segments` (same shape as `segments`) and `sfx_prompt` (a single string, not one per variation). No file path is returned because no file is written. On timeout the error message includes the task_id — recover the brief with get_sfx_task.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | – | – | – |
| prompt | – | – | – |
| variants_num | integer | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
audio_ducking ~390
Duck a music bed under a voice track: Sonilo lowers the music wherever the voice is speaking and lifts it back in the gaps, then returns the mixed result. The voice input may be a video — its audio track is used as the voice, and the ducked mix is muxed back into a new video. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: voice_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Audio (.wav/.mp3/.m4a/.aac/.ogg/.flac) or video (.mp4/.mov/.avi/.wmv/.webm/.mkv). voice_url (str, optional): HTTPS URL to the voice audio/video. music_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Audio only. music_url (str, optional): HTTPS URL to the music audio. output_directory (str, optional): Where to save the result. Defaults to SONILO_MCP_BASE_PATH. Exactly one of voice_path/voice_url, and exactly one of music_path/music_url, must be provided. A local file and a URL may be mixed across the two inputs. Each input is capped at 360 seconds (6 minutes) and by the account's upload-size limit (typically 300 MB). Returns: TextContent with the absolute path of the saved file: a .wav, or a .mp4 when the voice input was a video. If the call times out, the error message includes the task_id — recover the result later with get_sfx_task.
| Name | Type | Req | Description |
|---|---|---|---|
| music_path | – | – | – |
| music_url | – | – | – |
| output_directory | – | – | – |
| voice_path | – | – | – |
| voice_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
dubbing ~1,026
Dub a video into one or more other languages and save one dubbed video file per language. The speech is translated and re-voiced; the result is a new .mp4 per target language, not an audio track. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges, and you are billed PER LANGUAGE — asking for four languages costs four times as much as one. Free preview: a self-serve account's first call with ONE language and no subtitles is free — the video is trimmed to its first 15 seconds and translated at no charge, and the result carries trial_preview with what the full video would cost. Every call after that, and any call with several languages or subtitles, is billed. Only use when explicitly requested by the user. This call polls until the backend finishes and waits AT LEAST TWO HOURS before giving up, regardless of any shorter configured timeout — two hours is the backend's own ceiling for the job. A call that sits for an hour or more is normal, not a hang; do not cancel it, since the task keeps running and charging on the backend either way and a cancelled call just loses the caller's easy path to the result. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 300 seconds (5 minutes). video_url (str, optional): HTTPS URL to a video file. Must be https specifically — the dubbing pipeline fetches the source itself and rejects plain http. languages (list, optional): Target language codes, e.g. ["es", "fr"]. Supported: en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar, tr, vi, id, ta, ml, kn, gu, pa_in, sd_in, hi. pt_br is Brazilian Portuguese and es_419 Latin American Spanish; plain pt and es give unqualified Portuguese and Spanish, so pick the regional code when the region matters. ar is likewise unqualified Arabic, not a country diale…
| Name | Type | Req | Description |
|---|---|---|---|
| ducking | – | – | – |
| export_srt | – | – | – |
| languages | – | – | – |
| lipsync | – | – | – |
| output_directory | – | – | – |
| subtitles | – | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
get_account_services ~256
Get the authenticated account's available Sonilo services, rate limits, concurrency limit, discount factor, max video upload size, and — when the account has one — its free-trial allowance. Use this to discover what generation endpoints are available before calling them. Returns: dict with available_services, rpm_limit, concurrency_limit, discount_factor, max_upload_size_mb, and an optional trial object keyed by service, each {granted, used, remaining}. Check trial[service]['remaining'] before calling a paid generation tool: at 0 that call fails with 402 trial_exhausted, which no retry fixes — tell the user their free trial for that service is spent and that continuing needs a payment method. The trial key is absent for accounts that have no free-trial allowance; treat that as 'the account bills normally', not as an error. A trial object that IS present but has no entry for the service you're about to call means that service has no free-trial allowance at all — it bills from the first call. dubbing's allowance of 1 is a 15-second PREVIEW, not a full run: the first single-language call translates only the first 15 seconds of the video, free.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_sfx_task ~408
Check a sound-effects, audio-ducking, video-to-video, dubbing, proofread, or async video-to-music generation task and, if finished, download its result file(s). Use this to recover a result when text_to_sfx, video_to_sfx, audio_ducking, video_to_video_music, video_to_video_sfx, video_to_sound, video_to_video_sound, dubbing, proofread, or video_to_music(preserve_speech=true) timed out — their error message contains the task_id. Does not poll: a single status check per call. This tool itself never charges. Args: task_id (str): The task id returned in the timeout message. output_directory (str, optional): Where to save result files. Defaults to SONILO_MCP_BASE_PATH. Returns: Still processing -> a status message; try again later. Succeeded -> the saved file path(s): audio for text_to_sfx and video_to_sfx tasks; a single .wav or .mp4 for audio_ducking tasks; a single .mp4 for video_to_video_music/video_to_video_sfx/video_to_video_sound tasks; a single .wav for video_to_sound tasks; one .mp4 per language for dubbing tasks; one .srt per language, plus the detected source language and cue count, for proofread tasks; for a video_to_music(preserve_speech=true) task, the audio stream(s) plus the preserved speech ('vocals') stem plus the mux (speech+music mixed — the ready-to-use combined result). If the original call used variants_num > 1 (video_to_music, video_to_video_music, video_to_sound, or video_to_video_sound), every variant is saved here too — one file per variant, suffixed -0, -1, .... Failed -> an error including whether the charge was refunded.
| Name | Type | Req | Description |
|---|---|---|---|
| output_directory | – | – | – |
| task_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
get_usage ~61
Get the authenticated account's usage summary and per-day breakdown. Useful for cost reconciliation and tracking generation history. Args: days (int, optional): Lookback window in days, 1–365. Defaults to 30.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | – |
No output schema declared.
No examples provided.
play_audio ~79
Play a local audio file through the system's default output device. Supports WAV, MP3, M4A, AAC, OGG, FLAC. Args: input_file_path (str): Absolute path or relative to SONILO_MCP_BASE_PATH. Returns: Success message including the played path.
| Name | Type | Req | Description |
|---|---|---|---|
| input_file_path | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| _meta | – | – | – |
| annotations | – | – | – |
| text | string | yes | – |
| type | string | yes | – |
No examples provided.
proofread ~563
Transcribe a video and translate its script into the target dubbing languages, returning one editable .srt per language plus the source-language transcript, so the text can be read and corrected BEFORE anything is dubbed. Nothing is spoken and no video is produced — this is the step before the dubbing tool. Send the edited files back as `subtitles` on the dubbing tool so the dub speaks exactly the approved wording. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges, and you are billed PER LANGUAGE: video duration × the number of target languages at $0.001/sec, with a 10-second billing floor. A transcript-only request (no languages) counts as one language. Self-serve accounts get 2 free-trial runs on it. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Subject to the account's max upload size (typically 300 MB). video_url (str, optional): HTTPS URL to a video file. Must be https specifically — the backend fetches the source itself and rejects plain http. Either way: Maximum video duration is 300 seconds (5 minutes), and the video must have an audio track. languages (list, optional): Target language codes to translate the transcript into, e.g. ["ja", "zh_cn"]. These are the same codes the dubbing tool takes (see its languages argument for the list), so a proofread script can go straight into a dub. Omit it, or pass an empty list, for the source-language transcript alone. source_language (str, optional): Hint telling transcription which language to expect, one of the same codes — it helps on short, noisy or mixed-language audio. Omit it to have the language detected; either way the result reports the language the transcript is in. output_directory (str, optional): Where to save the results. Defaults to SONILO_MCP_BASE_PATH. Exactly one of video_path and video_url must be provided. Returns: One TextContent per saved file…
| Name | Type | Req | Description |
|---|---|---|---|
| languages | – | – | – |
| output_directory | – | – | – |
| source_language | – | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
text_to_music ~633
Generate music from a text prompt and save the resulting audio file(s) to a local directory. Generated tracks are fully licensed (music licensed via Shutterstock) and cleared for commercial use on social, brand content, and advertising. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: prompt (str): Description of the music to generate (1–1000 chars). duration (int, optional): Length in seconds (5–360). Omit it and Sonilo picks a length that suits the prompt. output_format (str, optional): 'm4a' (default), 'wav', or 'mp3' (320 kbps). Anything but 'm4a' requires the backend's async generation mode (submit + poll) instead of streaming — selected automatically, no user-facing mode param needed. variants_num (int, optional): 1-10, default 1. Generate this many distinct music variants in one request — each is its own creative direction with its own title, not just a re-roll. Cost scales linearly with N. Values above 1 require the backend's async generation mode (handled automatically, same as output_format='wav') and are never covered by the free trial — even a trial account is billed for variants beyond the first. stems (bool, optional): Default false. Pass stems=true to also get the track split into four separate instrument tracks — drums, bass, vocals and other — at no extra charge; it adds a few minutes to the wait (this tool then waits up to 40 minutes), so set it only when the user asks for stems or separated tracks. Uses the backend's async generation mode (handled automatically, same as output_format='wav'). If a stems result comes back with stems_error instead of (or alongside a partial) stems — surfaced here as a note in the returned text — only the separation failed or was skipped: the music itself generated fine, the saved audio files are valid, and the user was not charged for the separation — report it as a missing extra, not as a failed generation.…
| Name | Type | Req | Description |
|---|---|---|---|
| duration | – | – | – |
| output_directory | – | – | – |
| output_format | – | – | – |
| prompt | string | yes | – |
| stems | boolean | – | – |
| variants_num | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
text_to_sfx ~259
Generate a sound effect from a text prompt and save the audio file to a local directory. Generation is asynchronous on the backend; this tool waits for completion (typically well under the timeout) and returns the saved file path. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: prompt (str): Description of the sound effect (1–2000 chars). duration (float, optional): Length in seconds (0.5–180). Omit it for Sonilo's own default length. audio_format (str, optional): One of wav, mp3, aac, flac. Defaults to aac (.m4a file). output_directory (str, optional): Absolute path, or relative to SONILO_MCP_BASE_PATH. Defaults to SONILO_MCP_BASE_PATH (~/Desktop unless overridden). Returns: TextContent with the absolute path of the saved audio file. If the call times out, the error message includes the task_id — recover the result later with get_sfx_task.
| Name | Type | Req | Description |
|---|---|---|---|
| audio_format | – | – | – |
| duration | – | – | – |
| output_directory | – | – | – |
| prompt | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_music ~997
Generate an original score for a video: Sonilo analyzes the video's pacing, motion, and emotion, aligns transitions and beat drops to its cut points, and matches the video's duration exactly. Provide either a local video file path or a publicly accessible video URL. Generated tracks are fully licensed (music licensed via Shutterstock) and cleared for commercial use on social, brand content, and advertising. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.avi/.wmv/.webm/.mkv. Subject to the account's max upload size (typically 300 MB). Maximum video duration is 360 seconds (6 minutes). video_url (str, optional): HTTPS URL to a video file. prompt (str, optional): Style hint for the generated music. preserve_speech (bool, optional): Keep the source speech from the video audible in the result. When set, in addition to the generated music you also get a 'vocals' speech stem and a ready-to-use 'mux' (speech+music, already mixed). Defaults to False. output_format (str, optional): 'm4a' (default), 'wav', or 'mp3' (320 kbps). ducking (bool, optional): Duck the generated music under the source voice at finalize time. Default-OFF server-side: leave unset to skip it, pass True to run it, which adds a ducked track alongside the unchanged clean audio. Free, best-effort. variants_num (int, optional): 1-10, default 1. Generate this many distinct music variants in one request — each is its own creative direction with its own title, not just a re-roll. Cost scales linearly with N. Values above 1 are never covered by the free trial — even a trial account is billed for variants beyond the first. prompt_influence (float, optional): 0-1, API default 0.5. Sets how strongly the generated music follows the prompt; omit it unless the user asks for stricter or looser pr…
| Name | Type | Req | Description |
|---|---|---|---|
| ducking | – | – | – |
| output_directory | – | – | – |
| output_format | – | – | – |
| preserve_speech | boolean | – | – |
| prompt | – | – | – |
| prompt_influence | – | – | – |
| stems | boolean | – | – |
| variants_num | integer | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_sfx ~427
Generate sound effects for a video: Sonilo analyzes the video and creates matching SFX. Returns the generated sound-effects audio file. Provide either a local video file path or a publicly accessible video URL. Generation is asynchronous on the backend; this tool waits for completion and returns the saved file paths. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 480 seconds (8 minutes). video_url (str, optional): HTTPS URL to a video file. prompt (str, optional): Overall description of the desired sound effects (max 2000 chars). segments (list, optional): Per-segment SFX descriptions, each {"start": float, "end": float, "prompt": str}. Backend rules: first start must be 0; segments must be contiguous (each end == next start); every end > start; every prompt non-empty (max 200 chars); last end must not exceed the video duration; max 30 segments. Invalid segments are rejected before any charge. audio_format (str, optional): One of wav, mp3, aac, flac. Defaults to aac (.m4a file). output_directory (str, optional): Where to save the resulting files. Defaults to SONILO_MCP_BASE_PATH. Exactly one of video_path and video_url must be provided. Returns: One TextContent: the saved audio file path. If the call times out, the error message includes the task_id — recover with get_sfx_task.
| Name | Type | Req | Description |
|---|---|---|---|
| audio_format | – | – | – |
| output_directory | – | – | – |
| prompt | – | – | – |
| segments | – | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_sound ~752
Generate music AND sound effects for a video in one call and return them mixed into a single audio track (no video). Use this instead of calling video_to_music and video_to_sfx separately — the two layers are balanced against each other by the backend, and it is one charge. Provide either a local video path or a public video URL. Generation is asynchronous; this tool waits for completion and returns the saved audio path. Music is fully licensed (via Shutterstock) and cleared for commercial use. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 480 seconds (8 minutes). video_url (str, optional): HTTPS URL to a video file. music_prompt (str, optional): Style hint for the music bed (max 2000 chars). sfx_prompt (str, optional): Description of the sound effects layered over the music (max 2000 chars). segments (list, optional): Per-segment SFX descriptions, each {"start": float, "end": float, "prompt": str}. Backend rules: first start must be 0; segments must be contiguous (each end == next start); every end > start; every prompt non-empty (max 200 chars); last end must not exceed the video duration; max 30 segments. Invalid segments are rejected before any charge. preserve_speech (bool, optional): Keep the speech from the source video in the result. Defaults to False. ducking (bool, optional): Bring the source video's own speech into the mix and dip the generated music under it. Defaults to False, and this endpoint has no keep_original_sound, so by default the result is the generated music and effects ALONE — the source's speech is not in it and there is no music_processed stem. Pass preserve_speech instead to bring in the isolat…
| Name | Type | Req | Description |
|---|---|---|---|
| ducking | boolean | – | – |
| music_prompt | – | – | – |
| output_directory | – | – | – |
| output_format | – | – | – |
| preserve_speech | boolean | – | – |
| segments | – | – | – |
| sfx_prompt | – | – | – |
| variants_num | integer | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_video_music ~883
Generate an original score for a video and return a NEW VIDEO with the music muxed in (not just an audio file). Provide either a local video path or a public video URL. Generation is asynchronous; this tool waits for completion and returns the saved video path. Tracks are fully licensed (via Shutterstock) and cleared for commercial use. By default the returned video's audio is the generated music ALONE — the source video's own audio is removed. Pass keep_original_sound=True to keep the whole source track with the music statically mixed under it, adding ducking=True to dip the music under the voice instead; or preserve_speech=True to keep only the isolated speech. The source picture is copied without re-encoding, so the input must carry H.264, H.265/HEVC, VP9 or AV1 video in an mp4, mov, m4v or webm container — animated gif and VP8 webm are rejected. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Subject to the account upload cap. Maximum video duration is 360 seconds (6 minutes). video_url (str, optional): HTTPS URL to a video file. prompt (str, optional): Style hint for the generated music. segments (list[dict], optional): How the music should develop over time, as [{"start": float, "prompt": str, "label": str}, ...]. The first start must be 0, starts must be at least 5 seconds apart, and label is one of intro/verse/pre-chorus/chorus/bridge/break/silence/outro/none. Supplying these skips the plan the backend would otherwise derive from prompt. keep_original_sound (bool, optional): Keep the source video's whole original audio track in the result, with the generated music combined under it. Defaults to False, so by default the returned video's audio is the generated music alone. Supersedes preserve_speech. ducking (bool, optional): How the voice and the generated music…
| Name | Type | Req | Description |
|---|---|---|---|
| ducking | boolean | – | – |
| keep_original_sound | boolean | – | – |
| output_directory | – | – | – |
| preserve_speech | boolean | – | – |
| prompt | – | – | – |
| prompt_influence | – | – | – |
| segments | – | – | – |
| variants_num | integer | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_video_sfx ~380
Generate sound effects for a video and return a NEW VIDEO with the SFX muxed in (not just an audio file). Provide either a local video path or a public video URL. Generation is asynchronous; this tool waits for completion and returns the saved video path. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 480 seconds (8 minutes). video_url (str, optional): HTTPS URL to a video file. prompt (str, optional): Overall description of the desired sound effects (max 2000 chars). segments (list, optional): Per-segment SFX descriptions, each {"start": float, "end": float, "prompt": str}. Backend rules: first start must be 0; segments must be contiguous (each end == next start); every end > start; every prompt non-empty (max 200 chars); last end must not exceed the video duration; max 30 segments. Invalid segments are rejected before any charge. output_directory (str, optional): Where to save the result. Defaults to SONILO_MCP_BASE_PATH. Exactly one of video_path and video_url must be provided. Returns: TextContent with the saved .mp4 path. On timeout the error message includes the task_id — recover with get_sfx_task.
| Name | Type | Req | Description |
|---|---|---|---|
| output_directory | – | – | – |
| prompt | – | – | – |
| segments | – | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
video_to_video_sound ~798
Generate music AND sound effects for a video in one call and return a NEW VIDEO with the mixed soundtrack muxed in (not just an audio file). Use this instead of chaining video_to_video_music and video_to_video_sfx — the two layers are balanced against each other by the backend, and it is one charge. Provide either a local video path or a public video URL. Generation is asynchronous; this tool waits for completion and returns the saved video path. Music is fully licensed (via Shutterstock) and cleared for commercial use. ⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user. Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 480 seconds (8 minutes). video_url (str, optional): HTTPS URL to a video file. music_prompt (str, optional): Style hint for the music bed (max 2000 chars). sfx_prompt (str, optional): Description of the sound effects layered over the music (max 2000 chars). segments (list, optional): Per-segment SFX descriptions, each {"start": float, "end": float, "prompt": str}. Backend rules: first start must be 0; segments must be contiguous (each end == next start); every end > start; every prompt non-empty (max 200 chars); last end must not exceed the video duration; max 30 segments. Invalid segments are rejected before any charge. keep_original_sound (bool, optional): Keep the source video's whole original audio track in the result, with the generated music and effects combined under it. Defaults to False, so by default the returned video's audio is the generated music and effects ALONE and the source's own audio is removed — and the result carries no music_processed stem, since with no voice source there is no processed track. Supersedes preserve_speech. preserve_speech…
| Name | Type | Req | Description |
|---|---|---|---|
| ducking | boolean | – | – |
| keep_original_sound | boolean | – | – |
| music_prompt | – | – | – |
| output_directory | – | – | – |
| preserve_speech | boolean | – | – |
| segments | – | – | – |
| sfx_prompt | – | – | – |
| variants_num | integer | – | – |
| video_path | – | – | – |
| video_url | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
What is the Sonilo Music & Sound Effects MCP server?
Sonilo Music & Sound Effects is an MCP server listed in the public MCP registry as io.github.sonilo-ai/sonilo-mcp. Licensed soundtracks and sound effects matched to your video. Commercial use OK. This page covers its PyPI package (sonilo-mcp).
Is the Sonilo Music & Sound Effects MCP server safe to use?
Sonilo Music & Sound Effects scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. 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 Sonilo Music & Sound Effects MCP server expose?
Sonilo Music & Sound Effects exposes 16 tools: text_to_music, video_to_music, text_to_sfx, video_to_sfx, video_to_video_music, and 11 more. Their descriptions and schemas cost roughly 8,427 tokens of context every time the server is loaded.
Is the Sonilo Music & Sound Effects MCP server still maintained?
Sonilo Music & Sound Effects is still listed as active in the MCP registry. We last reached this channel on 21 September 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 Sonilo Music & Sound Effects MCP server under?
Sonilo Music & Sound Effects declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.