MCP server for reelgrep - browse and search a local video library from chat.
Strong naming conventions (verb_noun pattern: reelgrep_search_subtitles, reelgrep_list_videos). All 9 tools have clear, substantive descriptions (avg ~120 chars, well within 10-1024 range). Input schemas present with type definitions and parameter descriptions. However, output schemas are not explicitly documented in the source code, responses are inferred from implementation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Error handling is basic (no recovery guidance or error classification visible). Parameter constraints are well-specified (enums for export kind, numeric limits documented). Tool composition is clean, each tool has a single responsibility.
Locate a quote across the indexed library and return both structured JSON and a human-readable citations block ready to paste.
Fetch a single person/object search with its matches sorted by confidence (descending). Each match includes the matching frame's timestamp and path.
Confirm the MCP server is reachable and report the configured SQLite index path plus the indexed video count.
List export artifacts (screenshots, clips, gifs, contact sheets) that reelgrep has produced, newest first. Optionally filter by video and/or kind.
List person/object searches that have been run against the library, newest first. Optionally scope to one video.
List videos indexed by reelgrep, newest first. Includes per-video counts of subtitle cues, frames, person searches, and exports.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns hits both grouped by video and as a flat list') but formal output schema definitions are absent from source. LLMs cannot reliably plan downstream tool calls or extract specific fields without documented return types.
No tool annotations despite all tools being read-only. readOnlyHint should be applied to all 9 tools to signal to agents that these calls are safe to retry and have no side effects. This is a current spec pattern (2026-07-28) that improves agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
Return subtitle cues from a single video within a +/- window around a timestamp. Useful for getting context around a hit from reelgrep_search_subtitles.
Full-text search subtitle cues across the library (FTS5). Optionally scope to one video via file_hash. Returns hits both grouped by video and as a flat list.
Get full metadata for a single indexed video by file_hash (full or 8+ hex prefix).
Error handling lacks recovery guidance. No visible error classification (retryable vs user-fixable vs fatal) or actionable error messages. E.g., if file_hash is invalid, the error should suggest 'Try reelgrep_list_videos() to find a valid file_hash' rather than a bare 404.
Parameter descriptions could be more prescriptive about format and constraints. E.g., file_hash description says '8+ hex prefix' but does not specify the full format (blake2b:...) or provide a regex pattern. LLMs may pass invalid formats.
No batch variants for tools agents might call in loops. E.g., if an agent needs to fetch info for 10 videos, it must call reelgrep_video_info 10 times instead of a single batch_get_video_info call. This wastes tokens and latency.