Que fait shotglass ?
Film through ShotGlass's connected MCP tools. Use the installed server's current schemas for tool names and parameters.
Start here
For a new demo, use two calls:
recording_prepare({app:"Notes", allowSystemDisplayPrompt:true})— substitute the requested app. Read the returned screenshot, refs andsnapshotId.compose({snapshotId, beats})— submit the whole sequence once. ShotGlass films it, restores the windows, and opens the project in its editor.
Build beats from the returned state: {ref:"<returned ref>"}, {type:"text"}, {key:"cmd+s"}, or {point:{x,y},action:"click"}. Replace placeholders with actual returned values. Screenshot points are screenshot.origin + image coordinates. Use stable keyboard navigation for dialogs and include expectedFiles when the demonstrated task saves files.
Deliver what was requested
- Film a demo: leave styling and output options unset. Keep original framing and the editable cursor, then open the editor.
- Film and render: set
output:{mode:"video"}in the samecomposecall. Report the returneddelivery.videoPath. - Apply automatic styling or zooms: set
naturalStyle:trueonly when requested. - Edit an existing recording: inspect the intended project with the editor tools, then apply the requested edits. Render only when asked.
Prefer refs for background actions. Coordinate actions can require real input. Set allowRealInput:true only with existing user authorization, otherwise let ShotGlass request approval. Reuse one ShotGlass instance and submit planned actions together rather than using a host action loop or a different recorder.
If blocked
If tools are missing, read setup. The app and MCP server must run on the Mac being filmed.
If permissions, an alert or cancellation interrupt filming, preserve the returned project and report the specific blocker. Do not blindly retry or dismiss an alert that changes user data. The two-call path applies to a prepared, plannable demo, not a requirement to pretend a failed take completed.