Skip to main content
Glama
ssh071102-code

claude-screen-mcp

Record Screen (Keyframes)

record_screen

Capture screen activity for a set duration and return deduplicated keyframes to show what happened, enabling review of recent changes in one result.

Instructions

Capture the screen at targetFps for durationMs ms, then return only the most informative keyframes (deduplicated by perceptual hash). Lets the model see a short period of screen activity in a single tool result. Always returns first + last frame plus middle frames picked by greatest dHash distance. NOT a real-time stream — the entire window blocks before any frame is returned. Hard caps: durationMs ≤ 60s, maxFrames ≤ 12. Use this for 'show me what happened in the last 10 seconds' workflows; use wait_for_change for 'tell me when something changes'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format per frame. Default webp (smallest). PNG disabled to cap tokens.
maxEdgeNoResize so longest edge ≤ N px per frame. Default 800 (lower than other tools to keep N-frame token cost sane).
qualityNoQuality (1-100) for jpeg/webp.
displayIdNoDisplay id from `list_displays`. Omit for primary.
maxFramesNoCap on how many keyframes are returned (2 – 12). Default 6. First + last frames are always kept; middle frames are picked by greatest distance.
targetFpsNoFrames-per-second the capture loop targets. Default 2. Capped at 5 — higher just wastes CPU since dHash dedup discards near-identical frames.
thresholdNoHamming distance threshold for a frame to count as a new keyframe vs the previous keeper. Default 8.
durationMsYesTotal recording window in ms (1000 – 60000). Server captures during this period, then returns the most informative frames.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does so well: it discloses blocking behavior ('the entire window blocks before any frame is returned', 'NOT a real-time stream'), the dedup/selection rule (dHash distance, first+last always kept), and hard caps (60s, 12 frames). This is exactly the behavioral context an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then progressively adds behavior, caps, and routing. Dense but every clause carries signal; the only minor cost is that the caps and the alternative-tool guidance could sit closer to the top.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly explains the return value shape (first + last + middle keyframes) and the blocking semantics. Combined with a fully documented schema, an agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains that targetFps is capped at 5 because dHash discards near-identical frames, and reiterates the maxFrames selection policy. It does not cover format/quality/maxEdge rationale in the description, though the schema handles those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (capture screen, return keyframes) with scope and mechanism (deduplicated by perceptual hash). The final sentence explicitly contrasts with the sibling `wait_for_change`, so an agent can distinguish it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use case ('show me what happened in the last 10 seconds') and names the alternative tool plus the condition that selects it ('tell me when something changes' → wait_for_change). Exclusions and context are both stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.