MCP Server

Magic Master — Audio Mastering

pro.magicmaster/mastering
Design & Creative Media & Content Public & reachable MCP 2026-07-28

What this MCP does

Analyzes, previews, cleans, and masters audio tracks, including loudness normalization and AI-generated audio fingerprint removal.

analyze_track
Analyze a track
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.
Read only Open world
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'lufs': {'type': ['number', 'null']}, 'channels': {'type': ['integer', 'null']}, 'peak_dbfs': {'type': ['number', 'null']}, 'sample_rate': {'type': ['integer', 'null']}, 'duration_sec': {'type': ['number', 'null']}, 'true_peak_db': {'type': ['number', 'null'], 'description': 'null in the fast pass; see get_job for the measured value'}, 'genre_suggestion': {}, 'stereo_correlation': {'type': ['number', 'null']}}}
batch_master
Master an album or a batch
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.
Open world
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'jobs': {'type': 'array'}, 'tracks': {'type': 'array', 'description': 'job_id, filename, source_url, target_lufs and album_lufs_offset as APPLIED by the server'}, 'dry_run': {'type': 'boolean'}, 'job_ids': {'type': 'array'}, 'poll_with': {'type': 'string'}, 'would_charge': {'type': 'string'}, 'enough_capacity': {'type': 'boolean'}, 'nothing_was_charged': {'type': 'boolean'}, 'album_mode_requested': {'type': 'boolean'}, 'album_offsets_applied': {'type': 'boolean'}}}
check_limits
Check quota and balance
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.
Read only
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'free': {'type': 'object'}, 'max_upload_mb': {'type': 'integer'}, 'can_master_now': {'type': 'boolean'}, 'tokens_balance': {'type': 'integer'}, 'max_upload_mb_via_mcp': {'type': 'integer', 'description': 'effective per-file ceiling for THIS channel'}, 'result_retention_days': {'type': 'integer'}, 'max_batch_total_mb_via_mcp': {'type': 'integer'}}}
clean_ai_trace
Remove Suno/Udio AI fingerprint
Strip the AI generator fingerprint without mastering; loudness and tone stay as they are. Free. Returns a job id — poll get_job.
Open world
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'job_id': {'type': 'string'}}}
create_topup_link
Create a top-up link
Prepare a token purchase for the human principal. The agent CANNOT complete the payment: card and Telegram Stars both need the human. Returns the checkout link to hand over, then poll check_limits.
Read only Open world
Input schema
{'type': 'object', 'properties': {'pack_id': {'type': 'string', 'description': 'Pack id from get_pricing, e.g. tokens_10.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'pack': {}, 'packages': {'type': 'array'}, 'next_step': {'type': 'string'}, 'checkout_url': {'type': 'string'}, 'stars_deeplink': {'type': 'string'}, 'agent_can_complete': {'type': 'boolean'}}}
get_job
Get job status
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.
Read only
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'lra': {'type': ['number', 'null']}, 'error': {'type': ['string', 'null']}, 'status': {'type': 'string'}, 'progress': {'type': ['integer', 'null']}, 'after_lufs': {'type': ['number', 'null']}, 'result_url': {'type': 'string'}, 'download_url': {'type': 'string', 'description': 'signed, ~1 h, works without credentials'}, 'true_peak_db': {'type': ['number', 'null']}, 'platform_ready': {}, 'download_url_expires_in': {'type': 'integer'}}}
get_pricing
Get live pricing
Live token packs and payment methods. Never quote prices from memory. Free.
Read only
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['packages'], 'properties': {'model': {'type': 'string'}, 'packages': {'type': 'array'}, 'stars_bot': {'type': 'string'}, 'wallet_url': {'type': 'string'}}}
get_service_info
Service info
What Magic Master does, what is free, what costs a token, and where the rules live. Call once at the start of a session.
Read only
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'description': 'Service manifest: endpoints, presets, live prices, limits, policies.'}
list_presets
List mastering presets
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.
Read only
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['presets'], 'properties': {'count': {'type': 'integer'}, 'presets': {'type': 'array', 'items': {'type': 'object', 'properties': {'key': {'type': 'string'}, 'target_lufs': {'type': 'number'}}}}}}
master_track
Master a track
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.
Open world
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'job_id': {'type': 'string'}, 'dry_run': {'type': 'boolean'}, 'poll_with': {'type': 'string'}, 'would_charge': {'type': 'string'}, 'tokens_balance': {'type': 'integer'}, 'nothing_was_charged': {'type': 'boolean'}}}
preview_styles
Compare presets on 24 seconds
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.
Open world
Input schema
{'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}
Output schema
{'type': 'object', 'properties': {'job_id': {'type': 'string'}, 'styles': {'type': 'array'}, 'poll_with': {'type': 'string'}, 'preview_url_template': {'type': 'string'}}}
Changed
master_track
Sept. 23, 2026, 2:50 a.m.
Changed
preview_styles
Sept. 23, 2026, 2:50 a.m.
Changed
clean_ai_trace
Sept. 23, 2026, 2:50 a.m.
Changed
analyze_track
Sept. 23, 2026, 2:50 a.m.
Added
create_topup_link
Sept. 17, 2026, 12:54 p.m.
Added
get_job
Sept. 17, 2026, 12:54 p.m.
Added
batch_master
Sept. 17, 2026, 12:54 p.m.
Added
master_track
Sept. 17, 2026, 12:54 p.m.
Added
preview_styles
Sept. 17, 2026, 12:54 p.m.
Added
clean_ai_trace
Sept. 17, 2026, 12:54 p.m.
Added
analyze_track
Sept. 17, 2026, 12:54 p.m.
Added
check_limits
Sept. 17, 2026, 12:54 p.m.
Added
get_pricing
Sept. 17, 2026, 12:54 p.m.
Added
list_presets
Sept. 17, 2026, 12:54 p.m.
Added
get_service_info
Sept. 17, 2026, 12:54 p.m.