Local speech-to-text engine and MCP server for transcribing audio with speaker diarization
voice-scribe has 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (get_usage, transcribe, check_job, list_models). However, descriptions are brief (10-100 chars), parameter descriptions lack detail on constraints/formats, and output schemas are not documented. The transcribe tool has 14 parameters but many lack actionable guidance (e.g., 'prompt' has no format hint, 'speaker_threshold' lacks range). Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Polls the status of a background transcription job
Returns usage documentation for the MCP server
Lists available transcription models
Transcribes an audio recording to text, optionally with speaker diarization and translation
Output schemas not documented. LLMs cannot plan downstream calls or extract results without knowing response structure (e.g., what fields does transcribe return? Is it text, JSON, or a file path?).
Parameter descriptions lack actionable constraints. 'prompt' (transcribe) has no format guidance; 'speaker_threshold' has no range (0-1? 0-100?); 'offset_seconds' and 'duration_seconds' lack min/max bounds. LLMs will guess invalid values.
No error handling guidance. If transcribe fails (unsupported audio format, model not found, diarization unavailable), the tool provides no recovery hint. LLMs cannot self-correct.
Tool annotations missing. 'transcribe' is destructive (writes job state, consumes compute); 'get_usage' and 'list_models' are read-only; 'check_job' is idempotent. Annotations enable agents to reason about safety and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Descriptions too brief (10-100 chars). 'check_job' is 'Polls the status of a background transcription job' (56 chars), lacks WHEN to call it, what it returns, or how to interpret status values. Baseline is 194 chars.