MCP server for video transcription, knowledge graph extraction, and entity resolution with Claude Agent SDK integration
The server has 5 tools with generally clear names and documented parameters, but several definition quality gaps prevent a higher score. Tool descriptions are present and reasonably detailed (avg ~180 chars), covering WHAT the tool does and WHEN to use it. Input schemas are properly typed with descriptions for most parameters. However, output schemas are entirely undocumented, callers have no visibility into what these tools return, which violates pattern:tool-schema. Error handling is minimal; responses use generic success/failure messages without actionable recovery guidance (pattern:recovery-guide). The transcription-related tools lack details on retry behavior, rate limits, and handling of very large files. The file_tool includes good safety checks (path validation, overwrite guards, directory creation) but no documentation of those constraints in the description itself.
Approve a pending merge candidate. The source entity will be merged into the target entity.
Query the Knowledge Graph for insights and relationships. Returns matching entities and their connections based on natural language questions.
Bootstrap a Knowledge Graph project from the first transcript to establish domain profile. Must be called before extraction can begin.
Compare two entities for semantic similarity. Returns detailed similarity analysis and evidence for potential merging.
Create a new Knowledge Graph project for research and entity extraction
Extract entities and relationships from a transcript into a Knowledge Graph project. The project must exist and be bootstrapped (have a domain profile). Returns extraction statistics including entity/relationship counts.
Scan the Knowledge Graph for potential duplicate entities that should be merged. Returns candidates with similarity scores.
No output schemas documented for any tool. Callers have no visibility into response structure, forcing LLMs to guess at available fields and compose downstream tool calls without type information.
list_transcripts has minimal description (60 chars, under 100-char lower baseline) and no visible input schema. Cannot determine pagination support, filtering options, or sort order. Violates pattern:tool-description minimum standards.
Error responses lack actionable recovery guidance. All tools return generic 'Error: ...' messages without suggesting next steps. E.g., transcribe_video failing on unsupported format should suggest 'Call list_supported_formats() first' or 'Try converting to MP4 first'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 11 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Get detailed statistics about the knowledge graph by entity/relationship type. Returns counts and insights for each category.
Retrieve the full content of a previously saved transcript by its ID. Use this when you need to work with the transcript content (summarize, extract, etc.). This enables lazy loading - only fetch content when actually needed.
List all Knowledge Graph projects with their status and statistics. Returns project ID, name, state, and counts of entities/relationships/sources.
List all saved transcripts in the library with their metadata. Shows transcript ID, filename, source, and size information.
Merge two entities into one, consolidating their properties, aliases, and relationships. The target entity absorbs the source entity.
Reject a pending merge candidate. The entities will remain separate.
Get the list of pending merge candidates awaiting user confirmation. Shows similarity scores and evidence.
Save a raw transcription to the transcript library and get a reference ID. Use this IMMEDIATELY after transcribing to persist the content and free up context. Returns a transcript ID that can be used with get_transcript to retrieve content later. This is different from write_file which is for arbitrary files like summaries.
Transcribe a video or audio file to text using OpenAI's Whisper model. Supports local files and YouTube URLs. Returns plain text transcription.
Write or save content to a file. Use this to save transcriptions, summaries, extracted key points, or any other content the user wants to keep. Creates parent directories if they don't exist. Will not overwrite existing files unless overwrite=true.
No error classification (retryable vs. user-fixable vs. fatal). LLMs cannot distinguish between transient failures (retry) and permanent ones (ask user or escalate). E.g., is a 'transcript not found' error worth retrying, or should the agent suggest searching available transcripts?
transcribe_video lacks guidance on supported formats, maximum file size, timeout behavior, and language auto-detection fallback. Description does not set expectations or constraints.
save_transcript returns a transcript ID but no documentation of ID format, length, or lifespan. Callers cannot predict what to pass to get_transcript or validate responses.