Skip to main content
Glama
yashkotha
by yashkotha

Whisper Valet

Whisper Valet: results folder and speaker-labeled transcript

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 flagged

Works 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

  1. Extract — ffmpeg pulls a uniform audio stream (video containers work too)

  2. IsolateDemucs separates the human voices from background noise onto a clean stem with true silence between words

  3. Level — the quiet speaker is lifted to match the loud one (dynaudnorm + loudnorm), so raising them amplifies no noise

  4. Transcribe — MacWhisper's bundled CLI (mw) transcribes the cleaned audio with word-level timestamps

  5. Attributepyannote 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)

  • MacWhisperPro, for the CLI's JSON export + speaker features (brew install --cask macwhisper)

  • ffmpeg (brew install ffmpeg) and uv

  • Optional, 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.sh

setup.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.sh warns 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

process_audio(path)

Queue one file for the full pipeline (copies it; your original stays put)

process_folder(path)

Queue every audio/video file in a folder

status()

Inbox queue, watcher activity, recent clips, log tail

list_clips()

All processed clips with state

get_transcript(clip)

Speaker-labeled transcript (+ any low-confidence flags)

get_report(clip)

Full per-segment confidence table

configure(num_speakers, labels)

"auto", "3", or "2-5" + optional names — applies to future clips

transcribe_quick(path)

Synchronous plain transcription for short clips — no enhancement, just text

list_models()

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 sweep

A 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 tests

Credits

  • 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 tools
configureA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelsNo
num_speakersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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()).

ParametersJSON Schema
NameRequiredDescriptionDefault
clipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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().

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
modelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A3.9/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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