whisper-windows-mcp
whisper-windows-mcp
A Windows-native MCP (Model Context Protocol) server that lets Claude Desktop transcribe audio and video files locally using whisper.cpp — with GPU acceleration, multilingual support, and batch processing. All transcription runs locally — no audio, video, or file paths ever leave your machine.
Why does this exist? The popular
whisper-mcppackage was built for macOS and assumes a Unix environment. It does not work on Windows. This package was written specifically for Windows users who want local AI transcription integrated with Claude Desktop.
What you can do with it
Once installed, you can say things like this directly in Claude Desktop:
"Transcribe C:\Users\Me\Downloads\meeting.mp3"
"Transcribe this folder of recordings and save each as a text file"
"Generate Japanese and English subtitles for this video"
"Start a batch transcription of everything in this folder"
"How long will it take to transcribe these files?"
"Check if GPU acceleration is working"
Related MCP server: Whisper Speech Recognition MCP Server
Requirements
Node.js 18 or later — nodejs.org
whisper.cpp binaries with Vulkan GPU support — see Step 1
A Whisper model file — see Step 2
FFmpeg — required for video files and non-WAV/MP3 audio
Step 1 — Install whisper.cpp binaries
Option A — Pre-built Vulkan release (recommended)
Download whisper-vulkan-win-x64.zip from the releases page.
This is a custom-compiled build with Vulkan GPU acceleration enabled. Works with AMD, NVIDIA, and Intel GPUs — no vendor-specific SDK required.
Extract to C:\whisper\Release\. You should end up with:
C:\whisper\Release\whisper-cli.exe
C:\whisper\Release\ggml-vulkan.dll
C:\whisper\Release\ggml.dll
C:\whisper\Release\ggml-base.dll
C:\whisper\Release\ggml-cpu.dll
C:\whisper\Release\whisper.dllGPU acceleration is automatic — no additional configuration needed.
Option B — Build from source
Requires: Git, CMake, Visual Studio Build Tools 2022+ with "Desktop development with C++", Vulkan SDK from lunarg.com.
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --target whisper-cliCopy the binaries from build\bin\Release\ to C:\whisper\Release\.
Note: The official whisper.cpp Windows releases on GitHub do not include a Vulkan build. You must use the pre-built release above or compile from source with
-DGGML_VULKAN=ON.
Step 2 — Download a Whisper model
Model | Size | Speed | Accuracy | Best for |
| 75 MB | Very fast | Basic | Quick tests |
| 142 MB | Fast | Good | Everyday English |
| 466 MB | Moderate | Better | Important recordings |
| 1.5 GB | Fast on GPU | Very good | Best quality English |
| 1.6 GB | Fast on GPU | Excellent | Recommended for English GPU batch work — ~6x faster than large-v3 with minimal accuracy loss |
| 2.9 GB | Fast on GPU | Excellent | Multilingual, maximum accuracy |
| 514 MB | Fast | Very good | Best CPU-only English option — high accuracy at low memory |
| 547 MB | Fast | Excellent | Best CPU-only multilingual option |
| 1.1 GB | Moderate on CPU | Excellent | Multilingual, CPU-friendly |
Use download_model in Claude Desktop to install any of these directly. For English-only use: large-v3-turbo (GPU) or medium.en-q5_0 (CPU) are the best starting points. For multilingual use: large-v3-turbo or large-v3-turbo-q5_0 (CPU). English-only models (*.en.bin) output [FOREIGN] on non-English audio and cannot be used for other languages.
Step 3 — Install FFmpeg
FFmpeg is required for video files and non-native audio formats.
Install via winget:
winget install ffmpegOr download from ffmpeg.org and add to your PATH.
Verify:
ffmpeg -versionStep 4 — Install this MCP server
npm install -g whisper-windows-mcpStep 5 — Configure Claude Desktop
Open Claude Desktop → Settings → Developer → Edit Config.
Add the whisper entry:
{
"mcpServers": {
"whisper": {
"command": "npx",
"args": ["-y", "whisper-windows-mcp"],
"env": {
"WHISPER_CLI_PATH": "C:\\whisper\\Release\\whisper-cli.exe",
"WHISPER_MODEL": "C:\\whisper\\models\\ggml-medium.en.bin"
}
}
}
}Config file location: C:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json
Use double backslashes in all paths.
Save and fully restart Claude Desktop. You should see whisper listed with a green running badge in Settings → Developer.
Step 6 — Verify your setup
In Claude Desktop, ask:
"Check your whisper config"
Then:
"Check your system hardware"
This confirms your GPU is detected and Vulkan acceleration is active.
Available tools
transcribe_audio
Transcribe a single file. Supports blocking (default) or background mode for long files.
Parameter | Description |
| Absolute path to the file (required) |
| Language code ( |
|
|
| Save transcript as .txt next to the source file |
| Run as detached job — returns a job ID immediately. Use |
| CPU thread override |
| Sampling temperature 0.0–1.0. Default 0.0 (deterministic). Higher values reduce hallucination on noisy audio. |
| Prior context string — improves accuracy for domain-specific vocabulary or speaker names. Example: |
| Re-enable context conditioning between segments. Default false. |
| Beam search width. Higher = more accurate, slower. Default 5. |
| Candidate sequences evaluated. Default 5. |
| GPU device index for multi-GPU systems. Default 0. |
| Parallel processor count. Default 1. |
| One word per timestamped segment. Useful for clip alignment. |
| Max segment length in characters. |
| Stereo speaker diarization — requires stereo audio with speakers on separate channels. |
| Path to Silero VAD model .bin. Strips silence before transcription — reduces hallucinations on noisy files. |
| Start offset in milliseconds. |
| Process duration in milliseconds from offset. |
check_progress
Monitor a background transcription job started with transcribe_audio (background=true).
Returns elapsed time, last processed timestamp, percentage, and the full transcript when complete.
Parameter | Description |
| Job ID returned by |
start_batch
Automated sequential batch transcription of all untranscribed files in a folder. Sorts by duration (shortest first), processes one at a time as background jobs, validates each output.
Parameter | Description |
| Path to folder (required) |
| Language code. Default: |
| CPU thread override |
check_batch_progress
Monitor a running batch. Automatically advances to the next file when the current one finishes. Returns overall progress, current file with timestamp, ETA, and any failed files.
Parameter | Description |
| Batch ID returned by |
transcribe_batch (interactive)
Process files one at a time with a preview and confirmation before each. Useful when you want to review as you go.
Parameter | Description |
| Path to folder (required) |
| Which file to process (1-based). Omit to list files first. |
| Language code. Default: |
| Include subfolders |
generate_subtitles
Generate SRT subtitle files. Supports automatic language detection and English translation output.
Parameter | Description |
| Path to file (required) |
| Language code or |
| Also generate an English translation |
| CPU thread override |
When both native and translation are requested, two files are saved next to the source:
filename.ja.srt— original languagefilename.en.srt— English translation
Whisper's built-in translation only translates to English. For other target languages, translate the .srt file contents separately.
analyze_media
Analyze files before committing to transcription. Returns duration, size, codec, and estimated transcription time on CPU and GPU. For folders, shows all files in a sortable table with transcription status.
Parameter | Description |
| Path to a single file or folder (required) |
| For folders: |
check_config
Verify whisper-cli.exe, the model file, and FFmpeg are all accessible. Run this first if anything is failing.
list_models
List all Whisper model files installed in your models directory. Shows filename, size, whether it is currently active, quantization status, and recommended use case. No network calls — reads local filesystem only.
download_model
Download a Whisper model directly from Hugging Face into your models directory. Accepts a model name (e.g. large-v3-turbo, medium.en-q5_0) and handles the download automatically. Only downloads from trusted Hugging Face namespaces. After downloading, use switch_model to activate it.
Parameter | Description |
| Model name to download, e.g. |
switch_model
Switch the active Whisper model for the current session without restarting Claude Desktop. Change is session-scoped — does not persist after restart. To make permanent, update WHISPER_MODEL in your config.
Parameter | Description |
| Model filename (e.g. |
check_system
Detect GPU hardware and verify Vulkan acceleration is available. Reports GPU name, VRAM, whether ggml-vulkan.dll is present, and recommends the best model size for your hardware.
Supported formats
Type | Formats |
Native (no conversion) |
|
Video (auto-converted via FFmpeg) |
|
Audio (auto-converted via FFmpeg) |
|
GPU acceleration
The pre-built Vulkan release enables GPU acceleration automatically. Tested on AMD Radeon RX Vega 56 (GCN 5th gen). Any GPU with Vulkan 1.0+ support should work, including NVIDIA and Intel Arc.
Performance comparison (medium.en model, ~5 minute audio file):
Hardware | Time |
CPU only (Ryzen 7 2700x, 8 threads) | 8–12 minutes |
GPU (Vega 56 via Vulkan) | 20–40 seconds |
GPU utilization during transcription is typically 15–20%, dropping back to idle between files. CPU stays around 15%.
Multilingual support
Whisper can auto-detect the spoken language and transcribe in that language. The built-in translation model translates to English only.
For best multilingual accuracy, use the large-v3 model. English-specific models (*.en.bin) cannot detect or transcribe other languages.
Example — foreign language video with subtitles:
Ask Claude to generate subtitles with
language=autoandtranslate_to_english=trueWhisper detects the language and generates a native-language SRT
A second pass generates an English translation SRT
Load either file in VLC via Subtitle → Add Subtitle File
Designed for free-tier users
This tool is built to minimize Claude API interactions. The entire transcription workflow — scan, analyze, queue, run, validate — is designed to require as few Claude interactions as possible. Heavy lifting is done locally on your machine.
Optional environment variables
Variable | Description |
| Path to whisper-cli.exe (required) |
| Path to model .bin file (required) |
| CPU thread count override |
| Path to ffmpeg if not in system PATH |
| Planned. When set to |
Troubleshooting
See TROUBLESHOOTING.md for detailed solutions. See PRIVACY.md for compliance guidance if you handle regulated content.
Quick checklist:
Paths in config use double backslashes (
C:\\whisper\\...)whisper-cli.exeexists at the configured pathModel
.binfile exists at the configured pathFFmpeg is installed and in PATH (
ffmpeg -versionworks)Claude Desktop was fully restarted after editing config
Whisper shows running in Settings → Developer
Security and Privacy
whisper-windows-mcp is designed with security as a core principle.
Audio never leaves your machine. No audio or video files, no file paths, and no telemetry are ever transmitted to any server. No cloud APIs are required for core functionality.
Transcript text and the API boundary. When a tool response includes transcript text, that text is processed by Claude's API — it leaves your local machine. For most users (public content, podcasts, streaming recordings) this is expected behavior. If you handle medical, legal, financial, or other regulated recordings, see PRIVACY.md for compliance guidance and configuration options.
A WHISPER_PRIVACY_MODE environment variable is planned that will restrict all tool responses to metadata only (filename, duration, word count) — no transcript text will be returned to Claude. This is the correct configuration for regulated or confidential content.
Input validation. All file paths are validated before use — UNC paths (\\server\share) and directory traversal sequences (..) are rejected. Files over 10 GB are rejected to prevent resource exhaustion.
Transcript injection awareness. Audio files can contain spoken content that, when transcribed, resembles instructions. Claude's built-in defenses handle this, but it is worth knowing that transcript content is treated as data — never as instructions — by the MCP server itself.
Model downloads are restricted. The download_model tool only downloads from two trusted Hugging Face namespaces (ggerganov/whisper.cpp and ggml-org). Arbitrary URLs are rejected. Redirects are validated against an allowlist before following.
Model switching is sandboxed. switch_model only accepts .bin files within the configured models directory. Paths outside that directory are rejected.
No new network dependencies. Model downloads use Node.js built-in https — no external HTTP libraries are added to the package.
License
Non-commercial use: MIT — free for personal, educational, and non-commercial use. See LICENSE.
Commercial use: A separate commercial license is required for any business, professional, or revenue-generating use. See LICENSE-COMMERCIAL.md for terms and contact information.
Contributing
Pull requests welcome. See ROADMAP.md for planned features.
If you've tested GPU acceleration on hardware not listed above, please open an issue with your results — GPU model, VRAM, model size, and observed throughput.
Available Tools
13 toolsanalyze_mediaA
Analyze one or more media files using FFprobe before transcribing. For a single file: returns duration, size, codec, and estimated transcription time on CPU and GPU. For a folder: scans all supported media files and returns a sorted table with the same info for each. Use this to plan batch work, estimate how long transcription will take, or check what's already been transcribed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute Windows path to a single file or a folder. | |
| sort_by | No | For folder scans: sort order. Defaults to duration (shortest first). | duration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains behavior for single files and folders, including the sorted table output. However, it lacks details on supported media formats, error handling, and side effects. No annotations are provided, so the description carries the full burden; more detail on limitations or prerequisites would improve transparency.
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 concise with three sentences, each serving a distinct purpose: stating the tool's function, detailing behavior for single/folder, and suggesting use cases. No extraneous 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?
The description covers single and folder scenarios, use cases, and mentions FFprobe. Given the lack of output schema and annotations, it provides sufficient context for an agent to decide when to use this tool. Missing details like supported formats or accuracy of time estimates are minor gaps.
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 already provides descriptions for both parameters (path and sort_by) with 100% coverage. The description adds context about the path being an absolute Windows path and the sort_by default, but this adds only marginal value beyond 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?
The description clearly states the tool analyzes media files using FFprobe before transcribing, returning specific metadata like duration, size, codec, and estimated transcription times. It distinguishes from sibling tools (e.g., transcribe_audio, check_progress) by focusing on pre-transcription analysis.
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 explicitly says 'Use this to plan batch work, estimate how long transcription will take, or check what's already been transcribed,' providing clear use cases. It does not explicitly state when not to use it, but the context implies it is for planning, not actual transcription.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_batch_progressA
Check the status of a batch started with start_batch. Automatically advances to the next file when the current one finishes. Returns overall progress, current file, failed files, and elapsed time. Call repeatedly until the batch shows as complete.
| Name | Required | Description | Default |
|---|---|---|---|
| batch_id | Yes | Batch ID returned by start_batch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses key behavior: automatic advancement to next file and polling requirement. Lacks details on side effects or permissions.
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 sentences, front-loaded with purpose, no wasted words. Each sentence adds value.
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?
Simple tool with one parameter; description explains returns (progress, current file, failed files, elapsed time) sufficiently for an agent to use it.
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 has 100% coverage with a single parameter described as 'Batch ID returned by start_batch.' Description adds no extra meaning beyond 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?
Description clearly states the verb 'Check' and the resource 'batch progress', distinguishing it from sibling tools like analyze_media or check_config.
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?
Explicitly instructs to call repeatedly until complete and describes automatic advancement, but does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_configA
Verify whisper-cli.exe, model, and FFmpeg are all available. Run this first if anything fails.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the components checked but omits details on error behavior or return format. The check is likely non-destructive, but not explicitly stated.
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 with no redundancy. The first sentence states the action, and the second provides usage guidance. Every word earns its place.
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 parameters and no output schema, the description covers the what and when adequately. Minor omission: no mention of return value or status reporting, but acceptable for this simple check.
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, and description coverage is 100% trivial. The description adds value by listing exactly what is verified, which is essential context beyond the empty 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?
The description clearly states the tool's purpose: verifying the availability of whisper-cli.exe, model, and FFmpeg. It uses a specific verb ('Verify') and resource list, distinguishing it from sibling tools like 'check_system' or 'analyze_media'.
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 explicitly advises to 'Run this first if anything fails,' providing a clear usage context. While it does not enumerate alternatives, the directive is strong and practical for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_progressA
Check the status of a background transcription job started with transcribe_audio (background=true). Returns current progress, elapsed time, last processed timestamp, and the transcript when complete. Call this repeatedly until the job shows as complete or failed. ⚠️ Privacy: transcript text returned on completion is processed by Claude's API. Pass privacy_mode=true to return metadata only for this check, regardless of how the job was started.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job ID returned by transcribe_audio when background=true. | |
| privacy_mode | No | Override privacy mode for this check. true = metadata only. Omit to use the setting from when the job was started. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that transcript text is processed by Claude's API, explains privacy_mode behavior (metadata only), and describes return fields. No annotations present, so description carries full burden; it covers key behavioral aspects well.
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 sentences, front-loaded with purpose, then usage pattern, then privacy warning. No wasted words.
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?
Despite no output schema, description clearly states return fields. Covers polling pattern, privacy concerns, and parameter usage. Complete for a simple polling tool.
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 has 100% description coverage, but description adds value by linking job_id to transcribe_audio, explaining privacy_mode overrides, and detailing its effect (metadata only).
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 states the tool checks the status of a background transcription job, lists specific return fields (progress, elapsed time, last processed timestamp, transcript), and implicitly distinguishes from siblings that check other things like batch progress or system config.
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?
Explicitly instructs to call repeatedly until complete or failed, and explains privacy_mode usage. Does not explicitly contrast with alternatives like check_batch_progress, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_systemA
Detect GPU hardware and verify Vulkan acceleration is available. Reports GPU name, VRAM, whether the Vulkan binary is installed, and recommends the best Whisper model for your hardware.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It describes a non-destructive detection/reporting action, but does not explicitly state it is read-only or guarantee no side effects. The implication is safe, but not fully transparent.
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 one sentence that front-loads the purpose ('Detect GPU hardware and verify Vulkan acceleration is available') and then lists specific outputs. Every phrase adds value with no redundancy.
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?
Given no output schema, the description adequately explains what the tool returns (GPU name, VRAM, Vulkan binary status, recommended Whisper model). It would benefit from mentioning format or structure, but is sufficient for a zero-parameter check tool.
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?
There are zero parameters, so the description does not need to explain any. The baseline for no parameters is 4, and the description adds no confusion.
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 states it detects GPU hardware and Vulkan acceleration, reports specific details (GPU name, VRAM, Vulkan binary), and recommends a Whisper model. This distinguishes it from all siblings, none of which perform system checks.
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 implies it should be used before other tools that utilize GPU/Whisper, but does not explicitly state when to use it versus alternatives or provide any exclusions. Given no overlapping siblings, the context is clear but lacks guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_modelA
Download a Whisper model from Hugging Face directly into your models directory. Accepts a model name (e.g. large-v3-turbo, medium.en-q5_0) and handles the download automatically. Downloads only from trusted Hugging Face namespaces (ggerganov/whisper.cpp and ggml-org). After downloading, use switch_model to activate it for the current session.
| Name | Required | Description | Default |
|---|---|---|---|
| model_name | Yes | Model name to download, e.g. 'large-v3-turbo', 'medium.en-q5_0'. Use list_models to see what is already installed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses automatic download and trusted namespaces, but fails to mention potential side effects like overwriting existing files, network dependency, or blocking behavior. This is adequate but not exhaustive.
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 concise sentences: purpose, input/behavior, security+follow-up. No unnecessary words. Well front-loaded with the main action.
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?
Given the tool's simplicity (one parameter, no output schema), the description covers the core aspects: what it does, what it takes, restrictions, and next step. Lacks error handling info, but that is acceptable for such a tool.
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%, baseline is 3. The description adds value by specifying that the download is automatic and restricted to trusted namespaces, which goes beyond the schema. The example model names and reference to list_models enhance understanding.
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 states the verb (download), resource (Whisper model from Hugging Face), and destination (models directory). It distinguishes itself from siblings like list_models and switch_model by specifying its role.
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 provides good usage context: it gives examples of model names, mentions filtering to trusted namespaces, and directs to use switch_model afterwards. It implicitly suggests checking list_models first, but does not explicitly state when not to download.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_subtitlesA
Generate subtitle files for an audio or video file using whisper.cpp. Set language='auto' to detect the spoken language automatically. Set translate_to_english=true to also generate an English translation subtitle file. Supports SRT and WebVTT (VTT) output formats. When both native and translation are requested, two files are saved: one in the original language and one English translation. Load SRT in VLC via Subtitle → Add Subtitle File. VTT works in web players and HTML5 video. Supports all standard formats plus .3gp and .ts.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Prior context string for domain-specific vocabulary or speaker names. | |
| best_of | No | Candidate sequences evaluated. Default 5. | |
| diarize | No | Stereo speaker diarization. Requires stereo audio. | |
| threads | No | CPU threads. Defaults to 4 of 8. | |
| language | No | Language code (e.g. ja, es, fr, de) or 'auto' to detect automatically. Defaults to en. | en |
| beam_size | No | Beam search width. Higher = more accurate, slower. Default 5. | |
| file_path | Yes | Absolute Windows path to the file. | |
| vad_model | No | Path to Silero VAD model .bin. Strips silence before transcription. | |
| background | No | Run as a detached background job — recommended for files over 10 minutes. Returns a job ID to use with check_progress. translate_to_english is not available in background mode. | |
| gpu_device | No | GPU/Vulkan device index for multi-GPU systems. Overrides the WHISPER_GPU_DEVICE env default. Check whisper-cli's startup log for the index that lists your target card. | |
| temperature | No | Sampling temperature 0.0–1.0. Default 0.0. | |
| tinydiarize | No | Mono speaker-turn detection (TinyDiarize). Requires a tdrz model (small.en-tdrz) activated via switch_model. | |
| output_format | No | srt = SubRip subtitle (default, widest compatibility), vtt = WebVTT (web and HTML5 video). | srt |
| translate_to_english | No | Also generate an English translation subtitle file alongside the native language file. Only applies when language is not 'en'. Not available in background mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It discloses that two files are saved when both native and translation are requested and mentions input format support ('.3gp and .ts'). However, it omits other behavioral details like whether existing files are overwritten, what the tool actually returns, or background-mode limitations, leaving gaps.
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 six sentences long, front-loaded with a clear purpose, and uses selective examples. It avoids fluff but could be tightened without losing scope. Each sentence adds operational value.
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?
Given the tool's 14 parameters, no output schema, and no annotations, the description should clearly explain what the tool returns (e.g., saved file paths) and any critical behavior like overwriting. It does neither. It also doesn't mention background mode viability, leaving the agent without enough context to predict outcomes.
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%, so the baseline is 3. The description repeats a few parameter highlights (language='auto', translate_to_english=true) but adds no new meaning beyond the schema's already detailed parameter descriptions. It contributes only playback-format context, not parameter 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?
The description opens with 'Generate subtitle files for an audio or video file using whisper.cpp', clearly stating a specific verb, resource, and tool. It further details output formats (SRT/VTT) and translation capability, distinguishing it from siblings like transcribe_audio.
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 gives concrete usage tips: setting language='auto', enabling translate_to_english, and choosing SRT vs VTT based on playback context. However, it does not explicitly contrast this tool with alternatives such as transcribe_audio, leaving selection criteria implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List all Whisper model files installed in your models directory. Shows filename, size, whether it is currently active, quantization status, and recommended use case for each model. No network calls — reads local filesystem only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it reads local filesystem only, no network calls, and provides specific output fields. Lacks mention of permissions or side effects, but as a read-only operation, this is sufficient.
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: first states purpose, second details output. Every sentence adds value with no redundancy.
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?
Given no annotations or output schema, description fully explains what the tool does and what output to expect. Covers all essential aspects for a list tool.
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?
No parameters, so schema coverage is 100%. Description adds value by detailing output fields beyond schema, which is helpful for agents.
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?
Clearly states verb (list), resource (Whisper model files), and specific output details (filename, size, active, quantization, use case). Distinguishes from sibling tools like download_model and switch_model by focusing on listing installed models.
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?
Implies when to use: before downloading or switching models, as it lists what is already installed. No explicit when-not or alternatives, but context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_batchA
Start an automated sequential batch transcription of all untranscribed files in a folder. Scans for files without a matching .txt, sorts by duration (shortest first), and processes them one at a time as background jobs. Each file is validated after completion — empty or suspiciously short outputs are flagged. Batch self-advances without polling when each file finishes. Returns a batch ID to use with check_batch_progress. ⚠️ Privacy: when privacy_mode is active, one confirmation is required before the batch starts. All files then process unattended. No transcript text is returned to the API.
| Name | Required | Description | Default |
|---|---|---|---|
| threads | No | CPU threads. Defaults to 4 of 8. | |
| language | No | Language code. Defaults to en. | en |
| folder_path | Yes | Absolute Windows path to the folder. | |
| privacy_mode | No | Override privacy mode for this batch. When active, requires one confirmation before batch start. All files process unattended with no transcript text returned. | |
| output_format | No | timestamps = with time codes (default), text = plain. Applies to all files in the batch. | timestamps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses scanning logic, sorting by duration, sequential background execution, post-completion validation, self-advancing behavior, return of a batch ID, and privacy-mode confirmation. This is exceptionally transparent.
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 a single paragraph of five sentences, front-loaded with the primary purpose. Every sentence adds valuable detail—scanning, sorting, validation, self-advancing, and privacy—while remaining efficient. No redundant or filler content.
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 complex batch tool with no output schema, the description covers all essential operational aspects: what it does, how it processes files, validation feedback, automatic advancement, return value, and privacy behavior. It even points to the companion check_batch_progress tool. This is complete for agent decision-making.
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 100%, giving a baseline of 3. The description adds meaningful context for privacy_mode, explaining the one-time confirmation and that no transcript text is returned. It also clarifies that output_format applies to all files in the batch, which is absent from 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?
The description starts with a specific verb+resource: 'Start an automated sequential batch transcription of all untranscribed files in a folder.' It clearly distinguishes itself from sibling tools by detailing the batch scanning, sorting, and background processing behavior. It also references check_batch_progress, reinforcing its unique role.
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 provides clear context: use when you need to transcribe all untranscribed files in a folder sequentially as background jobs. It does not explicitly state when not to use it or mention alternative tools, but the context is strong enough to guide the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_modelA
Switch the active Whisper model for the current session without restarting Claude Desktop. Accepts a model filename (e.g. ggml-large-v3-turbo.bin) or full path. The model must already be installed in your models directory. Change is session-scoped — does not persist after Claude Desktop restarts.
| Name | Required | Description | Default |
|---|---|---|---|
| model_name | Yes | Model filename (e.g. ggml-large-v3-turbo.bin) or full path. Must be a .bin file in the configured models directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavior: session-scoped change and non-persistence. Lacks details on error handling or what happens with invalid model names. Without annotations, the description is adequate but not fully comprehensive.
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 concise sentences, front-loaded with main purpose. No unnecessary words; each sentence adds value.
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?
Covers essential aspects: purpose, input, and scope. Lacks output specification, but for a simple action with no output schema, it is reasonably complete.
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 description repeats the same information as the schema. No additional meaning is added, so baseline score 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?
Clearly states the tool's purpose: switching the active Whisper model without restarting Claude Desktop. The verb 'switch' and resource 'active Whisper model' are specific. It distinguishes from sibling tools that deal with listing, downloading, or transcribing.
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?
Provides explicit guidance on input (model filename or path, must be installed) and session scope. Does not mention alternatives or when not to use, but context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_audioA
Transcribe a single audio or video file using whisper.cpp on Windows. Natively supports mp3 and wav. Automatically converts mp4, mkv, avi, mov, webm, m4a, flac, ogg etc. via FFmpeg — no manual conversion needed. Output defaults to timestamps format (with time codes). For files that may take more than 4 minutes, set background=true to run as a detached job and use check_progress to monitor it. ⚠️ Privacy: transcript text returned by this tool is processed by Claude's API. Pass privacy_mode=true to this tool to enable metadata-only responses per call — no transcript text will be transmitted. Set WHISPER_PRIVACY_MODE=true in env to enable globally. When privacy mode is active, a confirmation is required before every operation.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Override model path. Leave blank to use active model. | |
| prompt | No | Prior context string injected before transcription. Improves accuracy for domain-specific vocabulary or speaker names. Example: 'Names: Keemstar, DramaAlert.' | |
| best_of | No | Number of candidate sequences to evaluate. Default 5. | |
| diarize | No | Stereo speaker diarization — requires stereo audio with speakers on separate channels. | |
| threads | No | CPU threads. Defaults to 4 of 8. | |
| duration | No | Process only this many milliseconds of audio from offset_t. | |
| language | No | Language code (e.g. en, ja, es, fr) or 'auto' to detect automatically. Defaults to en. | en |
| offset_t | No | Start transcription at this offset in milliseconds. | |
| beam_size | No | Beam search width. Higher = more accurate but slower. Default 5. | |
| file_path | Yes | Absolute Windows path, e.g. C:\Users\You\Downloads\recording.mp4 | |
| vad_model | No | Absolute path to a Silero VAD model .bin file. Strips silence before transcription. | |
| background | No | Run as a detached background job. Returns a job ID immediately. Use check_progress to monitor. Recommended for files over 10 minutes. | |
| gpu_device | No | GPU/Vulkan device index for multi-GPU systems. Overrides the WHISPER_GPU_DEVICE env default. Check whisper-cli's startup log for the index that lists your target card. | |
| processors | No | Number of parallel processors. Default 1. | |
| temperature | No | Sampling temperature 0.0–1.0. Default 0.0 (deterministic). | |
| tinydiarize | No | Mono speaker-turn detection (TinyDiarize). Marks '[SPEAKER_TURN]' at speaker changes on single-channel audio. Requires a tdrz model (small.en-tdrz) — download it with download_model and activate with switch_model first. | |
| privacy_mode | No | Override privacy mode for this call. true = metadata only, no transcript text transmitted to API. false = return text (even if WHISPER_PRIVACY_MODE=true globally). Omit to use global WHISPER_PRIVACY_MODE setting. When active, requires confirmation before each operation. | |
| save_to_file | No | Save transcript as .txt next to the source file. | |
| output_format | No | timestamps = with time codes (default), text = plain, json = structured, srt = SRT subtitle file, vtt = WebVTT subtitle file, lrc = LRC lyrics/karaoke, csv = CSV with timestamps. | timestamps |
| split_on_word | No | Split segments at word boundaries. | |
| no_speech_thold | No | Confidence threshold below which segments are treated as silence. Default 0.6. | |
| word_timestamps | No | Output one word per timestamped segment. Useful for clip alignment. | |
| max_segment_length | No | Maximum segment length in characters. | |
| condition_on_prev_text | No | Re-enable conditioning each segment on its own prior output. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: automatic FFmpeg conversion, output default to timestamps, background job behavior, and privacy/confirmation requirements. It also warns that transcript text is processed by Claude's API. These go beyond the schema and provide meaningful operational context, though it stops short of detailing error handling or return structures.
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 moderately long but every sentence carries useful information: file support, conversion, output format, background jobs, and privacy. It is front-loaded with the core purpose and uses a clear warning for privacy. Slightly dense but well-structured.
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?
Given the tool's complexity (24 parameters, no output schema), the description covers key contextual aspects: file compatibility, background execution, and privacy. It does not describe the return format beyond the timestamps default, but with the schema's output_format enum, that is partially covered. Overall, it provides enough context for an agent to select and invoke the tool 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 100%, so the baseline is 3. The description adds value for background and privacy_mode by explaining their purpose and global env override, but it does not systematically enhance understanding of the 24 parameters. Most parameter semantics come from the schema itself.
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 states the tool transcribes a single audio or video file using whisper.cpp on Windows. The verb 'transcribe' and the resource 'single audio or video file' are specific, and it distinguishes itself from siblings like transcribe_batch by noting it handles a single file.
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 provides explicit guidance for long files (background=true and check_progress), privacy mode usage, and notes automatic FFmpeg conversion, implying no manual pre-processing. It does not explicitly mention alternatives like transcribe_batch, but the 'single file' wording conveys when to use this tool over the batch variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_batchA
Transcribe multiple audio/video files in a folder interactively, one file at a time. Shows a preview of each transcript and waits for confirmation before continuing. Saves each transcript as a .txt file next to its source. Files already transcribed (with matching .txt) are shown as done and skipped. Supported formats: mp3, wav, mp4, mkv, avi, mov, webm, m4a, flac, ogg. NOTE: For large unattended batch jobs, use start_batch instead. ⚠️ Privacy: transcript previews are processed by Claude's API. Pass privacy_mode=true to suppress previews and return metadata only. When privacy mode is active, confirmation is required before each file.
| Name | Required | Description | Default |
|---|---|---|---|
| threads | No | CPU threads. Defaults to 4 of 8. | |
| language | No | Language code. Defaults to en. | en |
| recursive | No | Include subfolders. Defaults to false. | |
| file_index | No | Which file to process (1-based). Omit to list files first. | |
| folder_path | Yes | Absolute Windows path to the folder. | |
| privacy_mode | No | Override privacy mode for this call. When active, requires confirmation before each file and returns metadata only. | |
| output_format | No | timestamps = with time codes (default), text = plain. | timestamps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having no annotations, the description thoroughly discloses behavior: previewing, waiting for confirmation, saving .txt files next to sources, skipping already transcribed files, supported formats, and privacy mode effects. This exceeds typical transparency expectations.
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 relatively lengthy but well-structured, with each sentence adding value (formats list, alternative tool, privacy warning). It is not overly verbose, but could be tightened slightly by moving the format list to an appendix.
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?
Given no output schema, the description covers the workflow (preview, confirmation, saving, skipping) and privacy considerations. However, it does not describe what the tool returns besides 'metadata only' in privacy mode, leaving a minor gap for interactive completion behavior.
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 100%, so baseline is 3. The description adds context for privacy_mode (suppress previews, return metadata) but does not materially enhance understanding of other parameters beyond the schema's own descriptions.
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 states the tool transcribes multiple audio/video files in a folder, with specific behavioral details (one file at a time, preview, confirmation). It also distinguishes itself from the sibling tool start_batch, making its purpose 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?
Explicitly instructs when to use this tool vs. an alternative: 'For large unattended batch jobs, use start_batch instead.' Also describes interactive context and privacy mode behavior, giving clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whisper_serverA
Start, stop, or check the persistent whisper model server. When running, the active model stays resident in VRAM and every transcribe_audio / transcribe_batch call is served over localhost without reloading it — eliminating the per-file model-load cost (a large speedup for many short files). ⚠️ The resident model holds GPU VRAM for the server's entire lifetime, so start it deliberately, do your work, then stop it to hand the GPU back to other applications. While it is running, background jobs, start_batch, generate_subtitles, and lrc/csv or advanced per-call options are refused (they need the one-shot CLI and would contend for the GPU) — stop the server to use those. Bound to localhost only.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | start = launch the server with the active model resident; stop = shut it down and free VRAM; status = report whether it is running, the resident model, port, and uptime. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses critical behavioral traits: the model stays resident in VRAM for the server's lifetime, the server is bound to localhost only, and certain operations are refused while running to avoid GPU contention. This is transparent about resource consumption and operational constraints.
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 front-loaded with the core purpose, and every sentence adds necessary context (performance benefit, VRAM warning, refusal list, localhost binding). It is rich but not bloated, and is well-structured for quick comprehension.
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?
The description is complete for a server lifecycle tool of this complexity. It covers the action, why to use it, the GPU resource implication, restrictions on concurrent operations, and the network binding. No output schema exists, but the status action details are in the schema, and the description fills remaining gaps.
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 input schema has 100% coverage with detailed descriptions for each action enum value. The description adds no additional parameter meaning beyond the schema; it focuses on the server's behavior and side effects. Per the high schema coverage baseline, a score of 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?
The description clearly states the tool's function: 'Start, stop, or check the persistent whisper model server.' It uses a specific verb and resource, distinguishing it from siblings like transcribe_audio and switch_model.
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?
Explicit guidance is provided on when to use the server: it eliminates per-file model-load cost, making it a speedup for many short files. It also tells when NOT to use it: 'stop the server to use' the refused operations like start_batch and generate_subtitles, and warns to start deliberately and stop to free GPU.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: model management (list, download, switch), server control, single and batch transcription, subtitles, progress monitoring, and diagnostics. Even similar tools like transcribe_batch and start_batch are clearly differentiated by interactive vs unattended operation.
All tools use lowercase snake_case with a verb_noun pattern (switch_model, transcribe_audio, check_progress). The only deviation is whisper_server, which is a noun phrase rather than a verb action, but this is a minor inconsistency in an otherwise uniform set.
13 tools is well within the ideal range for a domain-specific server. Each tool covers a distinct aspect of the transcription workflow, from model management to batch processing and diagnostics, without redundancy or unnecessary additions.
The toolset covers the full lifecycle: model installation/activation, server management, single/batch transcription, subtitle generation, progress tracking, and environment verification. No obvious dead ends or missing operations for the intended use case.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
MCP server for Speech-to-Text
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides shell command execution and OpenAI Whisper transcription capabilities for audio files.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables high-performance audio transcription using Faster Whisper with CUDA acceleration, supporting single and batch audio file processing with multiple output formats (VTT, SRT, JSON).-
- AlicenseAqualityDmaintenanceEnables advanced audio transcription, text-to-speech generation, and audio processing using OpenAI's Whisper and GPT-4o models with support for multiple audio formats, file management, and parallel processing.858MIT
- 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-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/eviscerations/whisper-windows-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server