Nemotron Transcribe MCP
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., "@Nemotron Transcribe MCPtranscribe /data/audio/team-meeting.m4a and translate it to English"
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.
Nemotron Transcribe MCP
Local MCP server that transcribes an audio file by calling an already-running Nemotron 3.5 Transcribe endpoint. It does not download weights or start the model.
Long files are cut at a pause, about every 55 minutes, and sent one piece at a time. Pass speakers from 2 to 8 to repeat 10 seconds at each join. Speaker numbers start over on every piece.
This server writes a transcript. A YouTube link is saved first, then handled like a file. For timed subtitles (SRT or VTT), use another model. This checkpoint returns no word times.
Languages
The server hears the language in the file.
From | To |
Supported language | Same supported language |
Non-English Supported | English |
English | Non-English Supported |
Leading
State of the art, or close to it, out of the box.
Language | Flag | ISO 639-1 | Translate |
Czech | 🇨🇿 |
| Yes |
Dutch | 🇳🇱 |
| Yes |
English | 🇺🇸 |
| Yes |
French | 🇫🇷 |
| Yes |
German | 🇩🇪 |
| Yes |
Hindi | 🇮🇳 |
| Yes |
Italian | 🇮🇹 |
| Yes |
Korean | 🇰🇷 |
| Yes |
Polish | 🇵🇱 |
| Yes |
Portuguese | 🇧🇷 |
| Yes |
Russian | 🇷🇺 |
| Yes |
Slovak | 🇸🇰 |
| Yes |
Spanish | 🇪🇸 |
| Yes |
Production-ready
Production-level quality.
Language | Flag | ISO 639-1 | Translate |
Bulgarian | 🇧🇬 |
| Yes |
Croatian | ðŸ‡ðŸ‡· |
| Yes |
Danish | 🇩🇰 |
| Yes |
Estonian | 🇪🇪 |
| Yes |
Finnish | 🇫🇮 |
| Yes |
Hungarian | ðŸ‡ðŸ‡º |
| Yes |
Japanese | 🇯🇵 |
| Yes |
Latvian | 🇱🇻 |
| Yes |
Lithuanian | 🇱🇹 |
| Yes |
Romanian | 🇷🇴 |
| Yes |
Slovenian | 🇸🇮 |
| Yes |
Swedish | 🇸🇪 |
| Yes |
Thai | 🇹🇠|
| Yes |
Turkish | 🇹🇷 |
| No |
Ukrainian | 🇺🇦 |
| Yes |
Supported
Supported, and fine-tuning can help.
Language | Flag | ISO 639-1 | Translate |
Arabic | 🇪🇬 |
| Yes |
Bengali | 🇧🇩 |
| No |
Chinese | 🇨🇳 |
| Yes |
Greek | 🇬🇷 |
| Yes |
Hebrew | 🇮🇱 |
| Yes |
Indonesian | 🇮🇩 |
| No |
Maltese | 🇲🇹 |
| Yes |
Marathi | 🇮🇳 |
| No |
Norwegian | 🇳🇴 |
| No |
Tagalog | 🇵🇠|
| No |
Tamil | 🇮🇳 |
| No |
Telugu | 🇮🇳 |
| No |
Vietnamese | 🇻🇳 |
| No |
Related MCP server: youtube-transcriber-mcp
Requirements
An already-running Nemotron 3.5 Transcribe endpoint (this repo does not start the model)
Docker Compose or Python 3.12+, uv, and
ffmpeg/ffprobeon yourPATH
Settings live in .env (copy from .env.example). Names and defaults are documented there once. Compose and the app only read those names.
Docker (home)
One path: Compose starts the MCP; Hermes connects over HTTP.
Copy settings and edit them:
cp .env.example .envSet at least:
NEMOTRON_BASE_URL=http://host.docker.internal:8010/v1(model on the same machine; use127.0.0.1only without Docker)MCP_AUTH_TOKEN=to a long random string
.env is not copied into the image. Compose reads it on the host and injects the values when the container starts (env_file in compose.yaml).
Start / stop:
docker compose up -d --build
docker compose logs -f mcp
docker compose downImage name: nemo-transcribe-mcp:0.1.0. MCP listens inside the container on port 8080 and is published on the host as 127.0.0.1:8083 by default (MCP_HOST_PORT).
Hermes (
~/.hermes/config.yaml):
mcp_servers:
nemo-transcribe:
url: "http://127.0.0.1:8083/mcp"
headers:
Authorization: "Bearer YOUR_TOKEN_FROM_ENV"
timeout: 300
connect_timeout: 60Audio: put files in
./audioon the host. Ask Hermes to use/data/audio/your-file.m4a(that is the path inside the container).If the MCP cannot reach the model: inside Docker,
localhostmeans the container. Preferhost.docker.internalfor a model on the same host.
Check the process is up: curl -s http://127.0.0.1:8083/healthz
Without Docker
uv sync
cp .env.example .envEdit .env and set NEMOTRON_BASE_URL (for a local process, http://127.0.0.1:8010/v1 is fine). Leave MCP_TRANSPORT=stdio.
uv run nemo-transcribe-mcpLog lines go to stderr. Default format is one JSON object per line. Set NEMOTRON_LOG_FORMAT=text for a plain line in a terminal.
Cursor can launch it from this directory:
{
"mcpServers": {
"nemo-transcribe": {
"command": "uv",
"args": ["run", "nemo-transcribe-mcp"]
}
}
}Ask the client to transcribe a file path. The tool is transcribe.
Tests and lint
uv run pytest
uv run ruff check .
uv run ruff format --check .
npm install
npm run check:yamlRuff covers Python. Prettier covers YAML (compose.yaml, prompts.yaml, languages.yaml).
The same checks run in GitHub Actions on every pull request (workflow: .github/workflows/ci.yml).
The tests do not call a model. They do need ffmpeg and ffprobe.
Available Tools
9 toolsask_about_audioA
Answer a question about one audio file or one YouTube link. The model was checked on English speech. A recording longer than the reasoning budget is refused. Pass start and end, in seconds, for the part you want. show_reasoning includes the model's reasoning before the answer. Waits wait_seconds (default 25). If it is still running, returns a job id. Tell the user, then call get_job_status. Do not poll in a loop.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| path | Yes | ||
| start | No | ||
| question | Yes | ||
| wait_seconds | No | ||
| show_reasoning | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden and does well: English-speech-only validation, refusal of recordings longer than the reasoning budget, a 25s default wait, and async job-id return with an anti-polling instruction. It omits what a failure/refusal looks like to the caller and whether the answer text is the sole return value.
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?
Seven short sentences with the purpose front-loaded, then operand details, then the async flow instruction. Every sentence carries operational information; nothing is padding.
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 6 params, no annotations and no output schema, the description still covers the input semantics and the async continuation protocol via get_job_status. The main residual gap is the response shape and refusal/error surface, which an agent must discover at runtime.
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 0%, so the description must compensate and largely does: start/end are 'in seconds, for the part you want', wait_seconds defaults to 25, show_reasoning prepends model reasoning, and path is implicitly clarified as file or YouTube link. The accepted path format and question wording are left to inference.
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: answering a question about 'one audio file or one YouTube link', with an explicit cardinality limit. It is clearly distinct from transcribe/translate/identify_language siblings, which produce transcripts or labels rather than answers.
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 concrete routing: pass start/end for a sub-segment, and on timeout 'call get_job_status' with the explicit rule 'Do not poll in a loop'. It does not say when to prefer transcribe instead of asking a question, so it stops short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_jobA
Stop a transcription job. Pieces that already finished stay readable through get_job_result.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one non-obvious trait: completed pieces survive cancellation and remain readable. It omits other behaviors an agent needs — whether cancellation is idempotent, what happens to in-progress segments, whether it errors on an unknown or finished job_id, and what the call returns.
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 sentences, no filler, with the primary action stated first and the consequential side effect second. Nothing could be removed without losing information.
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?
No output schema and no annotations mean the description is the only source of behavioral detail; it covers the headline effect and partial-result retention but leaves the required job_id undocumented and says nothing about return value or failure modes. Adequate to call correctly in the happy path, incomplete around the edges.
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 single parameter job_id has 0% schema description coverage, so the description must compensate, but it never mentions job_id, its expected format, or where to obtain it (presumably list_jobs or get_job_status). That is the main gap in an otherwise terse definition.
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?
"Stop a transcription job" gives a specific verb and resource, and the second sentence distinguishes this from a pure abort by naming get_job_result as the path to already-finished output. An agent can pick this over get_job_status or list_jobs without opening a 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?
Usage context is clear: use this to halt an in-flight transcription, and read partial output via get_job_result afterwards. It lacks an explicit exclusion (e.g. behavior when the job already completed or is already cancelled), so it falls short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_resultB
The words from a finished job. offset and limit return a slice so a long transcript does not flood the chat. Only text is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| format | No | text | |
| job_id | Yes | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does add real context: only text is stored (no timestamps or speaker labels), and offset/limit exist to avoid flooding the chat. Missing behaviors are the important ones though — whether the response includes job status, what a not-yet-finished job returns, and what the format parameter actually changes.
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 what is returned, then pagination rationale, then the storage constraint. No filler; the only weakness is that the last sentence reads as an afterthought rather than being integrated.
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 four-parameter read tool with no output schema and no annotations, the description covers return content and pagination adequately. The unexplained format parameter and undefined failure/empty-result behavior leave the definition short of what an agent needs to call it reliably in edge cases.
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 0%, so the description must document parameters. It explains offset and limit as a pagination slice, which is genuinely helpful, but job_id is never mentioned and format (default "text", with no declared enum) is left entirely unexplained — an agent cannot tell what values it accepts or what non-text output means.
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 words from a finished job" conveys that this retrieves transcript text, and the sibling set (get_job_status, list_jobs, transcribe) makes the retrieve-vs-poll distinction inferable. But it never states a verb or names the resource outright, so the agent has to reconstruct purpose from context rather than read it.
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?
"from a finished job" implies the prerequisite that the job must be complete, which is useful usage signal. It does not explicitly say to check get_job_status first, nor what to do if the job is still running or failed, and it names no alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusA
How far a transcription job has got. Pass wait_seconds from 0 to 45 to wait for it to finish. Tell the user the status. Do not poll in a loop.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose real behavior the schema does not: the call can block up to 45 seconds and should not be loop-polled. It says nothing about permission requirements, error/not-found behavior, or what happens if wait_seconds exceeds 45.
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 short sentences, front-loaded with the purpose, then the key parameter constraint, then the agent directive. No filler and nothing buried.
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 two-parameter status check with no output schema and no annotations, the description covers the mechanics of waiting but not the outcome space — it never says what statuses exist or how to recognize a terminal state, which is exactly what the agent needs to decide whether to call get_job_result next.
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 0%, so the description must compensate. It does explain wait_seconds (range 0-45, waits for completion), but job_id — the required parameter — gets no semantics at all, leaving the caller to guess whether it is the handle returned by transcribe.
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?
"How far a transcription job has got" names the resource (transcription job) and the concept queried (progress/status), so the intent is unambiguous. It does not, however, differentiate from close siblings like get_job_result or list_jobs, which an agent must choose between.
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 operating instruction: pass wait_seconds 0-45 to block until the job finishes, and "Do not poll in a loop" — a clear exclusion of a common wrong behavior. It stops short of saying when to prefer this over get_job_result or when a job is terminal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_languageA
Say which language is spoken in one audio file or one YouTube link. Returns one label, such as en_us. Listens to about 10 seconds of speech, skipping a pause at the start. Less reliable for Latvian and Slovenian. Not a transcript.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| label_set | No | fleurs | |
| candidates | No | ||
| clip_seconds | No | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers real behavioral detail: one label returned, roughly 10 seconds of audio sampled, an initial pause is skipped, degraded accuracy for Latvian and Slovenian. It doesn't disclose error/failure behavior or whether the call blocks synchronously versus returning a job handle, which matters given job-status siblings exist.
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 short sentences, each earning its place: purpose, return value, sampling behavior, known weakness, and scope boundary. The most decision-relevant facts (what it returns, what it is not) are front-loaded.
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 no output schema and no annotations, the description does cover the return value (a single label) and reliability caveats, which is the core need. However, for a five-parameter tool at 0% schema coverage it leaves the label_set/candidates/wait_seconds behavior unexplained, which is a meaningful gap for correct invocation.
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 0% across five parameters, and the description only indirectly touches two of them — 'audio file or YouTube link' for path and 'about 10 seconds' for clip_seconds. label_set, candidates, and wait_seconds are entirely undocumented in both schema and description, leaving the agent to guess at label taxonomies, candidate constraints, and blocking timeout semantics.
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?
Uses a specific verb-plus-resource framing ('Say which language is spoken') and pins the input domain to 'one audio file or one YouTube link.' The closing 'Not a transcript' explicitly separates it from the transcribe sibling, so an agent can route correctly 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?
The 'Not a transcript' line gives a clear negative condition against transcribe, and the label example (en_us) shows the expected usage shape. It stops short of naming alternatives such as list_languages for supported labels or saying when to prefer transcribe/translate instead, so it's clear context rather than a full when/when-not routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsB
Jobs on this machine, newest first. Use this to recover a job id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does disclose ordering (newest first) and machine-local scope — genuine traits not derivable from the schema. It omits whether results are paginated, what a job entry looks like, and how many jobs typically exist, so the safety/behavior profile is only partially covered.
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 with zero filler, and the resource plus ordering constraint is front-loaded before the usage hint. Nothing here could be cut without losing information.
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?
No annotations, no output schema, and 0% parameter coverage leave the agent without the essentials for correct invocation: accepted state values, pagination behavior, and the shape of a returned job record. For a filterable list tool this leaves too much to guesswork.
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 0% and neither of the two parameters (limit, state) is mentioned in the description. An agent cannot tell from this text what values 'state' accepts or that 'limit' defaults to 20, so the description does not compensate for the schema gap.
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 the resource (jobs), the scope (on this machine) and the ordering (newest first), and pairs that with a concrete purpose: recovering a job id. That distinguishes it reasonably well from get_job_status and get_job_result, though it never names those siblings explicitly.
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?
"Use this to recover a job id" gives one clear when-to-use case, which is more than most list tools offer. There is no when-not guidance and no mention of the alternative ways to reach a job (get_job_status, get_job_result), so the routing signal is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_languagesA
Languages this model can handle, and how strong that support is. level is leading, production_ready, or supported. translate is yes when that language can be one side of an English translation. identify is yes, low, or no. Latvian and Slovenian are low. Norwegian is listed, but the card only scored transcription. It did not mark it supported.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does add useful behavioral detail: it defines level, translate, and identify value semantics and notes data quirks like Latvian/Slovenian and Norwegian. It does not explicitly state read-only/non-destructive behavior, but the listing purpose is clear.
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?
The description is reasonably compact and front-loads the main purpose before field definitions. The final Norwegian caveat is a bit awkward and uses the undefined term 'card', but overall it avoids bloat.
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 listing tool with no output schema, the description adequately explains the key returned fields and their value meanings. It could more explicitly describe the overall return shape, but the critical semantics are present.
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 has zero parameters, which sets the baseline at 4. There are no parameter semantics to explain, and the schema is empty.
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 clearly identifies the resource as the model's supported languages and describes the support-strength fields. It does not explicitly route against siblings like identify_language or translate, but the purpose is still clear.
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?
The description explains the returned fields but gives no explicit guidance on when to call this tool versus alternatives such as identify_language, translate, or transcribe. Usage is only loosely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribeA
Speech to text for one audio file or one YouTube link. style verbatim, the default, keeps every word, including fillers. style clean drops fillers and accidental repetitions and keeps the other words. style technical keeps emails, URLs, file paths, commands, and IDs exactly. Do not pass speakers with style technical. style raw_dictation drops punctuation and writes numbers as spoken words. A long file is cut at a pause and sent one piece at a time. Pass speakers from 2 to 8 to repeat 10 seconds at each join. Speaker numbers are matched across those joins. Waits wait_seconds (default 25). If it is still running, returns a job id. Tell the user, then call get_job_status. Do not poll in a loop.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| style | No | verbatim | |
| speakers | No | ||
| wait_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses chunking behavior for long files ('cut at a pause and sent one piece at a time'), the 10-second overlap at joins with speaker number reconciliation, the wait_seconds default of 25, and that an unfinished job returns an id. The anti-polling instruction is exactly the kind of behavioral constraint an agent cannot infer elsewhere.
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?
Content is front-loaded and nearly every sentence carries distinct information, but the style definitions are delivered in a dense, telegraphic run of short sentences ('style clean drops fillers...', 'style raw_dictation drops punctuation...') that could be grouped more legibly. Slightly terse phrasing ('Waits wait_seconds (default 25)') costs a bit of parsing effort.
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 tool with no annotations and no output schema, the description covers the async job flow and the transcription-quality knobs thoroughly. It never says what a completed transcript result looks like (text field, timestamps, segments) or which audio formats are accepted, which is the main remaining gap for an agent planning the call.
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 0% and the schema has no enum for style, yet the description enumerates and explains all four style values (verbatim, clean, technical, raw_dictation) and their output differences. It also constrains speakers to 2-8, forbids it with style technical, and explains wait_seconds semantics, leaving only the trivial path parameter 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?
Opens with a specific verb+resource ('Speech to text for one audio file or one YouTube link'), including the key scope limit of one input. It implicitly separates itself from siblings like translate and ask_about_audio, but never names them, so the differentiation is inferential rather than 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 strong operational guidance: which style to choose, that speakers must not be combined with style technical, that speakers must be 2-8, and explicitly what to do when a job id is returned ('Tell the user, then call get_job_status. Do not poll in a loop'). It does not explicitly say when to prefer translate or ask_about_audio instead, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translateA
Write the speech in one audio file, or one YouTube link, in another language. source_language is the language spoken in the file, such as Polish or pl. target_language is the language the words should be written in, such as English or en. Pass both when you know them. A language passed here overrides NEMOTRON_SOURCE_LANGUAGE and NEMOTRON_TARGET_LANGUAGE. If source_language is empty, the language heard in the file overrides NEMOTRON_SOURCE_LANGUAGE. Leave target_language empty to use NEMOTRON_TARGET_LANGUAGE. One of the two languages must be English. A long file is cut at a pause and sent one piece at a time. Waits wait_seconds (default 25). If it is still running, returns a job id. Tell the user, then call get_job_status. Do not poll in a loop.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| wait_seconds | No | ||
| source_language | No | ||
| target_language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: environment-variable precedence, the English-language constraint, chunking of long files at pauses, the wait_seconds default, and the job-id fallback with a directive to inform the user and switch to get_job_status. That is unusually complete behavioral disclosure for an unannotated tool.
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?
It is front-loaded with the core action and then the language rules, and nearly every sentence carries operational information. There is some redundancy between the source_language definition and the later override sentence, which keeps it from a 5.
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 no output schema, the description still explains the return behavior (result vs. job id after wait_seconds) and the correct next step. Combined with chunking and language-rule notes, an agent has everything needed to invoke it correctly.
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 0%, so the description must compensate, and it explains source_language and target_language with examples (Polish/pl, English/en), defaults, and precedence rules. path is only implied (an audio file or a YouTube link) without stating accepted formats or whether it is a local path or URL, leaving one gap.
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?
"Write the speech in one audio file, or one YouTube link, in another language" states a specific verb (write speech) and resource (audio file / YouTube link) clearly enough to distinguish it from transcribe. It doesn't explicitly name the sibling it differs from, so it stops short of a 5.
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?
It explicitly says when to pass source_language/target_language, when to leave them empty (falling back to NEMOTRON_* env vars), the constraint that one language must be English, and names the follow-up tool get_job_status with an explicit "do not poll in a loop" exclusion.
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
ask_about_audio - First observed
cancel_job - First observed
get_job_result - First observed
get_job_status - First observed
identify_language - First observed
list_jobs - First observed
list_languages - First observed
transcribe - First observed
translate
TDQS
Scored across 9 tools
Each tool has a clearly distinct action: transcribe, translate, ask_about_audio, identify_language, and list_languages operate on audio but produce different outputs, while get_job_result, get_job_status, list_jobs, and cancel_job cover distinct job-management roles. The descriptions make the boundaries explicit, so an agent should not confuse them.
All names use snake_case and start with a verb, with get_job_result, get_job_status, list_languages, list_jobs, cancel_job, ask_about_audio, and identify_language following a verb_noun pattern. transcribe and translate are bare verbs rather than verb_noun, a minor inconsistency.
Nine tools is a well-scoped set for transcription, translation, audio QA, language identification, and job management. Each tool has a clear role and none feels redundant.
The surface covers the core lifecycle: submit jobs (transcribe/translate), inspect status, retrieve results, list/cancel jobs, and query language support. Minor gaps include no job deletion or audio metadata tool, but these are not blocking.
Maintenance
Related MCP Connectors
Transcribe audio and video to text, SRT or VTT. Summaries, translation. Optional OAuth sign-in.
Whisper speech to text for podcast, audio and video URLs, 90+ languages, timestamped output.
Transcribe audio & video: diarization, timed SRT/VTT, podcasts, paste-a-link, whole-feed batch.
Transcribe audio and video into speaker-labelled transcripts, subtitles, clips, and cited Q&A.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables high-quality transcription and subtitle generation from local media files or URLs using Faster Whisper on local hardware. It supports automatic language detection and integration with MCP clients for seamless speech-to-text workflows.3-
- AlicenseNot gradedqualityDmaintenanceEnables intelligent transcription of YouTube videos with automatic optimization for any video length, using local OpenAI Whisper processing and speaker diarization.-
- AlicenseNot gradedqualityAmaintenanceEnables transcription and speaker diarization of audio files, interviews, and YouTube URLs, producing speaker-attributed transcripts with timestamps. Supports multiple backends (local Whisper, OpenAI API) and output formats (txt, vtt, srt, json).Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables local transcription of audio/video files and YouTube URLs, generation of SRT/VTT subtitles, and analysis of speech pacing and audience retention risk using faster-whisper.MIT