Audio mastering for AI agents: LUFS/True Peak targets, Suno/Udio AI-fingerprint removal.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Measure integrated LUFS, sample peak, duration, sample rate and stereo correlation without processing. Free, a couple of seconds. Run this before choosing a preset. Note: true peak and loudness range are NOT part of this fast pass — they are measured on the result and come back from get_job.
Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically.
Measure integrated LUFS, sample peak, duration, sample rate and stereo correlation without processing. Free, a couple of seconds. Run this before choosing a preset. Note: true peak and loudness range are NOT part of this fast pass — they are measured on the result and come back from get_job.
| Argument | Type | Description |
|---|---|---|
| audio_url* | string | Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically. |
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"audio_url": {
"type": "string",
"description": "Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically."
}
},
"additionalProperties": false
}Master up to 10 tracks in one call with the same settings. Needs N TOKENS for N tracks, or N free runs — not one. album_mode (default true) levels the tracks RELATIVE to each other: the loudest hits the target exactly, the others keep their offsets, so a quiet interlude is not inflated to single level. Limits: 10 tracks, 100 MB per file and 300 MB per call (this server's own caps, for memory) — the account may allow bigger uploads on the site, but not through this channel. A big album takes minutes — send fewer, longer tracks per call rather than all at once. Returns one job id per track — poll each with get_job. Pass dry_run=true to see the price and the settings before anything is spent.
| Argument | Type | Description |
|---|---|---|
| style | string | Preset key from list_presets. |
| bitrate | integer | MP3: 128/192/256/320; OPUS: 128/192. |
| dry_run | boolean | Report the price and settings without mastering and without downloading anything. |
| album_mode | boolean | Keep relative loudness between tracks. Default true. Set false for unrelated singles. |
| audio_urls* | array | Public https URLs, in album order. |
| out_format | string | |
| target_lufs | number | Target for the LOUDEST track in album mode. |
| remove_watermark | boolean | Also remove the Suno/Udio AI fingerprint. Free. |
{
"type": "object",
"required": [
"audio_urls"
],
"properties": {
"style": {
"type": "string",
"description": "Preset key from list_presets."
},
"bitrate": {
"type": "integer",
"description": "MP3: 128/192/256/320; OPUS: 128/192."
},
"dry_run": {
"type": "boolean",
"description": "Report the price and settings without mastering and without downloading anything."
},
"album_mode": {
"type": "boolean",
"description": "Keep relative loudness between tracks. Default true. Set false for unrelated singles."
},
"audio_urls": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Public https URLs, in album order."
},
"out_format": {
"enum": [
"wav",
"wav24",
"mp3",
"flac",
"opus",
"aac"
],
"type": "string"
},
"target_lufs": {
"type": "number",
"description": "Target for the LOUDEST track in album mode."
},
"remove_watermark": {
"type": "boolean",
"description": "Also remove the Suno/Udio AI fingerprint. Free."
}
},
"additionalProperties": false
}What this account may do right now: token balance, free quota left and when it resets, upload cap, whether PRO modules are available. Call before mastering.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Strip the AI generator fingerprint without mastering; loudness and tone stay as they are. Free. Returns a job id — poll get_job.
| Argument | Type | Description |
|---|---|---|
| audio_url* | string | Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically. |
| out_format | string | |
| sensitivity | number | 0-1, default server-side. |
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"audio_url": {
"type": "string",
"description": "Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically."
},
"out_format": {
"enum": [
"wav",
"wav24",
"mp3",
"flac",
"opus",
"aac"
],
"type": "string"
},
"sensitivity": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "0-1, default server-side."
}
},
"additionalProperties": false
}Prepare a token purchase for the human principal. The agent CANNOT complete the payment: the card payment needs the human. Returns the checkout link to hand over, then poll check_limits.
| Argument | Type | Description |
|---|---|---|
| pack_id | string | Pack id from get_pricing, e.g. tokens_10. |
{
"type": "object",
"properties": {
"pack_id": {
"type": "string",
"description": "Pack id from get_pricing, e.g. tokens_10."
}
},
"additionalProperties": false
}Status, progress and result metrics (after_lufs, true_peak_db, lra, platform_ready) for a mastering, cleanup or preview job. For previews it returns each style with its loudness and a listen link. When a master is done it also returns download_url — a signed link that works without credentials for about an hour, so an OAuth-connected agent can fetch the file it paid for. Free.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Job id returned by master_track, clean_ai_trace or preview_styles; batch_master returns one per track in job_ids. Not a URL or a filename: 1-64 chars of A-Z a-z 0-9 _ - |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"maxLength": 64,
"minLength": 1,
"description": "Job id returned by master_track, clean_ai_trace or preview_styles; batch_master returns one per track in job_ids. Not a URL or a filename: 1-64 chars of A-Z a-z 0-9 _ -"
}
},
"additionalProperties": false
}Live token packs and payment methods. Never quote prices from memory. Free.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}What Magic Master does, what is free, what costs a token, and where the rules live. Call once at the start of a session.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}All mastering presets with their target loudness in LUFS. Call this to get the exact preset keys that master_track and batch_master accept. Use preview_styles instead when you want to HEAR 2-6 of them on the actual track before choosing, and get_service_info when you need the wider service manifest rather than the preset list. Free.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Master one track. COSTS 1 TOKEN when the account has a balance; otherwise it runs on the free quota without PRO modules. Returns a job id immediately — poll get_job (typical 20-60 s, up to 10 min with restoration). The source is fetched by this server, so the ceiling here is 100 MB per file even when the account allows more. Pass dry_run=true first if you want the price and the effective settings before anything is spent.
| Argument | Type | Description |
|---|---|---|
| style | string | Preset key from list_presets, e.g. edm, hiphop, podcast, unlimiter. Default standard. |
| bitrate | integer | MP3: 128/192/256/320; OPUS: 128/192. |
| dry_run | boolean | Do not master: report what this call would cost and what settings would apply. Nothing is charged, the file is not even downloaded. |
| audio_url* | string | Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically. |
| intensity | number | Multiplier on the preset's multiband compression: 1.0 as designed, 0.5 gentler, 1.5 denser. Values outside 0.5-1.5 are clamped. |
| out_format | string | |
| dither_type | string | Dither for 16-bit WAV output: tpdf (default), ns_e or ns_itu (noise-shaped). |
Master the middle 24 s of the track in 2-6 presets at once and get each one's loudness plus a listen link. FREE (6 per day). Use this instead of guessing a preset, and instead of burning a token to 'try' one.
| Argument | Type | Description |
|---|---|---|
| styles | array | Preset keys from list_presets. Default: edm, pop, rnb, standard. |
| audio_url* | string | Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically. |
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"styles": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"minItems": 2,
"description": "Preset keys from list_presets. Default: edm, pop, rnb, standard."
},
"audio_url": {
"type": "string",
"description": "Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically."
}
},
"additionalProperties": false
}| target_lufs | number | Override the preset target, e.g. -14 for Spotify. |
| webhook_url | string | Public https URL to POST the result to instead of polling. |
| denoise_strength | number | Noise reduction, 0-1. 0 disables. |
| remove_watermark | boolean | Also remove the Suno/Udio AI fingerprint. Free. |
| restore_dynamics | boolean | Open up a brickwalled source before mastering (pairs with style unlimiter). |
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"style": {
"type": "string",
"description": "Preset key from list_presets, e.g. edm, hiphop, podcast, unlimiter. Default standard."
},
"bitrate": {
"type": "integer",
"description": "MP3: 128/192/256/320; OPUS: 128/192."
},
"dry_run": {
"type": "boolean",
"description": "Do not master: report what this call would cost and what settings would apply. Nothing is charged, the file is not even downloaded."
},
"audio_url": {
"type": "string",
"description": "Public https URL of the audio file (wav/mp3/flac/m4a). A share link to the page works too — Suno/Udio song pages, Google Drive and Dropbox links are resolved to the file automatically."
},
"intensity": {
"type": "number",
"maximum": 1.5,
"minimum": 0.5,
"description": "Multiplier on the preset's multiband compression: 1.0 as designed, 0.5 gentler, 1.5 denser. Values outside 0.5-1.5 are clamped."
},
"out_format": {
"enum": [
"wav",
"wav24",
"mp3",
"flac",
"opus",
"aac"
],
"type": "string"
},
"dither_type": {
"enum": [
"tpdf",
"ns_e",
"ns_itu"
],
"type": "string",
"description": "Dither for 16-bit WAV output: tpdf (default), ns_e or ns_itu (noise-shaped)."
},
"target_lufs": {
"type": "number",
"description": "Override the preset target, e.g. -14 for Spotify."
},
"webhook_url": {
"type": "string",
"description": "Public https URL to POST the result to instead of polling."
},
"denoise_strength": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Noise reduction, 0-1. 0 disables."
},
"remove_watermark": {
"type": "boolean",
"description": "Also remove the Suno/Udio AI fingerprint. Free."
},
"restore_dynamics": {
"type": "boolean",
"description": "Open up a brickwalled source before mastering (pairs with style unlimiter)."
}
},
"additionalProperties": false
}