AIOProductOS Studio
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| studio_startA | 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. |
| studio_gotoA | 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. |
| studio_clickA | 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. |
| studio_typeA | 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. |
| studio_scrollA | 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. |
| studio_captionA | 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. |
| studio_highlightA | 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. |
| studio_zoomA | 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. |
| studio_holdA | 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. |
| studio_end_cardA | 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. |
| studio_screenshotA | 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. |
| studio_finishA | 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. |
| studio_cancelA | 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). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIOProductOS/studio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server