MCP server for podcast transcription, ebook analysis, and knowledge retrieval with vector search capabilities
Gobble has 18 tools with mixed quality. Naming is generally good (verb-based: list, search, read, get, embed, summarize, spawn, abort). However, critical gaps exist: (1) Many tool descriptions lack specificity about when to use each tool vs. alternatives (e.g., search_books vs. search_contents vs. search_episodes are semantically similar but their distinctions are unclear). (2) Parameter descriptions are minimal or generic (e.g., 'Book identifier to summarize' repeated across tools). (3) Return type documentation is missing or incomplete for most tools, only inferred from code inspection. (4) Error handling guidance is absent, no recovery suggestions in descriptions. (5) The orchestrator tools (opencode_spawn, opencode_prompt, opencode_abort, opencode_get, opencode_list) appear to invoke an external 'OpenCode' system, but their schemas and error semantics are not documented. (6) Parameter validation rules are not described (e.g., what are valid book_ids? what format are session_ids?). Conservative scoring reflects these gaps against production baselines.
Get detailed information about a specific book.
Process and embed a book's content into the vector search database.
Retrieve the content of a transcript file.
Download a video's audio to a temp file, transcribe it, save transcript to knowledge/youtube, and return the transcript path.
List all available ebooks in the knowledge base.
List all available episodes for a specific show.
List all available show names with transcripts.
Missing or incomplete return type documentation. The code defines tool functions but does not document their output schemas in tool registration. LLMs cannot plan downstream calls or extract required fields without knowing what a tool returns.
Semantic ambiguity between similar tools. search_books (title/author), search_contents (vector similarity), search_episodes (text search), and search_topics (inferred in code) all perform 'search' but with different semantics. Descriptions do not clearly explain when to use each. LLMs will struggle to pick the right one.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 38 | - | v1 |
Abort a running OpenCode session.
Get the status of a specific OpenCode session.
List all OpenCode sessions (active and recent).
Send a follow-up message to an existing OpenCode session.
Spawn a new OpenCode worker session to handle a task. The session runs in the background. When it completes, the result will be stored and surfaced to the orchestrator on the next user message. Use this for tasks that require code execution, file operations, research, or any desktop action. Returns a session_id.
Read specified chapters from a book.
Search for books by title or author.
Search book content using vector similarity.
Search for episodes containing specific text using text-based search. Performs a case-insensitive text search across all transcript files to find episodes that contain the search query.
Generate a summary of an entire book using AI.
Generate a summary of a specific chapter.
Minimal parameter descriptions lacking format/constraint guidance. Parameters like 'book_id' are described as 'Unique book identifier' but do not specify the format (alphanumeric? slug?), how to obtain one, or valid examples. 'detail_level' enum is documented, but 'session_id' and 'filename' parameters lack guidance.
No error handling guidance in tool descriptions. Code shows error returns (e.g., 'Book not found', 'Chapter not found') but descriptions do not advise LLMs on recovery strategies (try search_books first, list_shows to discover valid names, etc.). Agents will have no guidance on what to do when a call fails.
Orchestrator tools (opencode_spawn, opencode_prompt, opencode_abort, opencode_get, opencode_list) lack clear semantics. Descriptions are terse ('Spawn a new OpenCode worker session') without explaining the asynchronous execution model, session lifecycle, state transitions, or how results are 'surfaced to the orchestrator on the next user message'. This invites misuse.
Irreversible operations (embed_book, get_youtube_transcript, opencode_spawn, opencode_abort) lack explicit 'this modifies state' warning in descriptions. LLMs may not recognize these as side-effecting calls and could retry them unnecessarily or invoke them at the wrong time.
Pagination not documented. search_books, search_contents, and search_episodes return lists but do not specify max_results limits, pagination mechanisms, or whether results are capped. Large result sets could exhaust context windows.
Chaining IDs missing. If search_episodes returns episode metadata, it should include 'show_name' and 'filename' so that get_transcript can be called immediately without a follow-up lookup. Response field naming is inconsistent.