Whisper Valet
Click on "Install 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., "@Whisper Valettranscribe the latest meeting recording"
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.
Whisper Valet

The backstage crew for MacWhisper. Hand the valet a rough recording — noisy room, one speaker mumbling into their coffee — and get back restored audio and a speaker-labeled transcript, per clip, automatically. macOS, fully local: nothing ever leaves your machine.
MacWhisper is a brilliant transcriber. Whisper Valet is everything around it: the audio restoration before the transcription, the speaker attribution after it, and the automation that means you never open an app at all.
~/AudioDrop/interview.mp3 you drop this at the valet stand
│
▼ launchd daemon (survives reboots, notifies via macOS)
~/AudioDrop/Processed/interview/
interview.mp3 original (parked here, untouched)
interview.cleaned.mp3 voices isolated from noise, quiet speaker lifted
interview.cleaned_aggressive.mp3 harder denoise variant
transcript.txt speaker-labeled, grouped by turn
transcript.srt timestamped subtitles
transcript.json word-level timestamps + per-segment confidence
report.txt confidence table; low-confidence turns flaggedWorks for any recording and any number of speakers — a monologue, a two-person interview, a five-person panel. Also ships an MCP server so Claude (or any MCP client) can queue files, watch progress, and read transcripts conversationally.
Watch the 19-second demo — drop, pipeline, results folder, labeled transcript.
What the valet actually does
Extract — ffmpeg pulls a uniform audio stream (video containers work too)
Isolate — Demucs separates the human voices from background noise onto a clean stem with true silence between words
Level — the quiet speaker is lifted to match the loud one (dynaudnorm + loudnorm), so raising them amplifies no noise
Transcribe — MacWhisper's bundled CLI (
mw) transcribes the cleaned audio with word-level timestampsAttribute — pyannote 3.1 works out who speaks when on the original audio, and the labels are merged onto the transcript
Why step 5 uses the original: voice isolation makes speech easier to hear but smears the vocal timbre that speaker-ID depends on. Transcribing the cleaned audio while diarizing the original gets the best of both — that split is the core design decision of this pipeline.
If pyannote can't run (no HuggingFace token, no network), the valet degrades
gracefully to MacWhisper's built-in speaker detection and says so in
report.txt. Every segment carries a confidence score; anything below 0.6 is
flagged <-- verify so you know exactly which lines deserve a listen.
Related MCP server: GhostMinutes MCP
Requirements
macOS on Apple Silicon (Intel works, slower)
MacWhisper — Pro, for the CLI's JSON export + speaker features (
brew install --cask macwhisper)ffmpeg(brew install ffmpeg) anduvOptional, recommended: a free HuggingFace token for pyannote diarization (setup prints the exact steps)
Install
git clone https://github.com/yashkotha/whisper-valet.git ~/whisper-valet
cd ~/whisper-valet && ./setup.shsetup.sh builds three pinned Python environments, installs the launchd
watch-folder daemon, and registers the MCP server with Claude Code if the
claude CLI is present. Idempotent — re-run it after git pull.
Don't clone into
~/Documents,~/Desktop, or~/Downloads: macOS TCC blocks launchd agents from reading those folders (silently).setup.shwarns if you do.
Then drop any mp3 wav m4a aac flac ogg opus aiff mp4 mov m4v webm file into
~/AudioDrop (the valet stand). A ~3-minute clip takes ~5 minutes on an
M-series CPU. Multiple drops queue sequentially; each file is processed exactly
once (move-out semantics — no ledgers, no double-processing).
MCP server
setup.sh registers whisper-valet (user scope) with Claude Code. For other
MCP clients, point them at <repo>/.venv-mcp/bin/whisper-valet-mcp (stdio).
Tool | What it does |
| Queue one file for the full pipeline (copies it; your original stays put) |
| Queue every audio/video file in a folder |
| Inbox queue, watcher activity, recent clips, log tail |
| All processed clips with state |
| Speaker-labeled transcript (+ any low-confidence flags) |
| Full per-segment confidence table |
|
|
| Synchronous plain transcription for short clips — no enhancement, just text |
| MacWhisper's downloaded models |
Design note: the heavy pipeline runs in the daemon, not in MCP calls. Queue
tools return instantly, so no MCP client timeout can kill a 40-minute job —
transcribe_quick is the only synchronous tool, capped at 10 minutes.
Security: user-supplied paths are resolved (symlinks followed) and checked
against an allow-list (VALET_ALLOWED_PATHS, colon-separated; defaults to
your home directory), extensions are validated, model ids are
pattern-checked, and subprocesses run argv-only — no shell interpolation.
Configuration
config.env (created by setup, gitignored):
NUM_SPEAKERS=auto # auto = detect per clip; N = force; MIN-MAX = bound (e.g. 2-5)
LABELS="" # optional names, e.g. "Interviewer,Responder"
AGGRESSIVE=1 # also render the harder-denoised variant
NOTIFY=1 # macOS notifications
#INBOX="$HOME/AudioDrop" # the valet stand
#MW="/Applications/MacWhisper.app/Contents/MacOS/mw"Any recording works out of the box: auto lets pyannote estimate the speaker
count per clip. Force a count (2) only when you know it — on hard audio that
measurably improves accuracy. LABELS is a hint, not a constraint: names are
applied only when the detected speaker count matches the number of names, so
an "Interviewer,Responder" config can never mislabel a 3-person clip — it just
falls back to Speaker 1..N.
Every setting is also overridable via VALET_* environment variables.
Operating the daemon
tail -f ~/whisper-valet/logs/watcher.log # live log
launchctl print gui/$(id -u)/com.whispervalet.watcher | head # daemon state
launchctl kickstart gui/$(id -u)/com.whispervalet.watcher # force a sweepA failed clip keeps its folder with status.txt = failed and a full
pipeline.log; fix the cause and re-drop the original. The daemon fires on
folder changes plus a 5-minute safety sweep, and survives reboots.
Development
uv venv .venv && uv pip install --python .venv/bin/python -e . pytest ruff
.venv/bin/pytest -q # unit tests (no MacWhisper/torch needed — mocked)
.venv/bin/ruff check src testsCredits
The MCP-wrapper idea for MacWhisper's CLI was explored first by docdyhr/macwhisper-mcp-server — a clean, well-hardened transcribe wrapper. Whisper Valet borrows its security posture (path allow-lists, symlink resolution, argv-only subprocesses) and adds the audio-restoration pipeline, research-grade diarization, per-clip artifacts, and the reboot-surviving daemon.
Heavy lifting by Demucs (Meta AI), pyannote.audio, MacWhisper (Good Snooze), and ffmpeg. Whisper Valet is an independent project, not affiliated with any of them.
License
MIT
Available Tools
9 toolsconfigureA
Adjust diarization for FUTURE clips. num_speakers: "auto" (detect per clip — works for any recording), "N" to force exactly N, or "MIN-MAX" to bound the range (e.g. "2-5"). labels: comma-separated names in order of first appearance, e.g. "Interviewer,Responder" — applied only when the detected speaker count matches the label count, otherwise speakers get generic "Speaker N" names. Pass "" to leave a setting unchanged. Returns the active configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | ||
| num_speakers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It details the behavior of num_speakers modes (auto, forced N, MIN-MAX), the matching rule for labels, the fallback to generic names, the semantics of passing empty strings, and the return of the active configuration. This is rich, non-obvious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then systematically explains parameters. Each sentence provides necessary information: examples, edge cases, and default behavior. There is no filler or redundancy; the length is justified by the complexity of the two parameters.
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 tool has no annotations and a sparse schema, but the description fully compensates. It explains all parameter semantics, the tool's persistence effect, and its return value. Output schema exists, so the absence of return format details is not a gap. The description is complete for the tool's complexity.
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 fully explain the parameters and does. It defines valid formats for num_speakers with examples, explains labels structure and ordering, and describes conditional behavior. This exceeds the schema's minimal type-only information.
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 the specific action 'Adjust diarization for FUTURE clips', clearly identifying the resource (diarization settings) and scope (future clips). This distinguishes configure from siblings like process_folder, process_audio, and status, which handle processing or retrieval rather than configuration.
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 clearly indicates that this tool affects future clips, providing the context of when to use it. It also explains how to leave a setting unchanged (pass ""), which is a usage guideline. However, it does not explicitly compare itself to alternatives or state when not to use it, though the 'FUTURE' qualifier gives solid contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportB
Full per-segment speaker-confidence report for a processed clip.
| Name | Required | Description | Default |
|---|---|---|---|
| clip | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the report is per-segment and confidence-related, but does not mention any side effects, permissions, error behavior, or prerequisites beyond the clip being processed.
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, concise sentence. It is front-loaded with the key output type and scope, with no redundant text.
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 tool is simple with one parameter and an output schema, so the description does not need to explain return values. It covers the core purpose and a prerequisite (processed clip), but lacks guidance on when to use it vs siblings and does not disclose behavioral details due to missing annotations.
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?
With schema description coverage at 0%, the description carries the burden for parameter meaning. It alludes to the 'clip' being a processed clip, but does not explicitly describe the parameter format, expected identifier, or relationship to the schema property.
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 returns a 'Full per-segment speaker-confidence report' for a processed clip, which distinguishes it from siblings like get_transcript. The verb is implied but the resource and scope are specific enough.
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 usage requires a 'processed clip', giving some context. However, it does not explicitly state when to use this tool versus alternatives such as get_transcript or status, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptB
Speaker-labeled transcript for a processed clip (see list_clips()).
| Name | Required | Description | Default |
|---|---|---|---|
| clip | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It indicates the output includes speaker labels and requires a processed clip, but doesn't mention error conditions, permissions, or read-only nature. Significant gap for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It conveys the resource and a cross-reference efficiently.
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 tool is simple with one parameter and an output schema exists, so the description doesn't need to detail return values. It covers what the tool returns, the input requirement, and points to where to get the input. It's adequate for a getter, though it doesn't address error handling.
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 description coverage for the 'clip' parameter. The description compensates by indicating it should be a processed clip from list_clips(), which adds meaning beyond the bare parameter name. However, it doesn't specify the expected format or types beyond the schema's string type.
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 tool as returning a speaker-labeled transcript for a processed clip. It points to list_clips() for context, which helps distinguish it from listing tools. However, it lacks an explicit verb like 'retrieves'.
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 reference to list_clips() implies the prerequisite of having a processed clip ID, but it doesn't explicitly state when to prefer this over alternatives like get_report. Usage context 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_clipsB
List all processed clip folders with their status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond what the name implies. With no annotations, it does not state whether the operation is read-only, whether it has side effects, or any performance characteristics.
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, clear sentence that efficiently communicates the tool's function without unnecessary 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?
While minimal, the tool has no parameters and an output schema exists to cover return-value details. The description covers the essential listing purpose, though a bit more context about what 'processed' means could help.
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, so the description does not need to explain parameter semantics. Schema coverage is 100% vacuously, and the baseline for zero-parameter tools is 4.
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 lists all processed clip folders with their status, using a specific verb and resource. It distinguishes from sibling tools like status (which likely targets a single clip) and process_folder (which processes).
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?
No guidance is provided on when to use this tool versus alternatives such as status. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List MacWhisper's downloaded transcription models (active one marked).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 the read-only nature ('List'), the scope ('downloaded'), and the key output detail ('active one marked'). This is sufficient for a zero-parameter list operation where no destructive or side-effect behavior exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It states exactly what the tool does and adds one useful detail about the active model marker.
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 zero-parameter simplicity and the presence of an output schema, the description is fully complete. It covers the tool's purpose and output nuance with no 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 tool has zero parameters, and the schema reflects that with empty properties. The description correctly omits parameter details; baseline 4 applies as no parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource: 'MacWhisper's downloaded transcription models'. The parenthetical '(active one marked)' adds distinguishing detail, separating it from sibling tools like list_clips or status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's use is self-evident: listing models. There is no explicit alternative or exclusion, but the description implies clear context—if you need to see downloaded models, this is the tool. No competing sibling tool covers this function, so additional guidance is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_audioA
Queue one audio/video file for the full pipeline (voice isolation -> transcription -> speaker diarization). Returns immediately; results land in // minutes later — poll status().
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the async behavior ('Returns immediately'), the delayed result location ('<outbox>/<clip>/'), and the polling pattern. This is strong behavioral disclosure, though it omits error cases or permissions, which would require additional context.
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 two focused sentences: the first states the purpose and pipeline, the second explains the asynchronous workflow and where results land. No filler words, and all information is valuable.
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 one parameter, no annotations, and an output schema, the description covers the essential workflow: what is queued, the pipeline stages, the immediate return, the output location, and how to retrieve results. It is complete for a user to use correctly without further documentation.
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 only shows a required 'path' string with 0% coverage. The description compensates by clarifying that 'path' points to an audio/video file to be queued for the pipeline. Although it doesn't detail format constraints, it gives sufficient meaning for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Queue') and resource ('one audio/video file') with explicit pipeline steps: voice isolation -> transcription -> speaker diarization. This clearly distinguishes it from siblings like process_folder (for folders) and transcribe_quick (likely a lighter pipeline).
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 clear context: use for a single audio/video file requiring the full pipeline, and it instructs to poll status() for results. It doesn't explicitly name alternatives or exclusions, but the sibling set and phrasing make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_folderA
Queue every audio/video file in a folder (non-recursive).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It states that files are queued and non-recursive, but does not disclose side effects (e.g., whether it mutates state by adding jobs), permissions required, error behavior, or handling of unsupported formats. 'Queue' implies an action but leaves behavioral outcomes ambiguous.
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 sentence with no filler words. It is front-loaded with the action and resource, making it highly scannable.
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 simple tool with one parameter and an existing output schema, the description covers the primary function. It lacks notes on error conditions or prerequisites, but the core behavior is clear. Given the low complexity and presence of output schema, it is sufficiently 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?
The schema has 0% description coverage, leaving the meaning of 'path' open. The description compensates by clarifying that the path is a folder containing audio/video files. However, it does not specify path format, requirements, or edge cases. For a single parameter, this is adequate but not exhaustive.
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 uses a specific verb 'Queue' and identifies the resource: every audio/video file in a folder, with the qualifier 'non-recursive.' It goes beyond the name by specifying the file types and the non-recursive scope, which distinguishes it from sibling tools like process_audio that likely handle individual files.
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 does not explicitly state when to use this tool over alternatives like process_audio. It implies usage for folder-level batch queuing but provides no exclusions or alternative guidance. The only context is the 'non-recursive' qualifier, which informs scope but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusA
Pipeline status: inbox queue, watcher activity, recent clips, log tail.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does not explicitly confirm read-only behavior or other side effects, but the term 'status' and the listed observation categories suggest a non-mutating overview. It does not describe output format or potential delays, leaving some behavioral uncertainty.
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, compact sentence with a colon-separated list. Every word contributes; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter status tool with an output schema, the description sufficiently enumerates the data categories returned. It lacks explicit usage notes, but that's covered elsewhere. It's appropriately complete for its simplicity.
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, so the schema is inherently complete. The description adds no parameter semantics but none are needed. Baseline 4 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?
The description clearly identifies the tool as providing pipeline status and enumerates specific components (inbox queue, watcher activity, recent clips, log tail). This distinguishes it from siblings like process_folder or list_clips, though it lacks an explicit verb like 'retrieve' or 'display'.
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?
No explicit usage guidance is provided; it's implied that this is for checking overall pipeline health rather than using specific getter tools. There's no exclusion or alternative mention, so it's merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_quickA
Plain synchronous transcription of a short clip via the MacWhisper CLI — no enhancement, no diarization, just text now. For noisy audio or speaker labels use process_audio() instead. Optional model override in engine:model-id format.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It usefully discloses synchronous behavior and lack of enhancement/diarization, but it does not mention potential side effects, file writes, permissions, or failure behavior. That leaves a meaningful transparency gap.
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 three short sentences, front-loaded with the core purpose. Every sentence adds value: what the tool does, when not to use it, and how to override the model. No filler or 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 the simple tool shape (2 parameters, output schema present) and clear alternative hint, the description is mostly complete. The main gaps are explicit path semantics and side-effect disclosure, but overall it provides enough context for a small 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 coverage is 0%, so the description must compensate. It explains the model parameter with the engine:model-id format, and 'short clip' implies path points to an audio/video file, but the path parameter is not explicitly defined and no default model behavior is described. Partial compensation.
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 a specific verb and resource: 'plain synchronous transcription of a short clip via the MacWhisper CLI.' It distinguishes itself from sibling tools by explicitly saying 'no enhancement, no diarization, just text now' and even names process_audio as the alternative.
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 usage guidance: use this tool for quick, plain transcription; use process_audio() instead for noisy audio or speaker labels. This gives clear when-to-use vs. alternative direction.
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 clearly distinct purpose: folder queueing, single-file pipeline, status, clip listing, transcript retrieval, report retrieval, configuration, quick transcription, and model listing. While process_audio and transcribe_quick both handle audio, their descriptions draw a clear line between full pipeline and plain synchronous transcription.
Most tools follow a verb_noun pattern (process_folder, list_clips, get_transcript, list_models), but a few deviate: 'status' is a bare noun, 'configure' is a bare verb, and 'transcribe_quick' uses an adjective modifier instead of a noun. This is readable and close to consistent, but not perfectly uniform.
With 9 tools, the set is well-scoped for a transcription pipeline. Each tool fills a necessary role in the workflow—from intake (process_*) to monitoring (status) to output retrieval (get_*)—without redundancy or bloat.
The core workflow is fully covered: queueing, processing, status, results, and configuration. Missing are management operations like deleting/canceling clips or controlling the watcher, but these are optional extras rather than gaps that would break the primary use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Transcribe audio and video with Speechmatics speech-to-text from Claude and any MCP client.
Memoket — access your recording transcripts, summaries, and key takeaways over MCP.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to transcribe audio files from URLs or local paths using AssemblyAI's services, with support for speaker diarization, language detection, and asynchronous job management through a standardized MCP interface.4252MIT
- AlicenseAqualityDmaintenanceProvides accurate meeting transcription with speaker diarization and multilingual support, allowing users to submit audio URLs, poll transcription status, get transcripts, and summarize via MCP tools in their IDE.81MIT
- AlicenseNot gradedqualityDmaintenanceEnables audio transcription, intelligent splitting, and meeting analysis for MCP-compatible clients like Claude Desktop.3MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables audio transcription from files (wav, mp4, mp3, flac) or microphone recording, with dynamic tool selection and enterprise-grade security.2MIT
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/yashkotha/whisper-valet'
If you have feedback or need assistance with the MCP directory API, please join our Discord server