DocsMCP server
Docs

The MCP server

Connect any MCP-compatible agent to Rendemo: the endpoint, the Bearer token, and the full tool reference generated from the server's own registry.

Connecting directly

Rendemo ships a built-in MCP server, so agents — Claude Code, Claude.ai, or anything MCP-compatible — can produce, improve and ship interactive demos end to end.

Endpointhttps://www.rendemo.com/api/mcp/mcp
TransportStreamable HTTP, stateless
AuthAuthorization: Bearer <workspace API token> — the same token the browser extension uses. Every tool is scoped to that workspace, and no tool accepts a workspace id, so switching workspaces means switching tokens.

Where to get a token. Workspace settings in the Rendemo app. That page also shows a ready-to-paste connect command and the Claude.ai connector steps, carrying the token for you.

By hand

Still the right form for CI, a container, or any client without the CLI:

shell
claude mcp add --transport http rendemo https://www.rendemo.com/api/mcp/mcp \
  --header "Authorization: Bearer <your workspace API token>"

For Claude.ai and other clients, add a custom connector with the same URL and header.

The registration a login writes

npx rendemo login can write this for you. It declares both ways of supplying the header:

.mcp.json
{
  "mcpServers": {
    "rendemo": {
      "type": "http",
      "url": "https://www.rendemo.com/api/mcp/mcp",
      "headers": { "Authorization": "Bearer ${RENDEMO_API_TOKEN}" },
      "headersHelper": "npx --yes rendemo token"
    }
  }
}

headersHelper is a Claude Code feature: a command whose stdout — a JSON object of string headers — supplies the request headers. It is what lets the server read the token rendemo login stored. The plain ${RENDEMO_API_TOKEN} header cannot do that: it resolves from the environment of the shell that launched Claude Code, so on its own a successful login still left every call unauthenticated until the user exported the variable by hand. Claude Code merges the two with the helper winning, so the helper covers the stored login and the environment variable, and the static header remains as a floor for a machine where the helper cannot run.

npx rendemo doctor verifies that path end to end, including running the helper. See the CLI page.

Not using an agent at all? Installing a published demo needs no MCP and no token — it is two lines of HTML.

Prompts

The server also registers two prompts, which package a whole loop rather than a single call:

  • demo-doctor — analytics to diagnosis to applied fixes. It pulls the funnel and the plan, names the highest-impact problems tied to a metric, proposes concrete tool calls, and asks before applying.
  • launch-checklist — capture through to a published, branded, converting demo.
65 tools is an API, not an interface. If you are in Claude Code, the plugin wraps this server as a workflow — you state an intent, and it sequences the tools and writes the files the MCP cannot touch. The MCP stays the API for everything else.

Tool reference

65 tools across 11groups. Every name, title and description below is read from the server’s own tool registry at build time — the same registrations the endpoint serves — so this page cannot drift from the code. Argument names are listed in schema order; the full schema comes back from the server on tools/list.

  • Read Look at what exists before changing it — projects, the plan, the funnel, and the audit trail of every AI-made change.
  • Story & copy What each step says, and the order the steps say it in.
  • Presentation How the step cards look and behave, and the demo-wide options.
  • Conversion Lead capture, translations, and per-campaign tracking links.
  • Embed Everything needed to install a published demo on a website.
  • Tour Authoring guidance on your own product: markers, preview, the lockfile, and the second visit.
  • Ship Publishing, offline export, and video renders.
  • Video The cut sheet: shots, zoom, pacing, effects and sound.
  • Directing Camera and card geometry, solved from the captured element boxes — no screenshots.
  • Cinematic Carried by the registry and served by the endpoint; not written up in docs/mcp/README.md.
  • Brand style Carried by the registry and served by the endpoint; not written up in docs/mcp/README.md.
Recording is out of scope by design: captures come from the browser extension. Writes are small targeted patches through the plan’s validated, closed-enum setters, so an agent cannot express anything the editor could not. Publish reuses the real publish route, so approval gates, localization inlining and A/B auto-promotion apply identically.

Read

7 tools

