io.github.AudialAI/audial-mcp
OfficialAn MCP server that runs Audial's hosted audio-processing tools on your own audio files (stems, analysis, mastering, MIDI, presets, singing vocals) and saves the results to a local folder.
Split & analyze: split a track into vocals/drums/bass/other stems (optionally retimed or rekeyed), and get BPM, key, loudness and other characteristics in seconds.
Structure & sections: run song-section segmentation (intro, verse, chorus...) with tempo and per-segment components/features, as a pipeline.
Mastering: master a finished stereo mix, optionally matched to a reference track's loudness and tone.
Sample packs: extract one-shots and loops from a track via the
sample-packpipeline.Audio → MIDI: transcribe an audio file to MIDI, with optional BPM override for quantisation.
Generate music: text-to-music, covers, remixes, lego (emphasise a track) and
understand, with lyrics, bpm/key hints, batch variations, formats and duration controls.Sound → synth presets: turn one isolated one-shot into an editable Audial Synth (Vital) or Serum 2 preset.
Singing vocals: synthesize a sung vocal + MIDI from lyrics, a melody (MIDI or audio) and a reference voice, including exact per-note lyrics control with holds.
Job control: check
pipeline_statusfor timed-out pipelines,service_statusfor GPU cold-start costs, andlist_resultsto browse previous outputs locally.Account:
account,sign_inandsign_outto show/change the Audial sign-in (browser sign-in by default, orAUDIAL_API_KEYfor servers/CI).
Click on "Deploy 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., "@io.github.AudialAI/audial-mcpsplit the vocals and drums from ~/Music/song.mp3"
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.
audial-mcp
Powered by Audial — run Audial's hosted audio tools from any MCP client: split stems, analyze audio, find a song's sections, tempo and bars and add audio features, tags or timed lyrics to that analysis, master tracks, build sample packs, convert audio to MIDI, generate music, turn a one-shot into an editable Audial Synth or Serum 2 preset, and sing lyrics in a reference voice. See the API reference for details on what each tool calls.
mcp-name: io.github.AudialAI/audial-mcp
Install
You need an Audial account (https://audialmusic.ai?utm_source=github&utm_medium=readme&utm_campaign=mcp) and
uv. There is no API key to copy:
the first time a tool runs, a sign-in page opens in your browser. Approve it and the tool
carries on.
Claude Code
claude mcp add audial -e AUDIAL_RESULTS_DIR=~/Audial -- uvx audial-mcpClaude Desktop, one click
Download audial-mcp-<version>.mcpb from the latest release and double-click it. Claude Desktop fetches what it needs, so there is nothing else to install or configure.
Claude Desktop / Cursor / any client with a JSON config
{
"mcpServers": {
"audial": {
"command": "uvx",
"args": ["audial-mcp"],
"env": {
"AUDIAL_RESULTS_DIR": "~/Audial"
}
}
}
}Signing in
The sign-in is saved on your computer (~/.audial/credentials.json, readable only by you) and
shared with the audial command line and Python SDK, so audial login in a terminal signs
the MCP server in too. If you have not approved within two minutes the tool returns the
sign-in link instead; approve it and ask again. The account, sign_in and sign_out tools
show and change who is signed in, and each connected computer is listed, and can be
disconnected, under Apps & API Keys in your profile at audialmusic.ai.
On a server or in CI, where nobody can sign in, set AUDIAL_API_KEY to a key created on that
page. A key set this way takes priority over a saved sign-in.
Related MCP server: media-gen-mcp
Tools
Tool | What it does |
| Split a track into vocals, drums, bass, other (optionally retime / rekey) |
| BPM, key and other characteristics |
| Song sections, tempo and bars from the mix, in about half a minute; returns an |
| Energy, danceability, loudness, mode, key and tatum, for the song and each section |
| Genre, moods, instruments and artist tags for the mix and each part, plus a written description |
| Lyrics as timed lines (word timings in the saved file) |
| Mastering, optionally matched to a reference |
| Sample pack from an analysis, or from a file in one call |
| Audio to MIDI |
| Text to music, covers, remixes, lego and understand with the Audial music model |
| One isolated sound → editable Audial Synth (Vital) preset. Not for loops or melodies |
| One isolated sound → editable Xfer Serum 2 (.SerumPreset) preset. Not for loops or melodies |
| Lyrics + reference voice → sung vocal and MIDI |
| Look up a pipeline by id: its state, each step, and the outputs so far |
| Which tools have a worker awake right now, and what a cold start will cost |
| Browse previous results in your results folder |
Analysis and add-ons
segment analyses the mix in about half a minute: no stems needed. It returns the sections
(with their phrases) and a tempo map, plus an analysis_id. Beats and bars aren't listed one by
one: grid describes them -- where each constant-tempo piece starts, its BPM, and its bar and
beat. Every beat time is start + k × 60 / bpm. Most tracks have one piece.
Pass the analysis_id to audio_features, tag_audio, get_lyrics or generate_samples to
add that result to the analysis, whenever you like. Nothing is uploaded again. Each of them also
takes a file_path instead, and then runs segment on it first.
Audio features need nothing more, so they can run straight after the analysis.
Tags, lyrics and the sample pack read the track's stems. Audial makes them automatically after each analysis, so right after a new one these tools wait a few minutes for them.
If a tool analysed a file and the next step failed or timed out, the error gives the new
analysis_id: call the tool again with it, rather than with the file.
An analysis counts as one run. Everything you add to it (features, tags, lyrics, a sample pack) is included.
generate_samples on a file runs as an Audial pipeline: it prepares the track (analysis and
stems together), then builds the pack, as one job. Each step is reported as it starts and
finishes ("prepare completed in 41 s; sample-pack running"). The pipeline id comes back as the
result's execution_id -- pass it to pipeline_status to check on a job whose call timed out.
segment with features (kept for older integrations) is a pipeline as well.
Per-note lyrics
text2vox lines lyrics up with a melody. lyrics_mode="per_note" is the mode that gives
exact control: the lyrics are pipe-delimited, one token per MIDI note, and a hold keeps
the previous syllable going through the next note.
Token | Meaning |
| Sung on this note |
| Hold: continue the previous syllable through this note (the documented form) |
| Hold as well |
empty | Hold as well -- what a double pipe produces |
amazing|-|-|grace|-|how|sweet|the|soundThat sings "amazing" across notes 1-3 and "grace" across notes 4-5, and needs a MIDI file with exactly nine notes. There is no rest token: a note that should be silent should not be in the MIDI. The token count must equal the note count, and the first token must be a syllable -- a lyric string that breaks either rule comes back as a tool error naming the note it is about ("note 1 has no syllable; the first note needs one (position 1)"), before anything is uploaded.
Cold starts
Audial's workers scale to zero, so the first job after an idle period spends extra time
starting one and loading the model -- a few minutes on a GPU tool; every job after it is fast.
The analysis and each add-on (audio_features, tag_audio, get_lyrics) run on workers of
their own, so the first add-on after a quiet spell can start up for a minute or more even when
segment was quick. Audial reports that phase on the job it is already polling, and every
tool here relays it as a progress notification and a log line:
Warming up the machine — the first request takes a few minutes longer than usual
(about 3 min); every run after this is faster
Working on your job…It is the same sentence the Audial website, CLI and plugins show. service_status answers
the same question before you start anything, so a long wait can be explained in advance.
What leaves your machine
Audio and text you pass to a tool are uploaded to Audial's API (https://api.audialmusic.ai)
over HTTPS and processed on Audial's servers; results are downloaded into
AUDIAL_RESULTS_DIR (default ~/Audial). Nothing else is sent.
A tool given an analysis_id uploads nothing: it works on the audio Audial already has for
that analysis. Audial makes and keeps the track's stems with each analysis, like your
other results. To fill in artist tags, tag_audio has Audial's servers look up the track's
title and artist in a public music database; that lookup gets the title and artist, never the
audio.
Two other files are read if they exist, because the Audial SDK looks for them:
~/.audial/.audial_config.json and a .env in the directory the server was started from.
Credentials from your MCP client's config always win: audial-mcp snapshots its environment
before the SDK loads either file, so neither can redirect your credentials or the API host.
Every tool except list_results calls the Audial API, which requires an active Audial subscription on the account; without one the tool returns the API's subscription message.
Configuration
Variable | Required | Default |
| no | browser sign-in |
| no; only with an older API key that does not start with | |
| no |
|
| no |
|
| no | production API |
License
MIT. Source: https://github.com/AudialAI/audial-mcp
Available Tools
19 toolsaccountShow the Audial account in useARead-only
Show whether this computer is signed in to Audial, and as whom.
Use when a tool reports a credentials problem or the user asks which account is in use. Reads local settings only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| No | ||
| source | No | Where the credentials come from: 'sign-in' or 'api-key'. |
| summary | Yes | |
| signed_in | Yes |
analyzeAnalyze audioARead-only
Analyze a track: BPM, key, loudness and other characteristics.
Use this first whenever the user asks for tempo, key or loudness. It is the fastest tool
(seconds), does not count as a run, and changes nothing. The answer is in metadata and
the same data is saved to the results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
audio_featuresAudio featuresA
Measure energy, danceability, loudness, mode, key and tatum, for the song and each section.
Give the analysis_id from segment: nothing is uploaded and it is included in that analysis's
run. A file_path runs segment first (one run). Needs no stems, so it can run straight after
segment. Energy and danceability run 0-1: energy reflects loudness, rhythmic activity and
low end; danceability, how strong and regular the beat is. Both are measured per section,
so a drop reads higher than its breakdown. Loudness is in LUFS. The values are in
metadata (song, sections) and saved to the results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. For a track that has not been analysed yet: segment runs on it first (one run). Give this or analysis_id. | |
| analysis_id | No | The analysis_id a segment result returned (in its metadata and summary). Reuses that analysis: nothing is uploaded and it does not count as another run. Give this or file_path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
generate_midiAudio to MIDIA
Transcribe an audio file to MIDI.
Use to get notes out of audio. On a full mix, run stem_split first and transcribe the stem you want. Counts as one run. MIDI files go to a new results folder; the source is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | Override the detected tempo for note quantisation. | |
| file_path | Yes | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
generate_musicGenerate musicA
Generate music with the Audial music model.
Text to music, covers, remixes, lego (re-render with one track emphasised), or analysis (understand). Use for new or transformed music, not to edit an existing mix: that is master or stem_split. Takes a few minutes and counts as one run, and audio goes to a new results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | Tempo hint in beats per minute. | |
| seed | No | Seed for reproducible output. | |
| lyrics | No | Lyrics with optional section tags like [Verse] and [Chorus]. Omit for instrumental. | |
| prompt | Yes | Style description: genre, mood, instruments, vocal character. Tempo and key words in the prompt steer the model more than the numeric bpm/key fields, which are hints, not constraints. | |
| key_scale | No | Key hint, e.g. 'G major'. | |
| task_type | No | text2music (default), cover, remix, lego, or understand. | text2music |
| batch_size | No | Number of variations, 1-8. | |
| track_name | No | Track to emphasise for lego: vocals, drums, bass, guitar, piano, strings, synth, other. | |
| source_file | No | Local audio file; required for remix, lego, understand. | |
| audio_format | No | mp3, wav, flac, opus or aac. | mp3 |
| instrumental | No | Generate without vocals. | |
| audio_duration | No | Length in seconds (10-600). | |
| reference_file | No | Local audio file; required for cover. | |
| repainting_end | No | Remix end time in seconds (-1 = end). | |
| time_signature | No | e.g. '4/4'. | |
| vocal_language | No | Language code for vocals, e.g. 'en'. | en |
| negative_prompt | No | What to avoid, comma-separated. | |
| repainting_start | No | Remix start time in seconds. | |
| audio_cover_strength | No | 0-1 fidelity to the original for cover/remix. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
generate_samplesGenerate a sample packA
Extract a sample pack (one-shots and loops) from a track.
Use when the user wants drum hits or loops taken from a finished track. With the
analysis_id from segment, the pack is built from that analysis's sections and the stems
Audial made for it: nothing is uploaded and it is included in the analysis's run (right
after a new analysis it waits a few minutes for the stems). With file_path it runs the
sample-pack pipeline: prepares the track (analysis and stems together), then builds the
pack; one call, counted as one run, each step reported as it starts and finishes. If that
call times out the job keeps running: pipeline_status finds it. Samples go to a new
results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Genre hint. | |
| job_type | No | Sample pack job type accepted by Audial (default engine choice when omitted). | |
| file_path | No | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. Give this or analysis_id. | |
| components | No | Which components to sample, e.g. ['drums', 'bass']. | |
| analysis_id | No | The analysis_id a segment result returned (in its metadata and summary). Reuses that analysis: nothing is uploaded and it does not count as another run. Give this or file_path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
get_lyricsGet lyricsA
Transcribe a track's lyrics as timed lines.
Give the analysis_id from segment: nothing is uploaded and it is included in that analysis's
run. A file_path runs segment first (one run). Lyrics read the vocal stem, which Audial makes
automatically after each analysis: right after a new analysis this waits for it (a few
minutes). metadata.lines has one {start, end, text} per line in seconds on the track's
timeline, lyrics the whole text and section_lyrics one entry per section. Word timings
are in the saved lyrics.json. An instrumental comes back with is_instrumental true.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. For a track that has not been analysed yet: segment runs on it first (one run). Give this or analysis_id. | |
| analysis_id | No | The analysis_id a segment result returned (in its metadata and summary). Reuses that analysis: nothing is uploaded and it does not count as another run. Give this or file_path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
list_resultsList previous resultsARead-only
List previous Audial results in the results folder, newest first.
Use when the user asks where an earlier output went. Reads the local folder only: no account needed and nothing is sent anywhere.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Filter by tool name, e.g. 'stem_split'. Omit for all tools. | |
| limit | No | Maximum number of jobs to return, newest first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
masterMaster a trackA
Master a mix, optionally matching a reference track.
Use for a finished stereo mix, not for separate stems. Pass a reference track when the user names one. Takes a few minutes and counts as one run. The master goes to a new results folder; the source is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. | |
| reference_file | No | Optional reference track whose loudness and tone the master should match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
pipeline_statusPipeline statusARead-only
Look up an Audial pipeline by id: its state, each step, and the outputs so far.
Useful when a generate_samples call on a file, or a segment call with features, timed
out: the pipeline keeps running on Audial's side and this says how far it got.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | Yes | Id of a pipeline, as returned in `execution_id` by generate_samples on a file or by segment with `features`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
segmentSegment audioA
Find song sections, tempo and bars (about half a minute).
Use for song structure. Send the mix: no stems needed, and it counts as one run. The result
has the sections (with their phrases) and a tempo map. Beats and bars are not listed one by
one: grid describes them -- where each constant-tempo piece starts, its BPM, and its bar
and beat. Every beat time is start + k * 60 / bpm, and most tracks have one piece. The
analysis_id it returns adds audio_features, tag_audio, get_lyrics or generate_samples to
this analysis without another run. For tempo and key alone, analyze is quicker.
| Name | Required | Description | Default |
|---|---|---|---|
| edm | No | true: dance section names (INTRO, UP, CHORUS, DOWN, OUTRO); false: song section names (INTRO, VERSE, UP, CHORUS, OUTRO). Default: from the genre, else from the audio. | |
| genre | No | Genre hint for the section names, e.g. 'Tech House', 'Pop' or 'Drum N Bass' (a name Audial does not know returns the list). | |
| features | No | Optional, kept for older integrations: also compute these in the same call (mode, energy, loudness, danceability, tatum, tags, lyrics). The call then waits for them, minutes for tags and lyrics. Simpler: audio_features, tag_audio or get_lyrics afterwards with the analysis_id. | |
| file_path | Yes | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
service_statusService statusARead-only
Which Audial tools have a worker awake right now, and what a cold one will cost.
Audial's GPU workers scale to zero. A tool reported warm: false will spend
expectedColdStartMs starting a worker before it does any work -- a few minutes, once --
on top of the job's own expectedRunMs. Worth checking before starting a long job, and
worth telling the user about with the notice text when something is cold: otherwise the
wait looks like a hang. Nothing here starts a job or costs anything.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Audial tool to report on: stem_split, analyze, segment, audio_features, tag_audio, get_lyrics, master, generate_samples, generate_midi, generate_music, sound2vital, sound2serum or text2vox. Omit for all of them. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
sign_inSign in to AudialA
Sign in to Audial through the user's browser. Opens an approval page and waits for it.
Not needed before other tools: they start the same sign-in when nobody is signed in.
| Name | Required | Description | Default |
|---|---|---|---|
| switch_account | No | Sign out first and sign in again, to change or repair the account. |
Output Schema
| Name | Required | Description |
|---|---|---|
| No | ||
| source | No | Where the credentials come from: 'sign-in' or 'api-key'. |
| summary | Yes | |
| signed_in | Yes |
sign_outSign out of AudialA
Sign out of Audial on this computer and disconnect it from the account.
Only when the user asks to sign out or switch accounts. The next job asks them to sign in again. Results already downloaded stay where they are.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| No | ||
| source | No | Where the credentials come from: 'sign-in' or 'api-key'. |
| summary | Yes | |
| signed_in | Yes |
sound2serumResynthesize a one-shot into a Serum 2 presetA
Turn one isolated sound into an editable Xfer Serum 2 preset.
Not for loops or melodies, which give a poor preset. If the result's summary says the match is weak, tell the user and suggest trimming the input to one note.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | One isolated sound: a single note, chord stab or hit, ideally 1-4 s and dry, 20 s at most. Not a loop, melody, drum pattern or anything with several notes in sequence: those produce a poor preset even under 20 s. To use a loop, trim it to one note first. The result is an editable Xfer Serum 2 (.SerumPreset) preset that reproduces its timbre. No plugin needed -- open it in Serum 2.1+. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
sound2vitalResynthesize a one-shot into a synth presetA
Turn one isolated sound into an editable Audial Synth preset.
Not for loops or melodies, which give a poor preset. If the result's summary says the match is weak, tell the user and suggest trimming the input to one note.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | One isolated sound: a single note, chord stab or hit, ideally 1-4 s and dry, 20 s at most. Not a loop, melody, drum pattern or anything with several notes in sequence: those produce a poor preset even under 20 s. To use a loop, trim it to one note first. The result is an editable Audial Synth (.vital) preset that reproduces its timbre. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
stem_splitSplit stemsA
Split a track into separate instrument stems, optionally retimed and rekeyed.
Use for a full song or mix when the user wants vocals, drums, bass or an instrumental on their own. For tempo and key alone use analyze; for sections use segment. Takes a few minutes and counts as one run. Stems go to a new results folder; the source is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| stems | No | Stems to extract from: vocals, drums, bass, other, full_song_without_vocals. Default: vocals, drums, bass, other. | |
| algorithm | No | Separation algorithm. Default 'primaudio'. | primaudio |
| file_path | Yes | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. | |
| target_bpm | No | Retime the stems to this tempo (beats per minute). | |
| target_key | No | Transpose the stems to this key, e.g. 'A minor' or 'F# major'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
tag_audioTag audioA
Tag a track: genre, moods, instruments and artist tags for the mix and each part, plus a written description.
Give the analysis_id from segment: nothing is uploaded and it is included in that analysis's
run. A file_path runs segment first (one run). Tags read the track's stems, which Audial
makes automatically after each analysis: right after a new analysis this waits for them (a
few minutes). The tags are in metadata (genre, song_tags, description) and saved to
the results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. For a track that has not been analysed yet: segment runs on it first (one run). Give this or analysis_id. | |
| analysis_id | No | The analysis_id a segment result returned (in its metadata and summary). Reuses that analysis: nothing is uploaded and it does not count as another run. Give this or file_path. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
text2voxSing lyrics in a reference voiceA
Synthesize a sung vocal (and MIDI) from lyrics, a melody and a reference voice.
Needs both a reference clip of the voice and a melody, as MIDI or audio. lyrics_mode decides how the lyrics are lined up with the melody's notes; "per_note" is the one that gives exact control. See the lyrics_mode and lyrics descriptions. Takes a few minutes and counts as one run. Audio and MIDI go to a new results folder.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Seed for reproducible output. | |
| lyrics | Yes | Lyrics to sing. With lyrics_mode 'per_note' this is pipe-delimited, one token per MIDI note, e.g. 'amazing|-|-|grace|-|how|sweet|the|sound'; otherwise it is ordinary text. | |
| midi_file | No | MIDI melody (.mid). Give this or melody_audio_file. | |
| nfe_steps | No | Synthesis steps; more is slower and cleaner. | |
| lyrics_mode | No | How the lyrics line up with the melody. 'auto' (default): ordinary text, one word per MIDI note, aligned for you (word_timestamps_file helps). '1to1': the text is passed to the synthesizer untouched. 'per_note': exact control -- the lyrics are pipe-delimited with one token per MIDI note, in order. In per_note mode a token is either a syllable sung on that note ('grace') or a HOLD, which keeps the previous syllable going through this note: write a hold as '-' (preferred), '+', or an empty token (a double pipe). So 'amazing|-|-|grace|-|how|sweet|the|sound' sings 'amazing' across notes 1-3 and 'grace' across notes 4-5, and needs a MIDI file with exactly 9 notes. There is no rest token: a note that should be silent must not be in the MIDI. The token count has to equal the note count and the first token has to be a syllable, never a hold. | auto |
| pitch_shift | No | Semitones to shift the melody. | |
| cfg_strength | No | Guidance strength. | |
| strict_pitch | No | Force exact pitch to the melody. | |
| no_pitch_bends | No | Disable pitch bends. | |
| reference_file | Yes | Short clip of the reference voice (timbre). | |
| reference_text | No | Transcript of the reference clip, if known. | |
| bend_smoothing_ms | No | Pitch-bend smoothing window in ms. | |
| leading_silence_s | No | Silence before the first note, seconds. | |
| melody_audio_file | No | Audio whose melody is transcribed and followed, if no MIDI. | |
| word_timestamps_file | No | Optional JSON word timings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | Yes | |
| files | Yes | |
| summary | Yes | |
| metadata | Yes | |
| output_dir | Yes | |
| execution_id | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.7.0- Added
audio_features - Changed
generate_samples6 fields changed- added
Input schema / properties / analysis_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The analysis_id a segment result returned (in its metadata and summary). Reuses that analysis: nothing is uploaded and it does not count as another run. Give this or file_path.", + "title": "Analysis Id" +} - added
Input schema / properties / file_path / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / file_path / defaultAdded value: +null - changed
Input schema / properties / file_path / descriptionPrevious value: -"Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded."New value: +"Full path to a local audio file (.wav, .mp3, .aif, .aiff, .flac, .m4a, .ogg, .aac). ~ is expanded. Give this or analysis_id." - removed
Input schema / properties / file_path / typeRemoved value: -"string" - removed
Input schema / requiredRemoved value: -[ - "file_path" -]
- Added
get_lyrics - Changed
pipeline_status1 field changed- changed
Input schema / properties / pipeline_id / descriptionPrevious value: -"Id of a pipeline, as returned in `execution_id` by segment or generate_samples."New value: +"Id of a pipeline, as returned in `execution_id` by generate_samples on a file or by segment with `features`."
- Changed
segment5 fields changed- removed
Input schema / properties / analysis_typeRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Analysis type accepted by Audial's segmentation.", - "title": "Analysis Type" -} - removed
Input schema / properties / componentsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Components to analyze, e.g. ['vocals', 'drums'].", - "title": "Components" -} - added
Input schema / properties / edmAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "true: dance section names (INTRO, UP, CHORUS, DOWN, OUTRO); false: song section names (INTRO, VERSE, UP, CHORUS, OUTRO). Default: from the genre, else from the audio.", + "title": "Edm" +} - changed
Input schema / properties / features / descriptionPrevious value: -"Features to compute per segment."New value: +"Optional, kept for older integrations: also compute these in the same call (mode, energy, loudness, danceability, tatum, tags, lyrics). The call then waits for them, minutes for tags and lyrics. Simpler: audio_features, tag_audio or get_lyrics afterwards with the analysis_id." - changed
Input schema / properties / genre / descriptionPrevious value: -"Genre hint that improves section detection."New value: +"Genre hint for the section names, e.g. 'Tech House', 'Pop' or 'Drum N Bass' (a name Audial does not know returns the list)."
- Changed
service_status1 field changed- changed
Input schema / properties / tool / descriptionPrevious value: -"Audial tool to report on: stem_split, analyze, segment, master, generate_samples, generate_midi, generate_music, sound2vital, sound2serum or text2vox. Omit for all of them."New value: +"Audial tool to report on: stem_split, analyze, segment, audio_features, tag_audio, get_lyrics, master, generate_samples, generate_midi, generate_music, sound2vital, sound2serum or text2vox. Omit for all of them."
- Added
tag_audio
9 tool updates
v0.5.0- Added
account - Changed
generate_music3 fields changed- changed
Input schema / properties / source_file / descriptionPrevious value: -"Local audio file; required for remix, extract, lego, complete, understand."New value: +"Local audio file; required for remix, lego, understand." - changed
Input schema / properties / task_type / descriptionPrevious value: -"text2music (default), cover, remix, extract, lego, complete, or understand."New value: +"text2music (default), cover, remix, lego, or understand." - changed
Input schema / properties / track_name / descriptionPrevious value: -"Track to extract/replace for extract/lego: vocals, drums, bass, guitar, piano, strings, synth, other."New value: +"Track to emphasise for lego: vocals, drums, bass, guitar, piano, strings, synth, other."
- Added
pipeline_status - Added
service_status - Added
sign_in - Added
sign_out - Added
sound2serum - Changed
sound2vital1 field changed- changed
Input schema / properties / file_path / descriptionPrevious value: -"A short one-shot (<= 20 s) audio file. The result is an editable Audial Synth (.vital) preset that reproduces its timbre."New value: +"One isolated sound: a single note, chord stab or hit, ideally 1-4 s and dry, 20 s at most. Not a loop, melody, drum pattern or anything with several notes in sequence: those produce a poor preset even under 20 s. To use a loop, trim it to one note first. The result is an editable Audial Synth (.vital) preset that reproduces its timbre."
- Changed
text2vox2 fields changed- changed
Input schema / properties / lyrics / descriptionPrevious value: -"Lyrics to sing."New value: +"Lyrics to sing. With lyrics_mode 'per_note' this is pipe-delimited, one token per MIDI note, e.g. 'amazing|-|-|grace|-|how|sweet|the|sound'; otherwise it is ordinary text." - changed
Input schema / properties / lyrics_mode / descriptionPrevious value: -"auto (default) or an explicit lyric alignment mode."New value: +"How the lyrics line up with the melody. 'auto' (default): ordinary text, one word per MIDI note, aligned for you (word_timestamps_file helps). '1to1': the text is passed to the synthesizer untouched. 'per_note': exact control -- the lyrics are pipe-delimited with one token per MIDI note, in order. In per_note mode a token is either a syllable sung on that note ('grace') or a HOLD, which keeps the previous syllable going through this note: write a hold as '-' (preferred), '+', or an empty token (a double pipe). So 'amazing|-|-|grace|-|how|sweet|the|sound' sings 'amazing' across notes 1-3 and 'grace' across notes 4-5, and needs a MIDI file with exactly 9 notes. There is no rest token: a note that should be silent must not be in the MIDI. The token count has to equal the note count and the first token has to be a syllable, never a hold."
10 tool updates
v0.1.1- First observed
analyze - First observed
generate_midi - First observed
generate_music - First observed
generate_samples - First observed
list_results - First observed
master - First observed
segment - First observed
sound2vital - First observed
stem_split - First observed
text2vox
TDQS
Scored across 19 tools
Most tools have sharply distinct jobs, and descriptions actively redirect between near-neighbors (e.g. 'for tempo and key alone, analyze is quicker' vs segment; sound2vital vs sound2serum differ only by target synth but are explicitly named). The main soft spot is analyze vs audio_features, which both report key/loudness/mode-like data, and audio_features/tag_audio/get_lyrics share the same analysis_id-or-file_path input shape, so an agent must read descriptions carefully to pick correctly.
Names are all lowercase snake_case, but the verb convention is mixed: verb_noun (get_lyrics, list_results, generate_samples, sign_in), bare noun/verb (segment, analyze, master, account), and a 'X2Y' pattern (sound2vital, sound2serum, text2vox). It stays readable, but there is no single predictable pattern an agent can rely on to infer an unlisted operation.
19 tools is on the heavy side, but the domain is genuinely broad (analysis, stems, mastering, MIDI, music generation, presets, vocals) and each processing tool maps to a distinct output artifact. The auth/status cluster (account, sign_in, sign_out, service_status, pipeline_status, list_results) adds some overhead but each serves an operational purpose.
Coverage of the audio lifecycle is strong: cheap analysis, segmentation, features, tags, lyrics, stems, sample packs, mastering, MIDI, generation, presets, vocal synthesis, plus auth, worker status, pipeline polling and local result listing. Gaps are minor but real: no cancel/delete of jobs or results, and no direct fetch of a single saved result by id beyond pipeline_status/list_results.
Maintenance
Related MCP Connectors
Remote MCP server for audio stem separation, denoise, reverb, and MIDI export.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for Producer/Riffusion AI music generation
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to programmatically edit, analyze, and export audio projects through MCP tools, including multi-track editing, effects, transcription, and semantic search.1-
- FlicenseNot gradedqualityCmaintenanceEnables AI clients like Claude and ChatGPT to generate images and videos, animate images, create lip-synced videos, list TTS voices, and manage media via remote MCP tools.-
- AlicenseBqualityBmaintenanceEnables MCP-compatible agents to queue, run, and track local AI music generation jobs with dry-run defaults, license recording, and pluggable pipeline adapters for YuE or compatible backends.31AGPL 3.0

AudioPod MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceProvides ten hosted audio AI tools — TTS, voice cloning, music generation, stem separation, speaker separation, transcription, denoising, media conversion, and job polling — over a single streamable-HTTP endpoint for any MCP-capable agent.MIT