Echoteka MCP
OfficialResolves public Dropbox share links to audio files for analysis, cleanup, previewing, and mastering.
Resolves public Google Drive share links to audio files for analysis, cleanup, previewing, and mastering.
Resolves public Suno song page share links to audio files so the assistant can analyze, clean AI artifacts, preview styles, and master those tracks.
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., "@Echoteka MCPanalyze this track and master it for Spotify: https://ex.co/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.
echoteka-mcp: AI audio mastering for your assistant
Echoteka runs a remote Model Context Protocol (MCP) server. Connect it to Claude, Cursor, OpenAI Codex or any MCP client, and the assistant can measure a track's loudness, clean the marks an AI generator leaves in the audio, compare presets by ear and master the track to a streaming target.
Server:
https://echoteka.ai/mcp(streamable HTTP, no key, no account needed)Website and web lab: https://echoteka.ai
MCP page with setup notes: https://echoteka.ai/mcp
Machine-readable description: https://echoteka.ai/mcp.json
Nothing has to be installed for the hosted server. This package is a small stdio bridge for clients that cannot speak HTTP, and it reaches the same server.
Connect
Claude Code
claude mcp add --transport http echoteka https://echoteka.ai/mcpClaude Desktop
Option A, custom connector: open Settings, then Connectors, choose Add custom connector and paste https://echoteka.ai/mcp.
Option B, config file (claude_desktop_config.json), for versions that only accept local servers:
{
"mcpServers": {
"echoteka": {
"command": "npx",
"args": ["-y", "echoteka-mcp"]
}
}
}Restart the app after editing the file.
Cursor
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json inside a project:
{
"mcpServers": {
"echoteka": {
"url": "https://echoteka.ai/mcp"
}
}
}OpenAI Codex
codex mcp add echoteka --url https://echoteka.ai/mcpOr add this to ~/.codex/config.toml:
[mcp_servers.echoteka]
url = "https://echoteka.ai/mcp"Any other stdio client
{
"mcpServers": {
"echoteka": {
"command": "npx",
"args": ["-y", "echoteka-mcp"]
}
}
}Using your account's masters
The anonymous endpoint is enough to try everything. To use the masters of your own Echoteka account, connect to the sign-in endpoint instead. The client opens an Echoteka page in your browser, you sign in and press Allow, and the assistant receives a token limited to mastering. It never sees your password.
Remote clients: use
https://echoteka.ai/mcp/oauthas the URL, for exampleclaude mcp add --transport http echoteka https://echoteka.ai/mcp/oauth.This package: set
ECHOTEKA_MCP_URL=https://echoteka.ai/mcp/oauthin the environment of the process that starts it.
Related MCP server: audio-mastering-mcp
Tools
The live tools/list response of https://echoteka.ai/mcp (checked 14 October 2026) contains nine tools:
Tool | What it does | Cost |
| What Echoteka does, what is free, where the rules are. Call once at the start. | free |
| Mastering presets with their target loudness in LUFS. | free |
| Free masters left today, when they reset, credit balance, upload limit. | free |
| Integrated LUFS, sample peak, duration, sample rate, stereo correlation. No processing. | free |
| Removes marks an AI generator leaves in the audio, such as narrow tones above 15 kHz and seams between generated blocks. Loudness and tone stay as they are. | free, no credit |
| Masters 24 seconds of a track in 2 to 6 presets and returns each loudness and a listen link. | free, 6 per day |
| Masters one track to a preset and target, returns a job id. | free daily master, then credits |
| Masters up to 10 tracks with the same settings. Album mode keeps the loudness balance between tracks. | one free run or a credit per track |
| Status and result of a job: loudness, true peak, loudness range, and a signed download link. | free |
Typical flow: check_limits → analyze_track → clean_ai_trace (optional, for AI-generated tracks) → preview_styles → master_track → poll get_job.
Audio is passed as a public https link. Echoteka fetches the file from the link; the assistant never uploads bytes through the protocol. Share links from Suno song pages, Google Drive and Dropbox are resolved to the file when possible.
Pricing
Analysis, artifact cleanup, previews and job status are free.
One full master per day is free, with no account.
Signing in adds a few welcome masters and a free master per day.
Extra masters use credits. Credits are bought by a person on the website; the server has no payment tool and an assistant cannot pay.
Current details and prices: https://echoteka.ai/pricing.
Honest limits
Cleanup removes artifacts a generator leaves in the audio. It does not change where a track came from. If a platform or distributor asks you to disclose AI use, disclose it.
Mastering is not mixing. It cannot fix a vocal that sits too low or a muddy mix.
Free masters are not stored for long. Download the result when the job is done.
Configuration
Variable | Default | Purpose |
|
| Server the bridge connects to. Use |
The bridge needs Node.js 18 or newer and outbound HTTPS access to echoteka.ai.
Docker
docker build -t echoteka-mcp .
docker run -i --rm echoteka-mcpThe image contains only the bridge. The server itself stays hosted at https://echoteka.ai/mcp.
Privacy and terms
Privacy policy: https://echoteka.ai/privacy
Terms of service: https://echoteka.ai/terms
Refunds: https://echoteka.ai/refund
Support
Email support@echoteka.ai, or open an issue in this repository.
License
MIT. See LICENSE. Copyright (c) 2026 Echoteka.
Available Tools
9 toolsanalyze_trackAnalyze a trackARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_url | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lufs | No | |
| channels | No | |
| peak_dbfs | No | |
| sample_rate | No | |
| duration_sec | No | |
| true_peak_db | No | null in the fast pass; see get_job for the measured value |
| genre_suggestion | No | |
| stereo_correlation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds real value beyond them: no processing, fast/cheap, and critically what is NOT measured (true peak, loudness range) with a pointer to get_job. That negative scoping is genuinely useful behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the measurement scope followed by cost/workflow and the negative note. Every sentence earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and the description covers what is measured, latency/cost, when to invoke, and the true-peak/loudness-range exclusion. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema description coverage is 100% with a detailed audio_url description covering formats and share-link resolution. The description adds nothing about the parameter, so the baseline 3 applies — the schema does all the work here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Measure) and resource (track) and enumerates the exact metrics returned: integrated LUFS, sample peak, duration, sample rate, stereo correlation. The explicit contrast with processing-oriented siblings like master_track ('without processing') lets an agent route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow context — run this before choosing a preset — plus cost/latency signals ('Free, a couple of seconds'). It also diverts the agent for true peak/loudness range to get_job. It does not explicitly name master_track as the alternative step, keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_masterMaster an album or a batchA
Master up to 10 tracks in one call with the same settings. Needs N CREDITS 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). 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 what would be used and the settings before anything is spent.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Preset key from list_presets. | |
| bitrate | No | MP3: 128/192/256/320; OPUS: 128/192. | |
| dry_run | No | Report what would be used and the settings without mastering and without downloading anything. | |
| album_mode | No | Keep relative loudness between tracks. Default true. Set false for unrelated singles. | |
| audio_urls | Yes | Public https URLs, in album order. | |
| out_format | No | ||
| target_lufs | No | Target for the LOUDEST track in album mode. | |
| remove_watermark | No | Also run AI artifact cleanup first. Free. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | No | |
| tracks | No | job_id, filename, source_url, target_lufs and album_lufs_offset as APPLIED by the server |
| dry_run | No | |
| job_ids | No | |
| poll_with | No | |
| would_charge | No | |
| enough_capacity | No | |
| nothing_was_charged | No | |
| album_mode_requested | No | |
| album_offsets_applied | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, destructive=false, openWorld=true. The description adds cost modeling (N credits for N tracks, not one, or N free runs), resource caps (10 tracks, 100 MB/file, 300 MB/call) attributed to server memory, runtime expectations ('takes minutes'), return shape (one job id per track), and the dry_run escape hatch. This is rich behavioral context well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then cost, then the highest-value semantic (album_mode), then limits and workflow. Every sentence carries information, though the batching advice and repeated target_lufs phrasing make it slightly longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations carry the safety profile, yet the description still supplies the polling workflow (get_job per job id), cost, caps, and timing needed to call this batch mutation correctly. Nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so baseline is 3, but the description adds real meaning: album_mode is explained with the relative-leveling behavior ('the loudest hits the target exactly, the others keep their offsets, so a quiet interlude is not inflated'), and credits are tied to audio_urls count. Other params (style, bitrate, out_format) are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Master up to 10 tracks in one call with the same settings.' An agent can distinguish it from the sibling master_track (single) purely from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: batching up to 10 tracks sharing settings, album vs unrelated singles via album_mode, and routes polling to get_job and previewing to dry_run. It never explicitly names master_track as the single-track alternative, so routing between the two is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_limitsCheck quota and balanceARead-only
What this caller may do right now: free master left today and when it resets, credit balance, upload cap, whether advanced modules are available. Call before mastering.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| free | No | |
| max_upload_mb | No | |
| can_master_now | No | |
| tokens_balance | No | |
| max_upload_mb_via_mcp | No | effective per-file ceiling for THIS channel |
| result_retention_days | No | |
| max_batch_total_mb_via_mcp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/destructive/openWorld, so the safety profile is covered. The description adds real behavioral context beyond them: the response is a point-in-time entitlement snapshot ("right now") and includes a reset schedule, which tells the agent the values are time-boxed and may need re-checking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence pair: contents first, then the call-to-action ("Call before mastering"). No filler, no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema documenting the return shape, and annotations covering the safety profile, the description only needs to convey purpose and timing — which it does. It could note rate-limit or caching behavior for a quota check, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The "this caller" phrasing usefully confirms the implicit scoping that no argument is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific scope ("what this caller may do right now") and enumerates exactly what is returned: masters left today and reset time, credit balance, upload cap, and advanced-module availability. This cleanly separates it from siblings like get_service_info (service capabilities) and get_job (job status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call before mastering" gives an explicit pre-condition for use, which is genuinely actionable. It stops short of naming when-not to call or pointing at alternatives, but the trigger condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_ai_traceClean AI generator artifactsA
Remove the marks an AI generator leaves in the audio (narrow tones above 15 kHz, level jumps at block seams, fixed spectral peaks); loudness and tone stay as they are. It does not hide that a track is AI-made - disclose AI use wherever a platform asks. Free, never spends a credit. Returns a job id - poll get_job.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_url | Yes | 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 | No | ||
| sensitivity | No | 0-1, default server-side. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=true; the description adds genuinely new behavior: the no-credit cost model, the guarantee that loudness/tone are untouched, and the asynchronous job-id/polling contract. It does not discuss failure modes or what sensitivity changes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and no filler sentences; each clause (what is removed, what is preserved, cost, follow-up) carries information. The parenthetical artifact list makes the middle dense, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param async job tool with annotations and an output schema, the description covers scope, cost, preservation guarantees, ethical caveat and the polling handoff. Remaining gaps are the undocumented out_format/sensitivity parameters, which the output schema cannot cover.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%: audio_url is well documented and enriched with share-link resolution behavior, but out_format (enum) and sensitivity ('0-1, default server-side') are undocumented. The description adds no parameter-level detail to compensate, so it sits at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('remove the marks an AI generator leaves in the audio') and enumerates exactly what those marks are (narrow tones above 15 kHz, level jumps at block seams, fixed spectral peaks). An agent can distinguish this from analyze_track or master_track without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: it preserves loudness and tone, it does not conceal AI provenance, it never spends a credit, and the result must be polled via get_job. It stops short of explicitly naming when to choose this over a sibling like master_track, so it is context-rich but not fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet job statusARead-only
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. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | 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 _ - |
Output Schema
| Name | Required | Description |
|---|---|---|
| lra | No | |
| error | No | |
| status | No | |
| progress | No | |
| after_lufs | No | |
| result_url | No | |
| download_url | No | signed, ~1 h, works without credentials |
| true_peak_db | No | |
| platform_ready | No | |
| download_url_expires_in | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured context: the download_url is a signed link that works without credentials and expires in about an hour, and the call is free. It does not discuss rate limits or behavior while a job is still running.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary purpose, followed by the preview-specific return shape and the download-link caveat. The trailing 'Free.' is terse but carries real decision-relevant cost information, so no sentence is waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, yet the description still flags the two things an agent would otherwise mis-handle: per-style preview results with listen links, and the signed, credential-free, time-limited download_url. With a fully documented single parameter and annotations covering safety, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single job_id parameter already documents its format, pattern and provenance (master_track, clean_ai_trace, preview_styles, batch_master job_ids). The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (get job status/progress/result metrics) and enumerates the exact metrics returned (after_lufs, true_peak_db, lra, platform_ready). It also scopes which job types it applies to (mastering, cleanup, preview), which cleanly separates it from siblings like check_limits or get_service_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent must infer that this is the polling tool to call after master_track, clean_ai_trace or preview_styles. There is no explicit when-to-use, when-not-to-use, or statement of how long to wait between polls, though the sibling set makes the routing reasonably obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_infoService infoARead-only
What Echoteka does, what is free, what a credit buys, and where the rules live. Call once at the start of a session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it should be called once per session, implying the result is stable and repeated calls are wasteful. Return format is left to the output schema, which exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler. The content scope comes first and the call cadence second, which is the right front-loading for an agent deciding whether to invoke.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details need not be restated. The description covers what the tool provides, when to call it, and its read-only nature via annotations — nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly does not invent parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns — service overview, free tier, credit economics, and where the rules live — which is specific enough that an agent can distinguish it from every sibling (all of which are audio-processing tools). It stops short of a clean verb+resource phrasing, but the content list is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call once at the start of a session" gives explicit timing and frequency guidance, which is exactly the when-to-use information an agent needs for an orientation tool. No alternatives are named, but none are needed since no sibling overlaps with this function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsList mastering presetsARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| presets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: it discloses that the tool is free and that its output is the authoritative source of preset keys. It stops short of anything else notable for a zero-side-effect list tool, which is acceptable here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and payload, then routing guidance, then a one-word cost note. Every clause carries selection-relevant information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what it returns, why to call it instead of neighbours, and when the alternatives are better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so per the baseline a 4 is appropriate. There is no parameter detail the description could add; the fields it mentions (preset keys, LUFS) describe output, which the output schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all mastering presets') plus the payload detail ('target loudness in LUFS'). It explicitly distinguishes itself from preview_styles and get_service_info, so an agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule ('Call this to get the exact preset keys that master_track and batch_master accept') and names both alternatives with the precise condition that selects each (preview_styles for hearing 2-6 on the track, get_service_info for the wider manifest).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
master_trackMaster a trackA
Master one track. Uses 1 CREDIT when the account has a balance; otherwise it runs on the free quota (1 free master a day, without advanced 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. Pass dry_run=true first if you want to see what would be used and the effective settings before anything is spent.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Preset key from list_presets, e.g. edm, hiphop, podcast, unlimiter. Default standard. | |
| bitrate | No | MP3: 128/192/256/320; OPUS: 128/192. | |
| dry_run | No | Do not master: report what this call would use and what settings would apply. Nothing is charged, the file is not even downloaded. | |
| audio_url | Yes | 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 | No | 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 | No | ||
| dither_type | No | Dither for 16-bit WAV output: tpdf (default), ns_e or ns_itu (noise-shaped). | |
| target_lufs | No | Override the preset target, e.g. -14 for Spotify. | |
| webhook_url | No | Public https URL to POST the result to instead of polling. | |
| denoise_strength | No | Noise reduction, 0-1. 0 disables. | |
| remove_watermark | No | Also run AI artifact cleanup first. Free. | |
| restore_dynamics | No | Open up a brickwalled source before mastering (pairs with style unlimiter). |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No | |
| dry_run | No | |
| poll_with | No | |
| would_charge | No | |
| tokens_balance | No | |
| nothing_was_charged | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) by disclosing the credit cost model, the free-quota fallback (1 free master/day without advanced modules), the 100 MB server-side fetch ceiling, and the asynchronous nature (job id returned, 20-60 s typical, up to 10 min with restoration). These are exactly the behavioral facts an agent needs before spending money.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences with no filler, front-loaded on purpose and then cost, then the async/polling contract, then the size limit, then the dry_run recommendation. Every sentence carries information; the ordering is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, paid, asynchronous tool with an output schema, the description covers the essentials an agent needs: billing behavior, quota fallback, source fetching and size cap, and the polling/return contract. The output schema carries the return shape, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 92%, so the schema already documents nearly every parameter, including dry_run, intensity clamping, bitrate sets, and audio_url resolution. The description restates dry_run's no-charge behavior and adds the 100 MB ceiling, but contributes little parameter meaning the schema does not already carry. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Master one track') and immediately scopes it to a single track, which cleanly separates it from the batch_master sibling. The first sentence is enough for an agent to identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear workflow guidance: pass dry_run=true first to preview cost and settings, poll get_job after submitting, or supply webhook_url instead. It names the get_job sibling explicitly. It stops short of saying when to prefer batch_master or preview_styles over this tool, so it is clear context rather than a full alternative matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_stylesCompare presets on 24 secondsA
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 spending a credit to 'try' one.
| Name | Required | Description | Default |
|---|---|---|---|
| styles | No | Preset keys from list_presets. Default: edm, pop, rnb, standard. | |
| audio_url | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No | |
| styles | No | |
| poll_with | No | |
| preview_url_template | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the description carries real added weight: it discloses cost (FREE), a rate limit (6 per day), and what the preview actually renders (middle 24 s across 2-6 presets). It does not explain whether the call is synchronous or returns a job to poll, which is a gap given the presence of a get_job sibling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with the cost/quota parenthetical and the anti-pattern guidance packed in without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers cost, quota, scope and selection guidance. The only notable omission is the async/job semantics of the call, which matters for a tool family that includes get_job.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are already documented in the schema, including the preset default and the accepted URL forms. The description's '2-6 presets' merely restates the minItems/maxItems bounds, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (master), a precisely scoped resource (the middle 24 s of the track), a count range (2-6 presets at once), and the outputs (per-preset loudness plus a listen link). An agent can immediately tell this apart from a full-length mastering sibling because the preview window and multi-preset compare are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use rule: 'Use this instead of guessing a preset, and instead of spending a credit to try one,' which implicitly positions it against the paid mastering tools. It stops short of naming master_track/batch_master directly as the alternative, so the routing is clear but slightly inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
analyze_track - First observed
batch_master - First observed
check_limits - First observed
clean_ai_trace - First observed
get_job - First observed
get_service_info - First observed
list_presets - First observed
master_track - First observed
preview_styles
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose, and descriptions explicitly cross-reference near-neighbors (e.g. list_presets vs preview_styles vs get_service_info, analyze_track vs get_job metrics). master_track vs batch_master differ clearly by cardinality, and the info tools (get_service_info/check_limits/list_presets) are cleanly separated by scope. Little risk of misselection.
All nine tools follow a consistent snake_case verb_noun pattern: get_service_info, list_presets, check_limits, analyze_track, master_track, batch_master, clean_ai_trace, preview_styles, get_job. No mixed conventions or casing. batch_master is the only slight variant but stays within the same readable pattern.
Nine tools is well-scoped for an audio mastering service, with no redundant or filler entries. Each tool maps to a distinct step (orient, check limits, list presets, analyze, preview, master single/batch, clean, poll).
The surface covers the full mastering lifecycle: orientation, limits, presets, pre-analysis, preview, single/batch mastering, cleanup, and result retrieval. Minor gaps exist, such as no job cancellation or way to list/enumerate existing jobs (only get_job by id), but core workflows are fully supported.
Maintenance
Related MCP Connectors
Remote MCP server for audio stem separation, denoise, and reverb.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
MCP server for Producer/Riffusion AI music generation
AI-powered image processing via GPU. Remove backgrounds and upscale images (2x/4x) directly from any MCP client. OAuth 2.1 authenticated, returns processed images inline with download links. Free credits on signup at maskr.io.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to mix, master, and analyze audio using the RoEx Tonn API through MCP tools.2MIT
- AlicenseAqualityDmaintenanceAn MCP server that masters audio with a professional signal chain using ffmpeg, enabling loudness analysis, vocal-over-beat mixing, full mastering to target LUFS, and Dolby codec export.414 npmMIT
- 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-
- AlicenseAqualityCmaintenanceEnables AI agents to master audio tracks to target LUFS/True Peak levels, remove Suno/Udio AI fingerprints, and retrieve mastering passports via a hosted MCP server.1128 npm2MIT