Skip to main content
Glama

AIOProductOS Studio · MCP

Your AI teammate becomes your product videographer. Studio is an MCP server that records scripted walkthroughs of your own web app — a visible cursor that glides to every click, camera punch-ins, highlight callouts, storyline captions, designed scene transitions — and takes marketing-grade screenshots. Tell your AI host what story to shoot; get back a share-ready MP4.

The videos PMs hate making — demo clips, explainers, changelog GIFs, launch screenshots — become one prompt.

Free · MIT · runs 100% locally (your browser, your URLs, your logged-in session — nothing is uploaded anywhere). By AIOProductOS, built from the same pipeline we use for our own launch videos.

Install

# Claude Code
claude mcp add studio -- npx -y @aioproductoscom/mcp-studio

# Cursor / Codex — .mcp.json
{ "mcpServers": { "studio": { "command": "npx", "args": ["-y", "@aioproductoscom/mcp-studio"] } } }

Requirements: Node 18+, Playwright Chromium (npx playwright install chromium, one-time), and ffmpeg on PATH for MP4/GIF export (brew install ffmpeg — without it you still get the raw WebM).

Related MCP server: autodemo

Use

Then just direct the film:

"Record a 30-second walkthrough of https://app.example.com — theme it to our brand (#0d1117 bg, #f97316 accent), open on the dashboard with the title 'Meet Example', caption the three key features, zoom in on the analytics chart, and end with 'Start free · example.com'. Also grab a hero screenshot."

Your host runs the shoot tool by tool; files land in ./studio-output/.

The tools

Tool

What it does

studio_start

open a themed recording browser (viewport, brand colors, logged-in state)

studio_goto

navigate behind a designed title card — no loading flashes on tape

studio_click / studio_type

cursor glides to the target; typing is human-paced

studio_scroll

cubic-eased scroll, never a jump cut

studio_caption

bottom-left storyline caption (the "voiceover" in text)

studio_narrate

spoken voice-over with NO on-screen caption; holds the shot under the line

studio_highlight

accent ring + label callout around any element or visible text

studio_zoom

smooth camera punch-in on a metric, button, or result

studio_hold

hold the shot (micro-drift keeps frames flowing)

studio_end_card

closing glass card: title, subtitle, CTA URL

studio_screenshot

high-DPI PNG of the frame, an element, or the full page

studio_finish

stop, auto-remove dark frames, export MP4 (+ optional GIF)

studio_cancel

abandon the take

Recording logged-in areas