Look at what exists before changing it — projects, the plan, the funnel, and the audit trail of every AI-made change.

  • rendemo_list_projectsRead onlyList projects

    List the workspace's demo projects (newest first): id, name, step count, published demo url when live. Start here to find the projectId every other tool needs.

    args limit

  • rendemo_get_planRead onlyGet plan summary

    A compact, agent-readable summary of a project's demo plan: the ordered step list (id/title/blurb) and every demo-wide setting (look, craft, guide, choreography, lead capture, moat flags). Use the step ids with rendemo_update_step.

    args projectId

  • rendemo_get_demo_analyticsRead onlyGet demo analytics

    The published demo's funnel: viewers, completion, per-step drop-off, CTA rate, campaigns, per-variant outcomes with the current A/B winner, and lead count. The starting point of every improve-the-demo loop.

    args projectId

  • rendemo_list_leadsRead onlyList demo leads

    Captured leads for a project's demo, with the step each in-card lead converted at (intent depth). Read-only; emails are viewer PII — handle accordingly.

    args projectId · limit

  • rendemo_get_journeyRead onlyGet journey graph

    The demo's step graph: linear flow, branch edges (card choices + goto hotspots), unreachable steps and dangling branch targets. Use before/after editing choices.

    args projectId

  • rendemo_review_projectRead onlyReview readiness

    Pre-publish review: per-step sign-off states, untitled steps, missing lead capture, and step/lead totals. The launch-checklist tool.

    args projectId

  • rendemo_get_decision_logRead onlyReview past AI decisions

    The audit trail of every AI-made change (copilot and MCP): directing calls (camera shots, card placement), copy rewrites, emphasis/design updates, publishes — each with its arguments and outcome. Read it BEFORE re-directing or re-diagnosing a demo so you build on (or deliberately reverse) earlier decisions instead of repeating them.

    args projectId · limit

What each step says, and the order the steps say it in.

  • rendemo_write_step_captionsWrite step captions with AI

    Rewrite step titles + helper lines with Claude from the recorded click-through (the same writer behind the editor's AI improve). mode 'fill' captions only element-labeled steps; 'rewrite' redoes every step. Author edits always survive 'fill'.

    args projectId · mode

  • rendemo_run_story_directorRun the AI story director

    Claude re-directs the whole demo as one story: selects/orders the strongest 4-12 moments, writes copy, picks per-step layout + emphasis, chooses the look, playback and ending — then applies it. Give an instruction to steer (audience, outcome, tone). This REPLACES current story choices (copy the author wrote is preserved by the proposal normalizer where ids survive).

    args projectId · instruction

  • rendemo_update_stepUpdate a step

    Targeted patch on one step (recorded beat or authored step): title, blurb, CTA label, emphasis mode + color (all 17 modes incl. beam/pointer/spotlight), click marker, card variant/size/placement/anim, eyebrow, per-step choreography, narration, branch choices, persona variants, hidden. Only the fields you pass change. Pass null on a nullable field to clear it.

    args projectId · stepId · title · blurb · stepType · successMessage · recoveryHint · searchTerms · advanceLabel · emphasis · emphasisColor · marker · eyebrow · variant · size · placement · anim · choreography · narration · choices · variants · hidden · rect

  • rendemo_style_stepsStyle many steps at once

    BULK visual pass: apply per-step patches (emphasis mode + color, click marker, card variant/size/placement/anim, eyebrow, titles, blurbs, choreography...) across MANY steps in ONE call. This is THE tool for a demo-wide visual improvement — vary emphasis with intent (spotlight/beam the payoffs, calmer ring/glow for setup, none for breathers) instead of one mode everywhere. Combine with rendemo_auto_direct (camera + placement geometry) and rendemo_set_card_look (the global skin) for a complete pass.

    args projectId · steps · device

  • rendemo_reorder_stepsReorder steps

    Set the demo's play order. Pass the COMPLETE ordered list of step ids from rendemo_get_plan (a partial list drops the missing steps from the story order).

    args projectId · order

How the step cards look and behave, and the demo-wide options.

  • rendemo_set_card_lookSet the card look (intent-first)

    Pick the card system by JOB (role) or by exact look. Roles: default (Compass: Guided walkthroughs); product (Lens: Premium product tours); story (Field Note: Narrative demos); workflow (Sidecar: Complex, multi-pane flows); outcome (Proof Point: Outcome & ROI); technical (Command: Setup & CLI flows); education (Coach: Customer onboarding); implementation (Blueprint: Admin & configuration); mobile (Dock: Compact & touch screens); transition (Chapter: Narrative breaks). Applying a role also pre-tunes layout + recommended craft and returns the copy tone to write in — everything stays editable afterwards.

    args projectId · role · look

  • rendemo_set_card_craftSet card craft

    The demo-wide craft layer over the look: corners/spacing/depth/title scale, colors (validated), type sizes, and the connective pointer beam. Only passed fields change; null clears a field back to the look's default.

    args projectId · corners · spacing · depth · title · accentColor · backgroundColor · titleColor · bodyColor · beam

  • rendemo_set_card_identitySet card identity

    The named guide (avatar + name above every card), the product logo chip, and the step indicator (style, section label for the two-line eyebrow, segmented progress). Null clears.

    args projectId · guideName · guideAvatarUrl · productChip · indicatorStyle · indicatorLabel · progress

  • rendemo_set_demo_optionsSet demo options

    Demo-wide behavior: card/emphasis choreography, playback (snap vs live replay), hands-free narration autoplay, localize-on-arrival, redaction guarantee, A/B optimize metric + auto-promote, brand autopilot, and the AI viewer agent. Only passed fields change.

    args projectId · choreography · playback · playbackSpeed · autoplayNarration · autoLocale · redaction · optimizeMetric · autoPromote · useBrandKit · viewerAgent

Conversion

4 tools

Lead capture, translations, and per-campaign tracking links.

  • rendemo_configure_lead_captureConfigure lead capture

    The demo's conversion moment: a gate at start/end (or at a step), and/or the in-card inline email form at a chosen step (capture at peak intent, no gate). Leads flow to the dashboard, webhooks, and CRM integrations with step context. Pass enabled=false to remove capture entirely.

    args projectId · enabled · placement · gateStepId · inCardStepId · required · heading · body · button · fields

  • rendemo_add_localizationAdd a localization

    Translate every card's copy into a locale with Claude (or store provided copy) — the default published demo then swaps to the viewer's language on arrival (localized-on-arrival). Locale is a BCP-47-ish tag: ja, de, pt-BR. Re-running a locale overwrites its draft.

    args projectId · locale

Embed

1 tool

Everything needed to install a published demo on a website.

  • rendemo_get_embedRead onlyGet the embed code for a demo

    Everything needed to install a published demo on a website: the script tag and where it goes for this framework, the markup, and the source of a local wrapper component. The demo must be published first. Write the returned files yourself — this tool cannot touch your filesystem.

    args projectId · framework · mode

Tour

8 tools

Authoring guidance on your own product: markers, preview, the lockfile, and the second visit.

  • rendemo_create_tourCreate a product tour

    Create a TOUR — step-by-step guidance on the user's OWN product, which they perform for real. No recording: each step is anchored to a data-rendemo marker you write into their source. Returns the tour slug to use in every marker. Add steps with rendemo_add_tour_step, preview it with rendemo_get_tour_preview, then publish; only published tours run for visitors. If the user instead wants something a visitor WATCHES, that is a demo — record and publish one, then install it with rendemo_get_embed.

    args name · tourSlug

  • rendemo_add_tour_stepAdd a step to a tour

    Append a step to a tour. Returns the exact data-rendemo attribute to write onto the element in source — the MCP cannot edit your files, so you write it. Copy, cards and emphasis are set afterwards with the normal step tools (rendemo_update_step, rendemo_set_card_look, rendemo_style_steps).

    args projectId · step · route · do · wait · match · title · blurb

  • rendemo_list_toursRead onlyList product tours

    Every TOUR in this workspace: projectId, name, tour slug, step count, and whether it is currently live. Start here for any change to an existing tour — adding a step, rewording one, reordering, or removing one. Replay demos are deliberately excluded; they are a different artifact and rendemo_list_projects covers those. With a projectId in hand: rendemo_get_plan for the step ids, rendemo_add_tour_step to append, rendemo_update_step to reword, rendemo_reorder_steps to reorder, rendemo_remove_tour_step to drop one, rendemo_remove_tour to retire the whole thing.

    args limit

  • rendemo_remove_tour_stepRemove a step from a tour

    Delete one step from a tour AND get back the data-rendemo marker you must strip from source in the same change. THIS IS NOT OPTIONAL: leaving the marker behind makes `rendemo check` fail the build with an orphan-marker, so removing the step without removing the attribute breaks CI for whoever pushes next. Present both edits as one reviewable diff. Afterwards the tour must be published again (rendemo_publish_demo) and the lockfile regenerated (rendemo_get_tour_lockfile) — until then the committed lockfile still describes the step you removed. Refuses when another step's branch choice points at this one, because a dangling choice is dropped silently rather than reported, and refuses on the last remaining step (use rendemo_remove_tour to retire the whole tour).

    args projectId · stepId

  • rendemo_take_demo_offlineTake a published demo or tour offline

    Stop serving ONE published demo or tour, without deleting anything. Its public link, its poster, and any tour running on the customer's pages all go dark within 30 seconds (the payload's edge-cache window); a visitor whose tour is ALREADY running finishes it — this stops it being served, it does not reach into open tabs. The published plan is preserved, so re-publishing later serves the identical artifact. Use this the moment a live tour is wrong, points at removed UI, or should not be running. To take EVERY tour in the workspace down at once (a release that moved the UI out from under all of them), the human turns off Settings → Product tours instead. To put this one back on the air, publish it again (rendemo_publish_demo) or use Put back online in the library.

    args projectId

  • rendemo_remove_tourRetire a tour: offline, markers stripped, lockfile entry gone

    Retire a whole tour in one reviewable change. Takes it offline (it stops being served within 30 seconds) AND returns every data-rendemo marker to strip from source AND the contents of rendemo.tours.json with this tour's entry removed and every other tour preserved. Do all three: taking it offline while the markers stay in source leaves `rendemo check` failing the build with orphan-marker for each one, which is the safety feature turning into a nuisance exactly when someone is backing out. NOTHING IS DELETED — the plan and the published plan are kept, so publishing again later serves the identical artifact; only the serving stops and the source is cleaned. If you only want it dark for a moment (a live tour pointing at UI that just moved), that is rendemo_take_demo_offline instead, which touches no files.

    args projectId · lockfile

  • rendemo_get_tour_lockfileRead onlyGet the tour lockfile to commit

    The exact contents of rendemo.tours.json for a PUBLISHED tour. Write this file to the repo root and commit it — the `rendemo` CLI reads it offline in CI to verify every step still has a marker in source. That CLI is published on npm, so `npx rendemo check` works with no install (needs rendemo@0.2.0 or newer for the rendemo.tours.json name). IMPORTANT: if the repo already has a lockfile — rendemo.tours.json, or the older rendemo.flow.json — read it and pass its text as `lockfile` — one file describes EVERY tour in the repo, and writing a single-tour file silently stops checking the others.

    args projectId · lockfile

  • rendemo_get_tour_previewRead onlyGet a link that previews this tour before it is live

    A ready-to-open URL that runs the tour's CURRENT DRAFT on the user's own running app — before publishing, and without publishing. Open it in a browser pointed at their app (a dev server, a staging deploy, production) and the tour appears, with a persistent "Preview" badge on every card so a draft is never mistaken for the live thing. Nothing is published, no analytics are recorded, and progress is kept out of a real visitor's storage. SHARE IT CAREFULLY: the link is a bearer token — anyone who opens it sees the draft, with no sign-in — and it expires 30 minutes after it is issued. THE LIMIT WORTH SAYING OUT LOUD: the data-rendemo markers must already exist in the BUILD being previewed. Against a dev server that is immediate (save the file). Against a staging or production URL, the commit that adds the markers has to be deployed there first, or every step will report that it cannot find its target. Preview before offering to publish — that is now the natural order.

    args projectId · baseUrl

