Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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