servers / aioproductos-studio
AIOProductOS Studio MCP server
communitystdiolocalwrite capablehealthy
Your AI host becomes a product videographer — scripted app recordings, zooms, captions, MP4/GIF.
01Tools · 13
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| studio_start Start a recording session: launches a themed headless browser and begins capturing video. Returns the session config and the output directory. One session at a time — studio_finish or studio_cancel ends it. Set theme to the PRODUCT'S brand (bg = its app background — wrong bg causes visible flashes on page loads); use storage_state_path (a Playwright storageState JSON) to record logged-in areas without sharing credentials; list chat widgets / dev overlays / consent banners in hide_selectors so they never appear on tape. | write | true | unknown |
| studio_goto Navigate to a URL behind a designed transition card (eyebrow + big title on the theme background) — the viewer never sees a loading flash or half-hydrated page. Use for the opening shot AND every surface change; give each a short title so the cut reads as a chapter. Waits for real content (network settle + optional wait_for selector + skeleton loaders cleared) before lifting the card. | unknown | unknown | unknown |
| studio_caption Show (or replace) the bottom-left storyline caption — an eyebrow kicker plus one sentence that narrates the current beat. This is the film's voiceover in text form: keep it under ~12 words and leave it up 2–4s (studio_hold) so it reads. Pass clear=true to fade it out before a scene change. | read | false | unknown |
| studio_click Glide the visible cursor to a target and click it — the move is slow enough to read as deliberate action on camera. Target is a CSS selector, or visible text as a fallback. Fails with 'target not visible' if nothing matches; take a studio_screenshot to see the current frame and pick a better target. | write | true | unknown |
| studio_type Glide to an input and type text at a human pace (keystroke by keystroke — it reads as real usage, not a paste). Use realistic demo content; whatever you type is on tape. | unknown | unknown | unknown |
| studio_zoom Camera punch-in: smoothly zoom the page toward a target (CSS selector or visible text) — the money shot for a metric, button, or result. Captions stay screen-fixed; the content scales under them. ALWAYS studio_zoom with reset=true before navigating or showing the end card, or the next scene inherits the zoom. | unknown | unknown | unknown |
| studio_scroll Cubic-eased scroll to a Y position or to a target element — never a jump cut. Use between story beats to bring the next area into frame. | unknown | unknown | unknown |
| studio_highlight Draw an accent ring around a target (CSS selector or visible text), optionally with a label card beside it — the 'look here' callout. Scrolls the target into view first. Returns whether the target was found. Clear highlights (clear=true) before navigating or zooming elsewhere. | read | false | unknown |
| studio_screenshot Take a high-DPI (2x) screenshot of the current frame and save it as a PNG in the output directory. Works any time during a session — element-only via selector, or full_page for the whole scroll height. Returns the file path. Clear captions/rings first unless you want them in the shot. | unknown | unknown | unknown |
| studio_hold Hold the shot for a moment — glides to a target (optional) and keeps micro-drift so the recorder keeps emitting frames (a dead-static hold gets its tail frames dropped). Use after captions, highlights, and zooms: 2000–3000ms is a good beat. | unknown | unknown | unknown |
| studio_end_card Show the closing card — a centred glass card over the (still visible) product: title, optional subtitle and URL. The classic outro: what they saw + where to get it. Hold ~2.5s after this, then studio_finish. | read | false | unknown |
| studio_finish Stop recording and produce the final files: closes the browser, strips any residual dark frames deterministically (ffmpeg blackdetect → trim → re-encode), transcodes to a share-ready MP4 (H.264, faststart), and optionally a palette-optimized GIF. Returns every produced file with sizes and duration. Without ffmpeg on PATH you still get the raw WebM. | read | false | unknown |
| studio_cancel Abandon the current recording session: closes the browser and discards the tape. Nothing is written except screenshots already saved. Safe to call when no session is active (no-op). | unknown | unknown | unknown |
02Install & source
npx -y @aioproductoscom/mcp-studio
npx- repohttps://github.com/AIOProductOS/studio-mcp
- licenseMIT
- adoption0 stars · 0 forks
03Access granted
Browser automation · write
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-07-11 15:32Z
next_check2026-07-12 20:18Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex — 9 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/aioproductos-studio)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →