Skip to main content
Glama
@jam-jam/convert-mcp

@jam-jam/convert-mcp

by titouannwtt

Master an audio file with a preset

jj_master_audio

Upload a local audio file, choose a mastering preset or inline settings, and render it to a 48 kHz WAV with a selected loudness target.

Instructions

Uploads a local audio file (path, or base64 content) and renders it with a Mastering preset on the server (POST /mastering/jobs): the same engine as the Jam Jam web tool. Pass EXACTLY ONE of preset (a preset id from jj_list_mastering_presets, or builtin:) and settings (inline settings, see jj_create_mastering_preset). The result is a 48 kHz WAV (format wav-pcm16 by default, wav-pcm24, or wav-f32). Asynchronous: by default this returns at once with the job, then follow it with jj_mastering_get_job; pass maxWaitMs to wait, and a render that finishes in time is downloaded in the same call (file). Open to any account (3 renders per ISO week for a free account, 429 quota-exhausted beyond; unlimited for Premium) and needs the mastering:write scope. Limits: a file of at most 200 MB and 10 minutes, one or two channels; one render runs and three wait per account. The render consumes the Mastering render counter (shared with the Jam Jam app), counted at submission; a failed or cancelled render is refunded. Results are kept 24 hours. Only call it when the user asked to master that file.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "jj_master_audio"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathNoAbsolute or relative local path to the audio file. Mutually exclusive with contentBase64.
formatNo"wav-pcm16" (default), "wav-pcm24" (24-bit PCM) or "wav-f32" (32-bit float).
presetNoPreset to apply: the uuid of a saved preset, or builtin:<id> (builtin:balanced, ...). Mutually exclusive with settings.
filenameNoFile name (with extension). Required with contentBase64; defaults to the basename of "path".
settingsNoInline settings (format version 1) instead of a saved preset. Mutually exclusive with preset.
maxWaitMsNoWait up to this long (milliseconds, cap 600000) for the render to finish and download it. Default 0: return at once. Waiting needs a key with mastering:read, otherwise the job is returned at once. The job keeps running if it is exceeded.
contentBase64NoBase64-encoded audio content. Mutually exclusive with path. Requires "filename".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so: async-by-default semantics, quota (3 renders/ISO week, 429 beyond, unlimited for Premium), required mastering:write scope, size/duration/channel limits, one running and three waiting renders, counter shared with the web app and counted at submission with refund on failure, and 24-hour result retention.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and then arranged in a logical order: mode, output, async behavior, access/quota, limits, then the when-not guard. It is dense with parentheticals and long compound sentences, but nearly every clause conveys operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with nested settings objects, no annotations and no output schema, the description supplies everything an agent needs: return shape ("the job", `file` when it finishes in time), the async follow-up path, output format, and the operational constraints that determine success or failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so much of the parameter text (format options, maxWaitMs cap, mutual exclusivity) repeats the schema. What it does add beyond the schema are the cross-tool provenance hints: preset ids come from jj_list_mastering_presets (or builtin:<id>) and inline settings follow jj_create_mastering_preset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb and resource ("Uploads a local audio file ... renders it with a Mastering preset on the server") and names the exact endpoint. It clearly separates itself from siblings by pointing at jj_list_mastering_presets for preset ids and jj_mastering_get_job for polling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the selection rule explicitly ("Pass EXACTLY ONE of preset ... and settings"), tells the agent what to do next when async ("follow it with jj_mastering_get_job") and how to avoid it (pass maxWaitMs), and ends with a when-not guard: "Only call it when the user asked to master that file."

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.