Skip to main content
Glama

start_recording

Start a background recording session by opening a URL in headless Chromium. Add markers and chapters to narrate steps, then stop to upload and get a share link.

Instructions

Start a RECORDING SESSION: opens the given URL in a headless Chromium that keeps recording in the background while you continue working. Use add_marker to narrate (and optionally ASSERT on-screen state) at each step, add_chapter for before/after boundaries, then stop_recording to upload and get the share link. Set type for the recording kind, storageState/initScript to record behind a login, and exposeCdp to get a CDP endpoint you can drive with your own Playwright while it records. The session auto-stops and uploads by itself at maxSeconds (default 600) so a forgotten session can never run away. One session at a time. Requires Playwright + an ingest-scoped CLIPY_API_KEY (like the record tool). Recording the REAL Mac screen or a specific window (ScreenCaptureKit, real logged-in browser) is CLI-only — clipy session start --source mac-screen --window "<app>" — and not available via MCP. Quick per-cookie / per-localStorage-key injection (the CLI's --cookie / --local-storage) is CLI-only — use storageState here; and backdating a mark by a relative offset (the CLI's --ago) is CLI-only — use add_marker's atSeconds. The result reports the RESOLVED capture source (source: the post-redirect URL, page title and viewport actually being recorded) — compare it against the surface your driver is acting on BEFORE doing minutes of work, because Clipy will never focus or foreground a window or tab for you. This call waits for the initial navigation to settle before replying (bounded by the same 30s page-load timeout) so that reported source is measured rather than guessed — recording and the auto-stop rail both start immediately, so only the reply waits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe http(s) URL to open and record (e.g. http://localhost:3000).
nameNoOptional title for the recording.
typeNoWhat the recording IS, so the AI summary doesn't misread it. One of: bug_report, feature_request, product_demo, walkthrough_tutorial, feedback_review, discussion_talk, other (aliases like bug/feature/demo/tutorial/review/talk accepted).
widthNoViewport + video width (default 1280).
heightNoViewport + video height (default 720).
exposeCdpNoOpen a Chrome DevTools Protocol endpoint on the recording browser (default false) so you can drive the page (navigate/click/type) with your own Playwright WHILE it records. When on, the result returns cdpHttpUrl + cdpUrl and driver notes, AND the recorded page exposes window.__clipyMark(text, {assertSelector, assertText, assertUrl, failMode}) + window.__clipyChapter(label) so a CDP driver can drop asserted marks/chapters with zero extra tool calls. OFF by default (while open, any local process can attach). The env var CLIPY_DISABLE_CDP=1 is a hard kill switch that forces it off.
initScriptNoPath to a JS file run in the page before every navigation (context.addInitScript). Contents are never logged.
maxSecondsNoAuto-stop ceiling in seconds (default 600, hard cap 1800). On expiry the session uploads what it captured.
descriptionNoOptional description for the recording.
userDataDirNoPath to a Chromium user-data ROOT — the dir holding 'Local State' plus profile subdirs (macOS Chrome: ~/Library/Application Support/Google/Chrome). WITHOUT profileDirectory, Clipy opens this dir's 'Default' profile directly and writes to it, so it is refused while a live Chrome holds it locked (quit Chrome first). WITH profileDirectory, Clipy COPIES that named profile into a temporary root and records the copy — your real profile is never opened or modified. A profile SUBDIR passed as the root is refused. Mutually exclusive with storageState.
storageStateNoPath to a Playwright storageState JSON (cookies + localStorage) to record behind a login. Passed unchanged to the browser context; its contents are never logged. Mutually exclusive with userDataDir.
profileDirectoryNoWhich profile INSIDE userDataDir to record — 'Default', 'Profile 1', 'Profile 2', … (exact folder name from chrome://version → 'Profile Path'). Clipy COPIES that profile into a temporary scratch root (as its Default) and records the copy: your real profile is never opened or modified, and the copy is deleted after upload. The result discloses the copy. Requires userDataDir. (Playwright strips Chromium's --profile-directory, so copying is the only way to select a named profile.)
Behavior5/5

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

Discloses no annotations (empty), so description carries full burden. Details auto-stop at maxSeconds, single-session constraint, waiting for initial navigation, reporting resolved source, and that session starts immediately while only reply waits. Also explains CDP behavior and profile copying without modification.

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?

Description is long but well-structured: starts with core function, then groups parameter explanations and contrasts CLI features. Each sentence adds value, but some redundancy (e.g., explaining auto-stop twice) could be trimmed. Front-loaded with essential info.

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 tool complexity (12 parameters, headless recording, auto-stop, CDP), description covers behavioral nuances, constraints, and CLI alternatives. No output schema, but mentions result reports resolved source. Missing return schema details, but not required per guidelines.

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%, so baseline is 3. Description adds significant context beyond schema: explains type aliases, exposeCdp returns and window methods, mutual exclusivity of userDataDir and storageState, default value for maxSeconds, and purpose of initScript. Slightly verbose but informative.

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 the tool starts a headless Chromium recording session, opens a URL, and lists related tools (add_marker, add_chapter, stop_recording) and CLI-only alternatives. Distinguishes its role from siblings.

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?

Provides explicit when-to-use guidance: use add_marker to narrate, add_chapter for boundaries, stop_recording to upload. Also notes CLI-only alternatives for screen recording, cookie injection, and backdating marks, helping the agent decide which tool to invoke.

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

Install Server

Other Tools

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/manovagyanik1/clipy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server