Meeting recording manager for Claude with built-in Whisper transcription for speech-to-text
AbhiMeet MCP server has 6 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-200+ chars) and input schemas with type definitions, meeting baseline requirements. However, descriptions lack LLM-optimization guidance (e.g., 'when to use', 'prerequisites'), parameter descriptions are minimal, and output schemas are undocumented. No error handling guidance, no pagination support for list_recordings despite potentially large result sets, and no tool annotations (readOnlyHint/destructiveHint). Tool naming is clear and verb-based (list_, get_, transcribe_), but composition could be improved, transcribe_recording bundles model selection and language hints that could be separate concerns. Security concern: transcribe_recording accepts lang_hint as free-form string without enum constraint, inviting invalid values.
Get the full path to a recording's audio-only file (MP3).
Get the full path to a recording's combined audio+video file (MP4).
Get detailed info about a specific recording.
Get the full path to a recording's video-only file (screen recording, no audio).
List all meeting recordings with metadata.
Transcribe a recording's audio using Whisper AI speech-to-text. Supports: English, Hindi, Gujarati, Marathi, Bengali, and many more languages. Auto-detects language. Saves transcription to recording folder. Uses Groq API if GROQ_API_KEY is set (free, instant, perfect quality). Falls back to local faster-whisper otherwise (slower on CPU).
Output schemas undocumented. No tool returns a documented schema showing what fields agents should expect (e.g., list_recordings returns what? Array of objects with which fields?). LLMs cannot plan downstream calls without knowing response structure.
list_recordings lacks pagination. No limit parameter default stated, no offset/cursor support, no total_count in response. If recordings grow large, result will blow context window or timeout.
transcribe_recording lang_hint parameter accepts free-form string ('auto', 'hi', 'gu', 'en', 'hi-gu', 'hi-en', 'hi-gu-en', 'mr', 'bn') but is not declared as enum. LLMs will hallucinate invalid language codes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error handling guidance. Tools return no recovery hints (e.g., 'Recording not found. Call list_recordings() to see available IDs'). Agents cannot self-correct on failures.
No tool annotations. transcribe_recording is destructive (writes to disk) and list_recordings is read-only, but neither declares readOnlyHint or destructiveHint. Agents cannot reason about side effects.