Local MCP server that processes screen recordings into keyframes + OCR + audio transcript + timeline
ScreenMind has 7 tools with clear verb-noun naming (screenmind_watch, screenmind_record_start, etc.). All tools have descriptions (avg ~120 chars, within baseline 34-392). However, input schemas are present but lack depth: most parameters have type and description, but no enums for constrained values, no min/max bounds, and no output schemas documented. Error handling is minimal, no recovery guidance, no categorization of retryable vs fatal errors. The tool set is well-composed (each does one thing), but descriptions could be more LLM-optimized (e.g., 'Process the latest screen recording' is vague about what 'process' entails). No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (WRITE vs READ_ONLY marked in metadata but not in schema).
Get the current ScreenMind configuration.
Update ScreenMind configuration. Persists to ~/.screenmind/config.json.
List all screen recordings in capture_dir matching file_patterns. Optionally filter by date.
Process any video file (local path or URL) into keyframes, OCR, transcript, and timeline. Supports YouTube, Instagram, TikTok, X, and 1000+ sites via yt-dlp.
Start a screen recording on macOS using ffmpeg with AVFoundation. Saves to ~/Desktop by default. Returns the output file path.
Stop the active screen recording. Sends SIGINT to the ffmpeg process.
Process the latest screen recording from capture_dir. Extracts keyframes, OCR text, audio transcript, and timeline. Returns text summary + file paths; Claude reads frames with the Read tool.
No output schemas documented. Tools return text summaries and file paths, but LLMs cannot infer the structure of returned objects (e.g., what fields are in the timeline, what does the OCR response contain). This forces LLMs to guess and wastes tokens parsing unstructured output.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. screenmind_record_start and screenmind_record_stop are marked WRITE but lack destructiveHint. screenmind_watch and screenmind_list_recordings are READ_ONLY but lack readOnlyHint. This prevents agents from reasoning about side effects.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next. E.g., screenmind_record_start could fail if ffmpeg is missing or output_path is invalid, but no recovery hints are provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter constraints missing. 'since' parameter accepts ISO dates or relative strings ('7d', '24h', '30m') but no enum or pattern is declared. 'max_frames' has no min/max bounds. 'dedup_threshold' and 'scene_change_threshold' accept 0-1 but this is only stated in description, not in schema.
Descriptions lack LLM-optimization. 'Process the latest screen recording from capture_dir' is vague about what 'process' means. Better: 'Extract keyframes, OCR text, and audio transcript from the latest screen recording, returning a timeline and file paths for Claude to read with the Read tool.' Descriptions should answer WHAT, WHEN, and WHAT IT RETURNS.