Ship

4 tools

Publishing, offline export, and video renders.

  • rendemo_publish_demoPublish the demo

    Build and publish the project's interactive demo (self-contained HTML, all devices, stored translations inlined, A/B auto-promotion applied). Returns the public URL. This makes the demo WORLD-VISIBLE at that URL — confirm with the user before publishing, and again before sharing the link anywhere.

    args projectId · locale

  • rendemo_export_offlineRead onlyExport offline demo

    A time-limited download link for the published demo as one self-contained offline HTML file (replay, styling, interactions and media embedded). Publish first.

    args projectId

  • rendemo_queue_video_renderQueue a video render

    Render the project as a video (mp4 or gif) on the render worker. Returns a renderId to poll with rendemo_get_render_status. Takes minutes.

    args projectId · name · format · resolution · quality · kind

  • rendemo_get_render_statusRead onlyGet render status

    Status of queued/running renders — pass a renderId, or omit it for the workspace's recent renders.

    args renderId · limit

Video

14 tools

The cut sheet: shots, zoom, pacing, effects and sound.

  • rendemo_get_video_planRead onlyRead the video cut

    The video output's full cut sheet: every shot (beat) with its timing, zoom depth, transition link, salience, story intent and annotations, plus the plan-level pacing, click effects, sound mix, caption state, trim (in/out) and speed sections — the WHOLE video is viewable here. Read this BEFORE adjusting shots — 'improve the video' means these levers (then rendemo_frame_video_shot / rendemo_set_video_shot / rendemo_add_video_shot / rendemo_split_video_shot / rendemo_delete_video_shot / rendemo_apply_video_treatment / rendemo_tune_video / rendemo_trim_video / rendemo_set_video_speed_section / rendemo_clear_video_sections), not the demo card tools. CRAFT: a polished cut is mostly wide/medium — punch only the 1-2 payoffs, hold shots ~3s, one move per shot, gentle pacing (over-zoom + high maxSpeed is what reads snappy/warpy).

    args projectId

  • rendemo_set_video_shotAdjust one video shot

    Per-shot video edit — the same operation as the editor's Shot tab: zoom (1 = full frame, up to 4x), center (pan the framing to a content-% point at the current zoom — the same math as the editor's reframe drag), holdFrom/holdTo (retime the shot's hold window, seconds), and enabled (false cuts the shot from the video; the interactive demo is unaffected). Use rendemo_get_video_plan first for shot ids and current values.

    args projectId · beatId · zoom · center · holdFrom · holdTo · enabled

  • rendemo_frame_video_shotFrame a video shot on its recorded element

    Frame one video shot on its recorded element — 'wide' (full frame), 'medium' (~1.7x on the element), 'punch' (~3x hero close-up), 'auto' (from salience). Deterministic solver from the captured element box (no vision). Writes beat.crop, the same field the editor's reframe/zoom write.

    args projectId · beatId · shot

  • rendemo_add_video_shotAdd a new video shot

    Insert a brand-new shot (beat) into the video cut at a point in time — for a moment worth its own hold that the recording didn't naturally break into one. Starts full-frame; pass shot ('wide'/'medium'/'punch'/'auto') to also frame it like rendemo_frame_video_shot would (only takes effect if the moment has a recorded element to frame on). Keeps shots in time order. To break an EXISTING shot into two instead, use rendemo_split_video_shot.

    args projectId · atSeconds · holdSeconds · shot

  • rendemo_split_video_shotSplit a video shot into two

    Break one shot's hold window into two independent shots at a point in time — the same operation as dragging a split on the timeline. Both halves keep the original shot's framing/annotations until you adjust them separately. Fails if the split point would leave either side shorter than 0.3s.

    args projectId · beatId · atSeconds

  • rendemo_delete_video_shotDelete a video shot

    HARD-remove a shot (beat) from the video cut — it's gone from the plan entirely. Contrast with rendemo_set_video_shot enabled:false, which cuts a shot from the video but keeps it (restorable by re-enabling). Fails if it's the only shot left, or the id doesn't exist.

    args projectId · beatId

  • rendemo_tune_videoTune video pacing, effects & sound

    Plan-level video feel: pacing (tight time-warp with a max speed, or off for real time), click effects (style/intensity/zoom-punch), and the sound mix (clicks, whoosh, background music level, narration cleanup). Only passed fields change.

    args projectId · pacing · effects · sound

  • rendemo_trim_videoTrim the video's in/out points

    Set the video's start/end trim — RAW footage seconds (the same clock plan.sections use), not the trimmed/output timeline. Cuts everything before the start point and after the end point. Only passed fields change (start or end alone shifts just that edge); the other edge is clamped so start stays before end. Use rendemo_get_video_plan's settings.trim for current values.

    args projectId · startSeconds · endSeconds

  • rendemo_set_video_speed_sectionSet a speed/cut section on the video

    Add a rate-override window to the video cut — RAW footage seconds (add plan.trim.start to convert from the trimmed/output timeline). speed >= 50 EXCISES the range (a hard cut, like deleting dead time); speed < 1 is slow-mo (e.g. 0.5 = half speed); speed > 1 (and < 50) speeds the range up (e.g. 4 = 4x). Sections stack — adds a new entry to plan.sections, it does not replace existing ones. Use rendemo_get_video_plan's settings.sections for current values, rendemo_clear_video_sections to remove one.

    args projectId · startSeconds · endSeconds · speed

  • rendemo_clear_video_sectionsRemove video speed/cut sections

    Remove one speed/cut section by index (pass index) or ALL sections (omit index). Use rendemo_get_video_plan's settings.sections to find indices.

    args projectId · index

  • rendemo_apply_video_treatmentApply a video treatment (one-move polish)

    One move to set a coherent, professional feel across the whole cut — the fix for a snappy/over-zoomed/warpy video. 'calm'/'professional': gentle pacing (max 4x), subtle glow effects, quiet sound, AND pulls every over-zoomed shot (zoom > 2) back to a calm medium framing. 'dynamic': punchier pacing + effects (leaves your shots alone). 'minimal': real-time pacing, no effects, resets ALL shots to full frame. After a treatment, selectively rendemo_frame_video_shot 'punch' the 1-2 real payoff moments.

    args projectId · treatment

  • rendemo_set_video_captionsToggle & style video captions

    Burned captions on the video, auto-transcribed from the narration (the TEXT comes from the voiceover — this controls whether they show and how they look). enabled on/off; style subtitle (clean line) or pill (rounded chip); size; position top/bottom; karaoke word-highlight. Only passed fields change. One idea per moment — keep them on the payoff, not every shot.

    args projectId · enabled · style · size · position · karaoke

  • rendemo_annotate_shotAdd an annotation to a video shot

    Draw a callout / feature / box / ellipse / arrow / line / spotlight on one shot — it shows in the video (and demo) for that beat's duration. rect is a content-% box (x,y,w,h in 0-100, the same space as the shot framing). 'callout' shows text with an optional leader line to `target`; 'feature' is a designed b-roll card (bold title + optional `body` line, accent bar) anchored at the rect — the pro way to name a feature on screen; 'spotlight' dims everything outside the rect; box/ellipse outline the rect; arrow/line point across the rect's diagonal. One idea per moment — use on the payoff, not every shot.

    args projectId · beatId · type · rect · text · body · target · color · anim · pulse

  • rendemo_clear_shot_annotationsRemove annotations from a video shot

    Remove one annotation (pass annotationId) or all annotations from a shot. Use rendemo_get_video_plan / the editor to find ids.

    args projectId · beatId · annotationId

Directing

3 tools

Camera and card geometry, solved from the captured element boxes — no screenshots.

  • rendemo_direct_stepDirect one step (camera + card)

    Set the camera shot and card position for one interactive-demo step. shot: 'wide' (full frame), 'medium' (~1.7x frame on the target), 'punch' (~3x hero close-up), 'auto' (from the step's recorded salience). cardAnchor: a corner/center, or 'auto' to place the card beside the highlighted element without covering it. The deterministic solver computes exact geometry from the captured element box — results land in the same fields the editor's drag/zoom controls use, so the author can adjust by hand afterwards.

    args projectId · stepId · shot · cardAnchor · settleShot · moveDelayMs · moveDurationMs · device

  • rendemo_auto_directAuto-direct the whole demo

    One deterministic directing pass over every visible step: hero moments (high recorded salience) get a punch-in, ordinary actions a medium frame, and every card is placed beside its target instead of on top of it. Steps where the author hand-placed the card or hand-zoomed are left alone unless force=true. Run rendemo_director_lint afterwards to verify. Cheap by construction — pure geometry, no model calls.

    args projectId · force · cameraMoves · device

  • rendemo_director_lintRead onlyLint the demo's direction

    Zero-cost audit of camera framing and card placement: flags cards covering their own target, zoom crops that cut off the highlighted element, off-stage cards, disorienting zoom depths, and long copy over tight shots. Each finding names the step and the exact fix. Run after directing or copy changes; a clean report is the closest thing to 'visually verified' that costs nothing.

    args projectId

Cinematic

8 tools

Carried by the registry and served by the endpoint; not written up in docs/mcp/README.md.

  • rendemo_set_title_cardSet the branded title card

    Set the full-frame intro card the film opens on (a themed backdrop + headline over the brand accent). Keep the headline short — a title, not a sentence (the product/feature name). Only passed fields change; pass remove:true to drop the title card. Cards render on the worker (already live for intro/end).

    args projectId · text · subtitle · seconds · remove

  • rendemo_set_end_cardSet the end / call-to-action card

    Set the full-frame outro card the film ends on — the call to action (e.g. 'Start free', 'Book a demo'). Short headline; optional subtitle (a URL or tagline). Only passed fields change; remove:true drops it. Renders on the worker (live today).

    args projectId · text · subtitle · remove

  • rendemo_add_interludeAdd a section interlude (chapter) card

    Insert a full-frame chapter SLIDE — a slideshow-style interrupt that titles the next part ('Connect your data', 'Invite the team'). atSection is the chapter index (0-based, in the order the film's establishing/wide shots open each chapter); the slide renders just before that chapter. NOTE: by default chapters are already marked by animated on-screen titles over the footage (the produced-film look) with no slides — use this only when you deliberately want the full-frame slideshow treatment instead.

    args projectId · text · subtitle · atSection

  • rendemo_clear_interludesRemove interlude cards

    Remove section interlude (chapter) cards — all of them, or only those at a given atSection index.

    args projectId · atSection

  • rendemo_set_bgmSet the background-music bed

    Control the background-music bed under the film. enabled toggles it; mood is a text query the worker uses to retrieve a fitting catalog track when none is uploaded (e.g. 'soft minimal tech corporate', 'upbeat energetic', 'calm ambient'); volume 0..1 is the bed level under the narration (default 0.12 — keep it low so voice/UI stay legible). An uploaded track always wins over mood.

    args projectId · enabled · mood · volume

  • rendemo_generate_narrationWrite the story layer (intents + on-screen chapter titles)

    Run the deterministic story pass over the cut: assign each shot a story intent (hook/establish/action/detail/payoff/breather — this also tells the camera which shots should breathe) and enable captions. Chapters are marked by animated on-screen section titles over the footage automatically (from the establishing shots) — the produced-film look — so you do NOT need chapter cards for that. Set addChapters:true only if you specifically want full-frame interlude slides (a slideshow-style interrupt) instead. Never overwrites shots/cards you've hand-edited. A good first move on a raw capture before fine-tuning.

    args projectId · addChapters

  • rendemo_set_section_transitionSet the section transition

    Set the transition played at each chapter (establishing/wide shot): 'wipe' (an accent band sweeps across — the tasteful default), 'push' (a bolder accent sweep), 'fade' (a quick dip to accent), or 'none'. Renders in the video and the preview.

    args projectId · style

  • rendemo_cinematic_polishMake the video look professional (one move)

    The 'make it a produced film' verb: seeds a branded title + end card when missing, turns on the background-music bed, enables burned captions, and sets a restrained, premium mix (clean click ripple, tight pacing, no over-production). Ken-Burns push on establishing/wide shots is automatic, and chapters are marked by animated on-screen titles over the footage (no slideshow). Non-destructive: it won't overwrite cards you already set unless force:true. Follow with rendemo_queue_video_render to see it (only add rendemo_add_interlude if you specifically want full-frame chapter slides).

    args projectId · force

Carried by the registry and served by the endpoint; not written up in docs/mcp/README.md.

  • rendemo_get_video_styleRead onlyGet the brand video style

    Read the on-brand kinetic-text style for auto section titles/feature callouts/cards: both the plan's raw overrides (videoStyle) and the fully resolved style (defaults + theme accent filled in). Use before rendemo_set_video_style to see what's currently in effect.

    args projectId

  • rendemo_set_video_styleSet the brand video style

    Set on-brand kinetic-text style fields for auto section titles/feature callouts/cards — type (font/case/tracking), color (accent role/ink/scrim), motion (preset/duration/ease/stagger/direction/mask), layout (text position/card look), and per-kind variants (sectionTitle/featureCallout/stat). Deep-merges per nested field — only the fields you pass change; siblings you leave out are preserved. Use rendemo_get_video_style first to see current values, or rendemo_apply_motion_preset for a quick motion-only change.

    args projectId · type · color · motion · layout · variants

  • rendemo_apply_motion_presetApply a motion preset to the video style

    Quick way to switch the kinetic-text entrance motion: 'reveal', 'rise' (default — the safe premium choice), 'draw', 'type', or 'fade'. Set resetParams:true to also clear any custom duration/ease/stagger/direction/mask overrides so the preset's own defaults take over.

    args projectId · preset · resetParams

  • rendemo_design_brand_styleAuto-design the on-brand video style from the brand kit

    Asks an LLM to propose a complete on-brand kinetic-text style (type/color/motion/layout) from the project's brand kit (accent + heading/body fonts) — a one-shot 'design my style' instead of setting each field by hand. Deep-merges the result into plan.videoStyle: by default the author's existing overrides win over the new design (only unset fields get filled in); pass force:true to let the new design override existing fields too. Pass saveAsDefault:true to also make this the WORKSPACE default (see rendemo_save_brand_style_default) so future projects inherit it. Falls back to a deterministic template style if no AI key is configured. Use rendemo_get_video_style afterward to see the resolved result, or rendemo_set_video_style/rendemo_apply_motion_preset to hand-tune it further.

    args projectId · hint · force · saveAsDefault

  • rendemo_save_brand_style_defaultSave the current video style as the workspace default

    Saves THIS project's current plan.videoStyle overrides as the workspace-wide default on-brand kinetic-text style. Future projects in this workspace inherit it automatically when their plan is first built (as long as they don't already carry their own overrides); existing projects can pick it up with rendemo_apply_brand_style_default. Use rendemo_get_brand_style_default to see what's currently saved, or rendemo_design_brand_style with saveAsDefault:true to design and save in one step.

    args projectId

  • rendemo_get_brand_style_defaultRead onlyGet the workspace default video style

    Read this workspace's saved default on-brand kinetic-text style (set via rendemo_save_brand_style_default or rendemo_design_brand_style saveAsDefault:true) — the style new projects inherit and rendemo_apply_brand_style_default applies to an existing one. Returns null when nothing has been saved yet.

  • rendemo_apply_brand_style_defaultApply the workspace default video style to this project

    Merges this workspace's saved default video style into THIS project's plan.videoStyle. By default the project's existing overrides win (only fields the project hasn't set are filled in from the default) — pass force:true to let the default win instead, overriding fields the project already set. Fails with a clear message if no workspace default has been saved yet (see rendemo_save_brand_style_default).

    args projectId · force