Driving it from an agent
Install the Rendemo plugin for Claude Code, sign in with npx rendemo login, and use /rendemo:demo and /rendemo:tour — or connect any MCP-compatible agent to the server directly.
Install the plugin
Rendemo’s MCP server has a large tool surface. That is an API, not an interface — you would have to know which tool to call, in what order, with what arguments. The Claude Code plugin ships the workflow instead: you state an intent, and the agent sequences the tools, stops at the checkpoints that matter, and writes the files the MCP cannot touch.
claude plugin marketplace add jakegrepo/rendemo-plugin
claude plugin install rendemo@rendemoThe plugin is its own marketplace, so both commands name rendemo. Or run /plugin interactively and pick it. Either way, restart Claude Code afterwards — MCP servers are wired up at startup.
Sign in
The endpoint authenticates with a per-workspace bearer token, so no token can ship inside the plugin. One command handles it:
npx rendemo loginIt prints a short code and a URL, you approve in a browser where you are already signed in, you pick a workspace, and the token is stored in a per-user config file outside every checkout. The token is never printed and never logged. npx rendemo logout removes it.
| OS | Config path |
|---|---|
Windows | %APPDATA%\rendemo\config.json |
macOS / Linux | $XDG_CONFIG_HOME/rendemo/config.json, else ~/.config/rendemo/config.json |
RENDEMO_API_TOKEN still works and is the right answer for CI. Get the token from Workspace settings. It takes precedence over a stored login, which makes it the usual cause of “I logged in but it is using the wrong workspace”. npx rendemo doctor says which source is in play.
The commands
Three, and the first one exists so you never have to know which of the other two you wanted.
| Command | What it does |
|---|---|
/rendemo:start | Picks between a demo and a tour from what you typed, and hands off. Asks one question only when the intent is genuinely ambiguous. |
/rendemo:demo | Installs a published demo on your site: picks the demo, detects the framework from your repo, writes the wrapper and the tag. It will not publish anything without asking, and it stops before writing files if the demo is password-protected. |
/rendemo:tour | Authors or edits a tour. It reads your repo and proposes the steps as a table with a file:line per target, then waits for approval there — that table is the checkpoint, because it is the first thing you can actually judge. Writes the markers as a reviewable diff, hands you a preview link, and asks before publishing. |
Any MCP agent
The plugin is the front door; the MCP server stays the API for everything else — Claude.ai, or anything MCP-compatible.
| Endpoint | https://www.rendemo.com/api/mcp/mcp |
| Transport | Streamable HTTP, stateless |
| Auth | Authorization: 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. |
By hand
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. Workspace settings shows a ready-to-paste version carrying the token for you.
Tool reference
65 tools across 11groups. Every name, title and description below is read from the server’s own registry at build time — the same registrations the endpoint serves — so this list cannot drift from the code. Arguments are in schema order; the full schema comes back on tools/list.
Read
7 toolsLook at what exists before changing it — projects, the plan, the funnel, and the audit trail of every AI-made change.
rendemo_list_projectsRead onlyList projectsList the workspace's demo projects (newest first): id, name, step count, published demo url when live, and whether the demo is password-protected. Start here to find the projectId every other tool needs.
args limit
rendemo_get_planRead onlyGet plan summaryA 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 analyticsThe 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 leadsCaptured 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 graphThe 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 readinessPre-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 decisionsThe 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
Story & copy
5 toolsWhat each step says, and the order the steps say it in.
rendemo_write_step_captionsWrite step captions with AIRewrite 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 directorClaude 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 stepTargeted 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 onceBULK 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 stepsSet 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
Presentation
4 toolsHow 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: guide (Hairline: Everyday walkthroughs); annotate (Margin: Teach the concept behind the click); narrate (Frame: Openings, chapters, cinematic beats); operate (Console: Setup, CLI and technical flows); ambient (Vitrine: Dense screens and mobile); reference (Column: Long, multi-stage configuration); close (Ovation: The payoff and the ask). 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 craftThe 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 identityThe 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 optionsDemo-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 toolsLead capture, translations, and per-campaign tracking links.
rendemo_configure_lead_captureConfigure lead captureThe 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 localizationTranslate 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
rendemo_create_tracking_linkCreate a tracking linkA campaign-attributed share URL for the published demo (views, completion and leads segment by campaign in analytics). Returns the /t/<token> URL to share.
args projectId · name · campaign
rendemo_list_tracking_linksRead onlyList tracking linksExisting campaign links for the project's demo, with view counts.
args projectId
Embed
1 toolEverything needed to install a published demo on a website.
rendemo_get_embedRead onlyGet the embed code for a demoEverything 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 toolsAuthoring guidance on your own product: markers, preview, the lockfile, and the second visit.
rendemo_create_tourCreate a product tourCreate 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 tourAppend 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 toursEvery 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 tourDelete 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 offlineStop 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 goneRetire 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 commitThe 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 liveA 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 toolsPublishing, offline export, and video renders.
rendemo_publish_demoPublish the demoBuild 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 demoA 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 renderRender 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 statusStatus of queued/running renders — pass a renderId, or omit it for the workspace's recent renders.
args renderId · limit
Video
14 toolsThe cut sheet: shots, zoom, pacing, effects and sound.
rendemo_get_video_planRead onlyRead the video cutThe 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 shotPer-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 elementFrame 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 shotInsert 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 twoBreak 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 shotHARD-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 & soundPlan-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 pointsSet 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 videoAdd 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 sectionsRemove 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 captionsBurned 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 shotDraw 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 shotRemove 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 toolsCamera 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 demoOne 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 directionZero-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 toolsCarried by the registry and served by the endpoint; not written up in docs/mcp/README.md.
rendemo_set_title_cardSet the branded title cardSet 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 cardSet 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) cardInsert 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 cardsRemove section interlude (chapter) cards — all of them, or only those at a given atSection index.
args projectId · atSection
rendemo_set_bgmSet the background-music bedControl 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 transitionSet 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
Brand style
7 toolsCarried by the registry and served by the endpoint; not written up in docs/mcp/README.md.
rendemo_get_video_styleRead onlyGet the brand video styleRead 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 styleSet 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 styleQuick 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 kitAsks 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 defaultSaves 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 styleRead 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 projectMerges 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
When it does not work
The published CLI can lag the documented one
This repository’s CLI source declares 0.4.0, but npm view rendemo version returned 0.2.0 on 2026-07-26. Because npx rendemo … fetches whatever the registry serves as latest, some commands may not exist yet on your machine even though they are documented here. A cache holding a version too old exits 2 with Unknown command "…".
Check with npx rendemo --version before assuming a command is broken. Until the newer version is published, supply the token with RENDEMO_API_TOKEN — that path never needed the CLI.
- Is the server connected? Run
/mcp. If no credential was produced the server is still listed, but every call fails to authenticate — that is what a 401 from these tools means. - Signed in, still 401? That is the gap
doctor’s MCP headers line exists for: it runs the helper command the config declares, inside the same 10-second budget Claude Code allows, and validates the output the way Claude Code does. could not determine executable to run— your project’s ownpackage.jsonis namedrendemo, sonpxresolves it first. Rename it, or install the CLI as a devDependency and call./node_modules/.bin/rendemo.- Wrong workspace. Every tool is scoped to the token’s workspace, so switching workspaces means switching tokens.