Studio never sees your credentials. Save a Playwright storageState once (npx playwright codegen --save-storage=auth.json https://app.example.com), then pass storage_state_path: "auth.json" to studio_start.

Keeping junk off the tape

  • Cookie banner? Pass your consent cookie via cookies so it never mounts.

  • Chat bubble / dev overlay? List selectors in hide_selectors — hidden from frame 1.

  • Wrong flash color on page loads? Set theme.bg to your app's real background.

Why it looks good (the hard-won part)

No white flash on page commits (the theme background paints before any page CSS), no black frames (navigations hide behind designed title cards, and residual dark frames are detected and cut deterministically with ffmpeg), no stutter (every camera move is compositor-friendly easing), and action that reads on camera (a visible cursor glides to every target before it acts).

MIT © AIOProductOS Inc.

Available Tools

14 tools
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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully covers behavior: idempotent (no-op), destructive (discards tape), but only screenshots preserved. Excellent disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences, no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully sufficient for a parameterless tool with no output schema. Covers purpose, effect, safety, and idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0 parameters with 100% coverage. Baseline 3 applies; no additional parameter info needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Abandon the current recording session' with specific verb and resource, and explains consequences (closes browser, discards tape). Distinguishes from sibling tools like studio_start or studio_finish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: safe to call when no session active (no-op). Does not explicitly contrast with siblings like studio_finish, but usage is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

studio_captionA

Show (or replace) the bottom-left storyline caption — an eyebrow kicker plus one sentence that narrates the current beat. 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. The caption_text is ALSO recorded as the voice-over script: if you call studio_finish with voiceover:true it's spoken aloud (locally) timed to this moment — write captions as speakable sentences. Set no_voice:true for a caption you want on screen but NOT narrated.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoFade the caption out instead of showing one.
eyebrowNoSmall uppercase kicker, e.g. 'STEP 1' or the feature name.
no_voiceNoShow the caption but exclude it from the voice-over track (optional).
caption_textNoOne narrating sentence (keep it short — it's on screen and, with voiceover:true, spoken).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses that caption_text is also recorded as voice-over script, that clear fades out the caption, and that no_voice excludes from narration. It does not fully clarify whether multiple calls stack or replace, but the phrase 'show (or replace)' implies replacement. Minor gaps exist but overall transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and is reasonably concise. Every sentence adds value, but it could be slightly streamlined without losing information. Slight verbosity around the voice-over explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, no output schema, no annotations), the description covers the tool's behavior, constraints, and relationships to studio_hold and studio_finish. It does not discuss return values or errors, but for a UI caption tool this is acceptable. Overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, yet the description adds significant meaning: explains that caption_text doubles as voice-over script, describes eyebrow as 'small uppercase kicker', and clarifies that clear fades out and no_voice excludes from narration. This goes far beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'show (or replace) the bottom-left storyline caption'. It specifies the resource (storyline caption) and action (show/replace), and distinguishes from sibling tools by mentioning the voice-over relationship and alternative usage via no_voice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly describes when to use the tool (narrate the current beat), constraints (under ~12 words, leave up 2-4s using studio_hold), and specific cases like clearing captions with clear=true or suppressing narration with no_voice=true. It also ties to studio_finish for voice-over, giving clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

studio_clickA

Glide the visible cursor to a target and click it, slow enough to read as a deliberate action on camera. Use for every button / link / menu interaction in the walkthrough. Precondition: the target must be on screen — studio_goto or studio_scroll to it first if it isn't. Prefer a stable CSS selector; fall back to visible text. After clicking it waits for the page to settle and re-applies the theme overlays, so the next beat is on a hydrated page. Returns 'clicked ', or errors 'target not visible' — then take a studio_screenshot and pick a better target.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesCSS selector (preferred, e.g. '[data-testid=save]' or 'nav a.pricing') or the exact visible text of the element. Must resolve to one visible element.
settle_msNoPause after the cursor arrives, before the click fires, in milliseconds. Optional; default 360. Raise (e.g. 600) for a more deliberate beat.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It discloses the deliberate slow glide, post-click waiting for page settle, re-application of theme overlays, and return values/error messages. No hidden destructive behavior is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, each earning its place. Core action is first, followed by usage guidance, preconditions, selector strategy, and post-click behavior. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema or annotations, the description covers all critical aspects: return values, error conditions, post-click behavior, and parameter details. It also suggests adjacent tools for preconditions, completing the contextual picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3, but description adds significant value: explains target can be CSS selector or visible text with examples, and for settle_ms gives default, allowed values, and purpose ('more deliberate beat'). This exceeds baseline expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Glide the visible cursor to a target and click it' for walkthroughs. It distinguishes from sibling tools by specifying the deliberate slow motion and on-camera context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use for every button/link/menu interaction in the walkthrough.' Provides preconditions (target must be on screen, use studio_goto/studio_scroll first) and fallback strategy (CSS selector preferred, visible text as fallback). Also instructs on error handling: take screenshot and pick better target.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoCall-to-action URL shown beneath the title, e.g. 'aioproductos.com'. Optional; shown as text, not a live link.
titleYesBig closing line — the product name or the one-line takeaway. Required. Example: 'AIOProductOS'.
subtitleNoOne supporting line under the title, e.g. a tagline. Optional.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries the burden. It details visual behavior (centred glass card over still visible product), timing (~2.5s hold), and clarifies that the URL is shown as text, not a live link. This provides adequate transparency for the agent to understand the effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no wasted words. It front-loads the purpose ('Show the closing card') and immediately follows with visual and functional details. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple UI tool with 3 parameters and no output schema, the description covers the visual output, behavior, and integration with studio_finish. It does not mention error scenarios or edge cases, but for typical use, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value beyond the schema: it clarifies that the subtitle is 'one supporting line under the title', the title is 'the big closing line', and the URL is displayed as text, not a link. These details enrich the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool shows a closing card with a title, optional subtitle, and URL, placed as a centred glass card over the visible product. It distinguishes itself by specifying it is 'the classic outro' and explicitly mentions the subsequent step (studio_finish), differentiating it from siblings like studio_caption or studio_highlight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage hint: 'Hold ~2.5s after this, then studio_finish', indicating this tool should be used before studio_finish as the closing step. It does not explicitly state when not to use or mention alternatives, but the context of a sequence makes the guidance sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

studio_finishA

Stop recording and produce the final files: closes the browser, strips residual dark frames (ffmpeg blackdetect → trim), transcodes to a share-ready MP4 (H.264, faststart), then — optionally — narrates the caption lines with a LOCAL voice (no cloud/keys), lays down a music bed, writes/burns subtitles, and exports vertical/square social crops, plus a GIF. Voice-over timing is auto-corrected for the frames the deblack step removed. Returns every produced file with size + duration. Without ffmpeg you still get the raw WebM.

ParametersJSON Schema
NameRequiredDescriptionDefault
gifNoAlso export a compact GIF (optional; default false).
nameYesBase file name for the video (without extension), e.g. 'onboarding-walkthrough'.
musicNoPath to a local audio file for a background music bed, looped and ducked under the voice-over (optional).
voiceNoSystem voice name (optional), e.g. macOS 'Samantha' or 'Daniel'; falls back to the OS default voice.
aspectsNoExtra social crops to export beside the 16:9 master, e.g. ['9:16','1:1'] for Reels/TikTok/feed. Padded with the theme background.
subtitlesNo'srt' writes a sidecar .srt from the caption lines; 'burn' also renders them into the picture (muted-autoplay social); 'none' (default).
voiceoverNoNarrate the caption / studio_narrate lines with a local, offline voice (macOS say · piper · espeak-ng). No account, no API key. Default false.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels. It discloses all important behaviors: closes the browser, strips dark frames, transcodes, local voice narration, music bed, subtitles, social crops, GIF generation, auto-correction of voice timing, and return of file info. This is very transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized for a complex tool with many features. It front-loads the core purpose and then expands. While lengthy, every sentence adds value. Could be slightly more concise, but highly efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, no output schema, no annotations), the description is remarkably complete. It covers the entire workflow, fallback case, and return value details. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description adds workflow context but does not add meaning beyond what the parameter descriptions already provide. No additional parameter details are given in the main description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (Stop recording and produce) and clearly identifies the resource (final files). It lists the major actions (closes browser, strips frames, transcodes, voice-over, subtitles, crops, GIF) and distinguishes from sibling tools like studio_start and studio_caption by being the finishing tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates when to use (after recording, to finalize) and provides a fallback scenario ('Without ffmpeg you still get the raw WebM'). However, it does not explicitly exclude alternative tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute URL to navigate to, including scheme. Example: 'https://app.example.com/dashboard'.
titleNoBig title on the transition card — usually the surface name. Optional but recommended so each cut reads as a chapter.
eyebrowNoSmall uppercase kicker on the transition card, e.g. 'DASHBOARD'. Optional.
dwell_msNoMinimum time the card stays up so the title reads, in milliseconds. Optional; default 1200.
wait_forNoCSS selector that must be visible before the card lifts (on top of network-settle + skeleton clearing). Optional; use it when the real content is gated behind a spinner. Example: '[data-loaded=true]'.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It details that the tool waits for network settle, optional wait_for selector, and skeleton loaders before lifting the card, which is good behavioral transparency. It does not mention auth or rate limits, but these are less critical for a navigation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but well-structured, front-loading the purpose, then usage, then behavior. It is concise yet informative, though could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, one required, and no output schema, the description covers the tool's behavior (transition card, waiting conditions) well. It omits return values but that's acceptable without an output schema. The context is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds minimal value beyond the schema. For example, it adds 'usually the surface name' for title and example 'DASHBOARD' for eyebrow, but these are marginal. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool navigates to a URL with a transition card to avoid loading flash. It distinguishes from sibling tools like studio_click (click action) and studio_narrate, etc., making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using this for 'the opening shot AND every surface change', giving clear context for when to invoke it. However, it does not explicitly state when not to use it or compare with alternatives like studio_click for navigation, slightly limiting the guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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. Side effects: scrolls the target into view, then overlays a ring (and card) in the theme accent; rings stack until cleared. Returns 'highlighted ' when the element is found, or errors 'target not found: ' when it isn't — retry with a studio_screenshot to pick a better target. Always call with clear=true before you navigate, zoom, or ring a different element, so stale rings don't linger on the next shot.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNotrue removes ALL current rings/labels and ignores the other fields. Default false (draw a new one).
labelNoText of the label card shown beside the ring. Optional — omit for a ring with no card. Ignored when clear=true.
targetNoCSS selector or exact visible text of the element to ring. Required unless clear=true. Example: '.metric-card' or 'Monthly revenue'.
eyebrowNoSmall uppercase kicker on the label card, e.g. 'RESULT'. Optional; ignored when clear=true.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses side effects: scrolling into view, overlaying rings, stacking until cleared. Also describes return values for success and failure, and advises retrying with studio_screenshot. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with front-loaded purpose. Every sentence is informative and necessary—no fluff. It efficiently covers behavior, usage, and return values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 4 parameters without nesting, the description covers all needed details: side effects, error handling, best practices, and parameter semantics. No apparent gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already provides descriptions for all 4 parameters (100% coverage). The description adds value by explaining the interaction between clear and other parameters, giving example values like '.metric-card' or 'Monthly revenue', and clarifying that label and eyebrow are optional. This goes beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly defines the tool as drawing an accent ring around a target (CSS selector or visible text) with an optional label card. It distinguishes itself from sibling tools like studio_screenshot or studio_click by explicitly calling it a 'look here' callout.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance to call clear=true before navigation, zoom, or changing target to avoid stale rings. Mentions retrying with studio_screenshot on error. However, it does not explicitly compare with sibling tools like studio_cancel for clearing rings, nor state when not to use this tool beyond the clear advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
msNoHold duration in milliseconds. Optional; default 2200. A good beat after a caption/highlight/zoom is 2000–3000.
targetNoCSS selector or visible text to glide the cursor to and rest on. Optional — omit to hold in place. Example: '.cta-button'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the key behavior: gliding to an optional target and keeping micro-drift to avoid dead-static hold frame drops. Does not cover all edge cases but provides critical insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loads the action and purpose, then adds usage guidance. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but for a simple hold tool the description covers purpose, usage context, parameter details, and a behavioral nuance (micro-drift). Missing some edge cases but adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds context: explains that 'target' is optional and gives an example, and clarifies that 'ms' has a default of 2200 with a suggested range. Adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Hold the shot') and resource, distinguishing it from siblings like studio_click or studio_scroll by focusing on pausing with micro-drift to keep tail frames.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends usage after captions, highlights, and zooms, and suggests a typical duration (2000–3000ms). Does not explicitly mention when not to use or alternatives, but context from sibling tools implies them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

studio_narrateA

Record a line of voice-over WITHOUT putting a caption on screen — narration spoken over the action. The line is synthesized locally at studio_finish (needs voiceover:true). Holds the shot afterward so there's footage under the line; set hold_ms to roughly the length of the sentence when spoken (~400ms/word).

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesThe sentence to narrate (spoken, not shown on screen).
hold_msNoHold the shot after recording the line so footage covers it (optional; default 2600).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description provides key behavioral traits: the line is synthesized at studio_finish, it holds the shot, and hold_ms controls duration. This adds value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. The main action is front-loaded, and every clause adds necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters and no output schema, the description covers core behavior, duration guidance, and dependency on studio_finish. Minor omission: no mention of errors or audio limits, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds nuance: 'spoken, not shown' for line and guidance for hold_ms based on word rate. This enriches the schema's documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it records voice-over without a caption, distinguishing it from sibling tools like studio_caption. The verb 'Record' and resource 'voice-over' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use (before studio_finish with voiceover:true) and how to set hold_ms based on sentence length. However, it doesn't explicitly mention when not to use, though the sibling list implies alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFile name without extension; slugified to lowercase-dashes. e.g. 'dashboard-hero' → dashboard-hero.png in the output dir. Reused names overwrite.
selectorNoCapture just this element (CSS selector) instead of the viewport. Optional. When set, full_page is ignored.
full_pageNotrue captures the entire scroll height, not just the visible viewport. Optional; default false. Ignored when selector is set.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses high-DPI (2x), PNG format, output directory, file path return, and effect of captions/rings. No annotations provided, so description carries full burden and does well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, no fluff, front-loaded main action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, modes, return value, and a caveat. Missing details on error handling or overwrite behavior, but sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all three parameters. Description restates the modes but adds no new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Take a screenshot', resource 'current frame', output format 'PNG', and high-DPI detail. Uniquely identifiable among sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context of when it works ('any time during a session') and two modes (element-only or full_page). Includes a preparatory note about clearing captions. No explicit exclusions needed as no sibling overlaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

studio_scrollA

Cubic-eased scroll to an absolute Y offset or until a target element is in view — never a jump cut. Use between story beats to bring the next area on camera. Side effect: changes only the page scroll position (no click, no navigation). Pass exactly ONE of to_y or to_target. Returns 'scrolled' on completion. To reveal an off-screen element before studio_click or studio_highlight, scroll to it first.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_yNoAbsolute vertical offset from the top of the page, in pixels (≥0). Use this OR to_target, not both. Example: 1200.
to_targetNoCSS selector to bring into view (scrolled toward center). Use this OR to_y. Example: '#pricing' or 'section.features'.
duration_msNoScroll animation length in milliseconds. Optional; default 1300. Larger = calmer, slower glide (e.g. 2000); smaller = snappier.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses smooth scrolling (never a jump cut), side effect (only page scroll position, no click/navigation), and return value ('scrolled' on completion). Fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with core action, each sentence provides essential information without redundancy. Very concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description covers all necessary aspects: parameters, behavior, side effects, return value, and usage context. Complete for a scroll tool with clear, thorough guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions. The description adds value by specifying mutual exclusivity of to_y and to_target, and explicitly states the default duration of 1300 ms, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool scrolls with cubic easing to a Y offset or target element, never with a jump cut. It distinguishes from siblings by emphasizing it's purely scroll, no click or navigation, and is used between story beats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use between story beats to bring the next area on camera' and advises to scroll before studio_click or studio_highlight to reveal off-screen elements. Provides clear context and suggests alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoVisual theme for overlays/transitions — use the recorded product's brand.
widthNoViewport width in px (optional; default 1280).
heightNoViewport height in px (optional; default 720).
cookiesNoCookies to pre-set, e.g. your consent cookie so banners never mount (optional).
show_cursorNoVisible on-screen cursor that glides to targets (default true).
color_schemeNoprefers-color-scheme for the page (default dark).
hide_selectorsNoCSS selectors to hide from frame 1 (chat bubbles, cookie banners, dev overlays).
storage_state_pathNoPath to a Playwright storageState JSON for logged-in recording (optional).

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It details the behavior: launches a headless browser, captures video, returns config and output directory. It also warns about incorrect background causing flashes and explains the purpose of storage_state_path for credential-free recording.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that efficiently conveys purpose, constraints, and parameter guidance. It is front-loaded with the primary action and then adds details, though it could benefit from slight structural separation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (8 parameters, nested theme object, no output schema), the description covers all essential aspects: return value, single-session constraint, parameter usage tips, and important caveats. It feels complete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning beyond the schema. For example, it explains that theme.bg should match the app background to avoid flashes, and that hide_selectors removes UI elements. It provides practical guidance for using storage_state_path and cookies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair: 'Start a recording session'. It clearly distinguishes from siblings like studio_finish and studio_cancel by stating that one session is active at a time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states that only one session can run and must be ended with studio_finish or studio_cancel. Provides context for when to use parameters like theme and hide_selectors, but does not explicitly list when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
delay_msNoPer-keystroke delay in milliseconds. Optional; default 45. Lower = faster typing (e.g. 25); higher = more deliberate.
selectorYesCSS selector of the input, textarea, or contenteditable to type into, e.g. 'input[name=email]'. Must be focusable and visible.
input_textYesThe literal text to type; it appears on tape keystroke by keystroke, so use realistic demo content (never real secrets).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It discloses that typing is keystroke-by-keystroke (not a paste) and that input appears on tape, implying recording. However, it does not detail error handling or idempotency, which is acceptable for a straightforward typing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that immediately convey the tool's action and key behavioral nuances. Front-loaded with the verb 'glide to an input and type'—no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a typing tool with full schema coverage and no output schema, the description plus schema provide sufficient context. The behavior (keystroke-by-keystroke, recording awareness) is adequately described, though absence of return value mention is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds marginal value by suggesting 'demo content' for input_text and implying human pace for delay_ms, but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: typing text at a human pace keystroke by keystroke, distinguishing from pasting. The verb 'type' and resource 'input' are specific, and the context of studio tools makes differentiation from siblings natural.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context (use realistic demo content, aware of recording) but does not explicitly state when to use this tool vs. alternatives. No exclusions or when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
resetNotrue eases the camera back to 1:1 (call before navigating or showing the end card, or the next scene inherits the zoom). Ignores target/zoom_scale. Default false.
targetNoCSS selector or visible text to punch in on (centered). Required unless reset=true. Example: '.big-number' or 'Sign up'.
zoom_scaleNoZoom factor (>1). Optional; default 1.7. Keep ≤2.2 — beyond that the page pixelates. Ignored when reset=true.
duration_msNoZoom animation length in milliseconds. Optional; default 1100.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description reveals key behaviors: captions stay screen-fixed while content scales, and failure to reset causes the zoom to persist. This adds significant context beyond the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences pack the core action and the critical usage rule without superfluous words. Front-loaded with the main verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zoom tool with no output schema, the description covers the action, special behavior (captions fixed), and the essential reset requirement. It is sufficiently complete for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters with descriptions. The description reinforces the importance of 'reset' and the default for 'zoom_scale', but doesn't add new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Camera punch-in: smoothly zoom the page toward a target (CSS selector or visible text)'. It uses specific verb and resource, and the unique zooming action distinguishes it from sibling tools like studio_click or studio_highlight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidelines are given: 'ALWAYS studio_zoom with reset=true before navigating or showing the end card, or the next scene inherits the zoom.' This tells when to use the tool and when not to (i.e., without reset before navigation).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv0.1.3
    • Changedstudio_caption2 fields changed
      • changedInput schema / properties / caption_text / description
        Previous value: -"One narrating sentence (keep it short — it's on screen)."New value: +"One narrating sentence (keep it short — it's on screen and, with voiceover:true, spoken)."
      • addedInput schema / properties / no_voice
        Added value: +{
        +  "description": "Show the caption but exclude it from the voice-over track (optional).",
        +  "type": "boolean"
        +}
    • Changedstudio_click4 fields changed
      • changedInput schema / properties / settle_ms / description
        Previous value: -"Pause after the glide before clicking (optional; default 360)."New value: +"Pause after the cursor arrives, before the click fires, in milliseconds. Optional; default 360. Raise (e.g. 600) for a more deliberate beat."
      • addedInput schema / properties / settle_ms / minimum
        Added value: +0
      • changedInput schema / properties / settle_ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / target / description
        Previous value: -"CSS selector, or visible text of the element to click."New value: +"CSS selector (preferred, e.g. '[data-testid=save]' or 'nav a.pricing') or the exact visible text of the element. Must resolve to one visible element."
    • Changedstudio_end_card3 fields changed
      • changedInput schema / properties / subtitle / description
        Previous value: -"One supporting line (optional)."New value: +"One supporting line under the title, e.g. a tagline. Optional."
      • changedInput schema / properties / title / description
        Previous value: -"Big closing line, e.g. the product name or the takeaway."New value: +"Big closing line — the product name or the one-line takeaway. Required. Example: 'AIOProductOS'."
      • changedInput schema / properties / url / description
        Previous value: -"Call-to-action URL shown under the title (optional)."New value: +"Call-to-action URL shown beneath the title, e.g. 'aioproductos.com'. Optional; shown as text, not a live link."
    • Changedstudio_finish5 fields changed
      • addedInput schema / properties / aspects
        Added value: +{
        +  "description": "Extra social crops to export beside the 16:9 master, e.g. ['9:16','1:1'] for Reels/TikTok/feed. Padded with the theme background.",
        +  "items": {
        +    "enum": [
        +      "9:16",
        +      "1:1"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / music
        Added value: +{
        +  "description": "Path to a local audio file for a background music bed, looped and ducked under the voice-over (optional).",
        +  "type": "string"
        +}
      • addedInput schema / properties / subtitles
        Added value: +{
        +  "description": "'srt' writes a sidecar .srt from the caption lines; 'burn' also renders them into the picture (muted-autoplay social); 'none' (default).",
        +  "enum": [
        +    "none",
        +    "srt",
        +    "burn"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / voice
        Added value: +{
        +  "description": "System voice name (optional), e.g. macOS 'Samantha' or 'Daniel'; falls back to the OS default voice.",
        +  "type": "string"
        +}
      • addedInput schema / properties / voiceover
        Added value: +{
        +  "description": "Narrate the caption / studio_narrate lines with a local, offline voice (macOS say · piper · espeak-ng). No account, no API key. Default false.",
        +  "type": "boolean"
        +}
    • Changedstudio_goto8 fields changed
      • changedInput schema / properties / dwell_ms / description
        Previous value: -"Minimum time the card stays up so the title reads (optional; default 1200)."New value: +"Minimum time the card stays up so the title reads, in milliseconds. Optional; default 1200."
      • addedInput schema / properties / dwell_ms / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / dwell_ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / eyebrow / description
        Previous value: -"Small uppercase kicker on the transition card (optional)."New value: +"Small uppercase kicker on the transition card, e.g. 'DASHBOARD'. Optional."
      • changedInput schema / properties / title / description
        Previous value: -"Big title on the transition card, e.g. the surface name (optional)."New value: +"Big title on the transition card — usually the surface name. Optional but recommended so each cut reads as a chapter."
      • changedInput schema / properties / url / description
        Previous value: -"Absolute URL to navigate to."New value: +"Absolute URL to navigate to, including scheme. Example: 'https://app.example.com/dashboard'."
      • addedInput schema / properties / url / format
        Added value: +"uri"
      • changedInput schema / properties / wait_for / description
        Previous value: -"CSS selector that must be visible before the card lifts (optional)."New value: +"CSS selector that must be visible before the card lifts (on top of network-settle + skeleton clearing). Optional; use it when the real content is gated behind a spinner. Example: '[data-loaded=true]'."
    • Changedstudio_highlight4 fields changed
      • changedInput schema / properties / clear / description
        Previous value: -"Remove all rings/labels instead of adding one."New value: +"true removes ALL current rings/labels and ignores the other fields. Default false (draw a new one)."
      • changedInput schema / properties / eyebrow / description
        Previous value: -"Small kicker on the label card (optional)."New value: +"Small uppercase kicker on the label card, e.g. 'RESULT'. Optional; ignored when clear=true."
      • changedInput schema / properties / label / description
        Previous value: -"Label card text beside the ring (optional; ring-only without it)."New value: +"Text of the label card shown beside the ring. Optional — omit for a ring with no card. Ignored when clear=true."
      • changedInput schema / properties / target / description
        Previous value: -"CSS selector, or visible text, of the element to ring."New value: +"CSS selector or exact visible text of the element to ring. Required unless clear=true. Example: '.metric-card' or 'Monthly revenue'."
    • Changedstudio_hold4 fields changed
      • changedInput schema / properties / ms / description
        Previous value: -"Hold duration in ms (optional; default 2200)."New value: +"Hold duration in milliseconds. Optional; default 2200. A good beat after a caption/highlight/zoom is 2000–3000."
      • addedInput schema / properties / ms / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / target / description
        Previous value: -"CSS selector or visible text to rest the cursor on (optional)."New value: +"CSS selector or visible text to glide the cursor to and rest on. Optional — omit to hold in place. Example: '.cta-button'."
    • Addedstudio_narrate
    • Changedstudio_screenshot3 fields changed
      • changedInput schema / properties / full_page / description
        Previous value: -"Capture the full scroll height (optional; default false)."New value: +"true captures the entire scroll height, not just the visible viewport. Optional; default false. Ignored when selector is set."
      • changedInput schema / properties / name / description
        Previous value: -"File name (without extension), e.g. 'dashboard-hero'."New value: +"File name without extension; slugified to lowercase-dashes. e.g. 'dashboard-hero' → dashboard-hero.png in the output dir. Reused names overwrite."
      • changedInput schema / properties / selector / description
        Previous value: -"Capture just this element (optional)."New value: +"Capture just this element (CSS selector) instead of the viewport. Optional. When set, full_page is ignored."
    • Changedstudio_scroll6 fields changed
      • changedInput schema / properties / duration_ms / description
        Previous value: -"Scroll duration (optional; default 1300)."New value: +"Scroll animation length in milliseconds. Optional; default 1300. Larger = calmer, slower glide (e.g. 2000); smaller = snappier."
      • addedInput schema / properties / duration_ms / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / duration_ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / to_target / description
        Previous value: -"CSS selector to scroll into view (use this OR to_y)."New value: +"CSS selector to bring into view (scrolled toward center). Use this OR to_y. Example: '#pricing' or 'section.features'."
      • changedInput schema / properties / to_y / description
        Previous value: -"Absolute Y position in px (use this OR to_target)."New value: +"Absolute vertical offset from the top of the page, in pixels (≥0). Use this OR to_target, not both. Example: 1200."
      • addedInput schema / properties / to_y / minimum
        Added value: +0
    • Changedstudio_type5 fields changed
      • changedInput schema / properties / delay_ms / description
        Previous value: -"Per-keystroke delay (optional; default 45)."New value: +"Per-keystroke delay in milliseconds. Optional; default 45. Lower = faster typing (e.g. 25); higher = more deliberate."
      • addedInput schema / properties / delay_ms / minimum
        Added value: +0
      • changedInput schema / properties / delay_ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / input_text / description
        Previous value: -"Text to type."New value: +"The literal text to type; it appears on tape keystroke by keystroke, so use realistic demo content (never real secrets)."
      • changedInput schema / properties / selector / description
        Previous value: -"CSS selector of the input/textarea/contenteditable."New value: +"CSS selector of the input, textarea, or contenteditable to type into, e.g. 'input[name=email]'. Must be focusable and visible."
    • Changedstudio_zoom8 fields changed
      • changedInput schema / properties / duration_ms / description
        Previous value: -"Zoom duration (optional; default 1100)."New value: +"Zoom animation length in milliseconds. Optional; default 1100."
      • addedInput schema / properties / duration_ms / exclusiveMinimum
        Added value: +0
      • changedInput schema / properties / duration_ms / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / reset / description
        Previous value: -"Ease the camera back to 1:1 instead of zooming."New value: +"true eases the camera back to 1:1 (call before navigating or showing the end card, or the next scene inherits the zoom). Ignores target/zoom_scale. Default false."
      • changedInput schema / properties / target / description
        Previous value: -"CSS selector, or visible text, to punch in on."New value: +"CSS selector or visible text to punch in on (centered). Required unless reset=true. Example: '.big-number' or 'Sign up'."
      • changedInput schema / properties / zoom_scale / description
        Previous value: -"Zoom factor (optional; default 1.7; keep ≤2.2)."New value: +"Zoom factor (>1). Optional; default 1.7. Keep ≤2.2 — beyond that the page pixelates. Ignored when reset=true."
      • addedInput schema / properties / zoom_scale / maximum
        Added value: +2.2
      • addedInput schema / properties / zoom_scale / minimum
        Added value: +1
  2. 13 tool updatesv0.1.0
    • First observedstudio_cancel
    • First observedstudio_caption
    • First observedstudio_click
    • First observedstudio_end_card
    • First observedstudio_finish
    • First observedstudio_goto
    • First observedstudio_highlight
    • First observedstudio_hold
    • First observedstudio_screenshot
    • First observedstudio_scroll
    • First observedstudio_start
    • First observedstudio_type
    • First observedstudio_zoom

TDQS

A4.5/5.0
Disambiguation5/5

Each tool serves a unique, clearly defined function in the recording workflow (start, navigate, click, type, scroll, zoom, highlight, caption, narrate, hold, screenshot, end card, cancel, finish). There is no ambiguity or overlap.

Naming Consistency5/5

All tools follow a consistent 'studio_verb' pattern (e.g., studio_start, studio_click, studio_finish). The naming is uniform and predictable.

Tool Count5/5

14 tools cover the full range of operations needed for recording a product walkthrough—from session control to interactions, media capture, and final output—without being excessive or sparse.

Completeness5/5

The tool surface provides a complete lifecycle: session management, navigation, interaction, visual cues, voiceover, screenshots, and finalization. All essential operations are present, including edge-case handling like cancellation.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

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