Control local Cadre screen recordings from Raycast.
This is a Raycast extension, not an MCP server. The codebase shows HTTP-based tool invocation via a custom CadreClient that communicates with a local Cadre application. Tool definitions are inferred from command handlers and client calls rather than explicitly registered via MCP protocol. Descriptions are present but minimal (10-50 chars). Input schemas are partially visible but lack parameter descriptions. No error recovery guidance, no output schema documentation, and no tool annotations. The server does not expose MCP-compliant tool definitions, it wraps Cadre's local API.
Get the current recording state and elapsed time
List available recording sources and check permissions for screen recording and accessibility
Pause the current Cadre recording
Resume the paused Cadre recording
Start a visible Cadre recording of a display with optional countdown and cursor tracking
Stop the current recording and return the editable Cadre project details
No explicit MCP tool registration visible. Tools are inferred from Raycast command handlers and client.callTool() invocations. Tool definitions are not statically declared with full schemas.
Input schemas lack parameter descriptions. start_recording has a schema with 'source', 'showCountdown', 'countdownSeconds', 'trackCursor' but no descriptions explaining what each controls or valid ranges.
No output schemas documented. Tools like get_recording_status and stop_recording return data (RecordingSources, recording state) but the response structure is not formally declared for LLM consumption.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2025-06-18+ | v2 |
Error handling lacks recovery guidance. Errors like 'Cadre is not running' or permission denials are thrown but do not guide the LLM on next steps (e.g., 'Open Cadre and retry').
Tool descriptions are too brief (10-50 chars). 'Pause the current Cadre recording' lacks context on when to use it vs. stop_recording, or what state the recording enters.