Give your AI coworker specialist video tools
Start with an editable brief in Cadre, then open it in ChatGPT Work or Claude Cowork. Your assistant can inspect the project and make cuts, zooms, captions, layout and style changes through Cadre's local tools. You review the request before sending it and review every resulting edit on the Cadre timeline.
Overview
Cadre is specialist recording and non-destructive video-editing software for Apple Silicon Macs. Its local Agent API lets a compatible desktop assistant operate the same project and timeline the person sees in the app.
Cadre's editor is fully data-driven — a project is a manifest plus timeline data,
and the app already speaks a typed command protocol internally. The Agent API wraps
that surface in a Model Context Protocol (MCP) server that runs inside
the app, bound to 127.0.0.1 on an ephemeral port.
Recording uses the same main-process start path rather than a privileged shortcut: an agent can start, pause, resume and stop a take, and Cadre creates the floating recording controls. The countdown defaults on but can be disabled; screen/area highlighting and display dimming are conditional cues. Everything after the take — inspecting the timeline, zooming, cutting, captioning, styling and exporting — is available as tools your agent can call.
Read the complete open specification
The concise guide on this page is backed by three complete, server-rendered references. Each page also links its exact Markdown encoding for tools that prefer plain text.
- Agent API overview — discovery, MCP connection, authentication, lifecycle, security and errors.
- 62-tool reference — every parameter, constraint, result, error and worked workflow.
- Project format — the
.screencraftlayout, persisted fields and live-versus-offline editing boundary. - Public cross-agent skills and Claude plugin source — independently versioned standalone v1.1.0 with the MIT-licensed editing and motion-graphics skills plus the token-free local MCP bridge. Its dated compatibility record covers Cadre 1.0.0-rc.33's asynchronous 60-tool contract and background-job lifecycle; it is historical evidence, not the current release identifier or primary Work/Cowork setup guidance.
- Current compatibility evidence — authenticated rc.33 and standalone plugin v1.0.2 MCP initialization, exact ordered 60-tool discovery and one benign
get_app_statecall, with explicit non-proofs. - Earlier rc.20 compatibility evidence — the frozen record of the same plugin against rc.20's 57-tool surface, superseded by the rc.33 record above.
- Measured handshake evidence — the historical signed rc.18 build's reproducible 54-tool handshake and sanitized local latency record.
These documents describe the public local control surface. They do not expose Cadre's private application source code or create a hosted remote API.
Cadre Agent API at a glance
| Protocol | Model Context Protocol over stateless Streamable HTTP transports, with bounded boot-local state for long jobs. |
|---|---|
| Network boundary | Loopback only: 127.0.0.1 on an ephemeral port. It is not a hosted public API. |
| Authentication | A fresh 32-byte bearer token on every app launch, checked on every request. |
| Tool surface | 62 tools for recording, project inspection, cuts, zooms, camera layouts, captions, styles, audio, export, history, motion graphics and long-job lifecycle. |
| Primary setup | Reviewable editing-request handoffs for ChatGPT Work and Claude Cowork from Edit with AI. Claude Code, Codex and compatible MCP clients can use the same local control surface. |
| Mutation model | Agent edits use the same validated timeline actions, undo history, autosave and export licence gate as manual edits. |
| Privacy boundary | Projects and caption transcription stay on the Mac. A connected assistant can request project context through the tools and follows its provider's plan, permissions and data policy. |
Connect your desktop assistant
Install the ChatGPT or Claude desktop app on the same Mac as Cadre. Open a recording, choose Edit with AI, and write the result you want in What would you like to change?. Cadre includes the selected project ID and your brief in the request it prepares.
● Recording open ● Project included in the draft ● Request remains yours to send › Turn this into a concise customer tutorial. Keep the setup explanation, cut the pauses, focus the product and add clear captions.
ChatGPT Work
Click Connect & open. Cadre installs its local plugin and opens a ChatGPT draft with your brief and selected project. Review the draft, press Send, and keep ChatGPT and Cadre open while the assistant works. Later requests use Open in ChatGPT. Cadre refreshes the private local connection after restarts.
Claude Cowork
Click Set up Cowork. Cadre prepares a ZIP containing its editing and motion-graphics skills plus a token-free local bridge; no Node.js installation or terminal command is required. Upload that ZIP once in Claude's Customize → Plugins screen and enable Cadre. Then return to Cadre, choose Open in Cowork, review the prepared draft and press Send. Keep Claude Desktop and Cadre open while editing.
Cadre sells the recorder, editor, renderer and integrations. It includes no AI credits or Cadre-funded inference. Assistant usage comes from your own ChatGPT or Claude account and remains subject to that provider's plan, limits, permissions and data policy.
Coding agents and generic MCP clients
Claude Code and Codex remain supported local clients, and any compatible MCP client
can use the published control surface. Cadre's in-app setup installs the shared
cadre-editor and
cadre-motion-graphics workflows; developers can also use
the public plugin source
and the manual registration steps in the complete specification.
The public standalone v1.1.0 plugin and the v1.0.1 plugin bundled in Cadre 1.0.0-rc.20 require a local Node.js runtime. Cadre 1.0.0-rc.20 preflights Node before preparing its bundled archive. The historical signed rc.18 app does not preflight Node before preparing its earlier archive. The launchers locate a maintained Node.js 22, 24 or 26 release.
Auth & security
- Localhost only. The server binds to
127.0.0.1on an ephemeral port — never a public interface. - Bearer token on every request. A fresh 32-byte token is minted each boot; supplied and expected values are SHA-256 hashed, then the fixed-width digests are compared with
timingSafeEqual. - Owned long jobs. Imports, transcription and model downloads return immediately with a separate random job token. That exact token is required to poll or cancel, results expire after 15 minutes, and all job state disappears on restart.
- Recording uses the shared UI path. An agent can start, pause, resume and stop a recording; Cadre creates the floating recording controls. The countdown defaults on but can be disabled, while screen/area highlighting and display dimming are conditional cues. macOS TCC still governs desktop capture.
- Nothing you type is recorded. Cadre logs clicks, scrolls and shortcut combinations — never the characters you type. There is no typed text in a project for an agent to read, because none was ever written.
- The paywall still applies. Export is licence-gated server-side — an agent hits the same
LICENSE_REQUIREDgate the UI does, and cannot bypass it.
Tool reference (v1)
The v1 server exposes 62 tools. Calls validate their arguments and return verifiable results. Imports, transcription, caption generation and model downloads return a job receipt immediately, then use explicit status/result tools so a client's short call deadline cannot interrupt valid local work.
| Tool | What it does |
|---|---|
| get_app_state | Current app + license status and whether a project is open. |
| list_recording_sources / get_recording_status | Inspect recordable screens, windows, iOS devices, microphones, permissions and current capture state. |
| start_recording / stop_recording | Start a visible recording through the normal app UI, then finalise and open the new project. |
| pause_recording / resume_recording | Pause and continue a take without losing the completed segments. |
| cancel_recording | Destructively abandon a take; MCP clients mark this action as destructive. |
| list_projects | List indexed projects available to open. |
| open_project | Load a project and navigate the app to the editor. |
| import_video | Turn an MP4, MOV or other supported video into a Cadre project. |
| get_agent_job_status / get_agent_job_result / cancel_agent_job | Poll, read or cancel one owned long-running import, transcription or model-download job. |
| get_timeline | Snapshot the timeline: durations, zooms, cuts, speeds, captions. |
| map_time / analyze_audio | Convert preview timestamps and find real dead-air ranges. |
| get_recording_context / generate_transcript | Read private, time-aligned speech without adding visible captions. |
| get_interaction_context / analyze_visual_context | Understand clicks and on-screen text locally without image tokens. |
| get_video_frame | Request one small visual frame only when text context is insufficient. |
| get_edited_frame | Inspect the composited result after cuts, zooms, captions, overlays and styling. |
| add_zoom / update_zoom / delete_zoom | Manage cinematic zoom keyframes with spring easing. |
| add_cut / update_cut / delete_cut | Ripple-delete or adjust cut regions to remove dead air. |
| set_speed | Set a speed segment (with ramp in/out) over a time range. |
| add_mask / update_mask / delete_mask | Blur sensitive regions or spotlight part of the frame. |
| add_text_overlay / add_svg_overlay / update_overlay / delete_overlay | Add animated titles, callouts and graphics. |
| add_camera_layout / update_camera_layout / delete_camera_layout | Set the camera to fill the frame, sit in a corner or stay hidden over a span of the recording. |
| list_captions / add_caption / update_caption / delete_caption | Read and edit individual caption segments. |
| generate_captions | Transcribe the voiceover on-device with Whisper. |
| list_caption_models / download_caption_model / set_caption_style | Manage on-device transcription and caption presentation. |
| set_style | Update background, frame, cursor, keyboard, motion or webcam style. |
| set_music | Attach or update a background music track. |
| set_audio_gains | Balance system, mic and music levels. |
| undo / redo | Step the editor history backward or forward. |
| save_project | Persist the current edit state to disk. |
| export_video | Render the project to MP4 (licence-gated). |
| get_export_status | Poll progress of an in-flight export. |
| cancel_export | Cancel a running export. |
| get_license_status | Check licence state before exporting. |
Example prompts
You talk to your agent the way you'd talk to an editor. A few that map cleanly onto the tools above:
Tighten this demo.
The agent calls get_timeline, finds silent gaps and slow stretches, then add_cut to ripple-delete dead air and set_speed to ramp through the slow parts — turning a rambling take into a tight one.
Zoom on the terminal every time I click into it.
It reads the click and scroll activity from the interaction log and places add_zoom keyframes over those moments, letting Cadre's spring physics push in and ease back out around each one.
Caption it and export for X.
The agent runs generate_captions on-device, applies a caption style with set_style, then export_video and polls get_export_status until the MP4 is ready.
Errors
Failures come back as a structured { code, message, hint } object, so an agent can branch on the code rather than parse prose.
| Code | Meaning |
|---|---|
| EDITOR_NOT_AVAILABLE | No editor window is open to receive edit commands. |
| NO_PROJECT_OPEN | A project must be opened before editing. |
| LICENSE_REQUIRED | Export needs an active licence — the paywall, applied to agents too. |
| EXPORT_IN_PROGRESS | An export is already running; cancel or wait. |
| INVALID_ARGS | Tool arguments failed validation. |
| NOT_FOUND | The referenced project or timeline item does not exist. |
| INTERNAL | An unexpected error inside the app. |