Is there an MCP server that records product demo videos? What tday's tools do

tday's MCP server (@tday-com/mcp) lets Claude Code, Cursor or Codex record a narrated demo of your running app. What each tool does, and what none of them do.

By the tday team Published 8 min read

The short answer

Yes. tday's MCP server, @tday-com/mcp, runs on your machine over stdio and gives a coding agent such as Claude Code, Cursor or Codex a set of demo tools. demo_check reads your setup before anything starts, demo_start opens a separate copy of your app on camera, demo_beat records one narrated line with its clicks and typing, demo_review scans the take for secrets, and demo_upload sends it to tday, which voices and renders the video.

Key takeaways

  • The server is one npm package, @tday-com/mcp, run with npx over stdio. It works in Claude Code, Cursor, Codex, VS Code, Gemini CLI and any MCP client that runs stdio servers.
  • A typical demo calls seven tools in order: demo_guide, demo_check, demo_start, several demo_beat, demo_review, demo_upload and demo_finish.
  • One demo_beat is one narrated line of up to 400 characters, plus up to 24 steps it covers. Anything between beats is cut.
  • The tools record a separate demo instance of your app, never your dev server, and nothing uploads until a local review passes its secret scan.
  • The tools make a video. They do not make a click-through tour, and they do not run by themselves when code is merged.
tday's Record a demo dialog on the Demos page: Copy prompt, buttons that open Claude Code, Cursor, Codex and VS Code Copilot, and what happens before the agent records.

An MCP server gives a coding agent tools it does not have by itself. Most give it something to read: a database, an issue tracker, a docs site. tday's gives it a camera.

With it, the agent that built a feature can also record the demo of it. It starts your app, performs the feature and writes the narration, one line at a time. tday turns that take into a finished video. This post lists what the server is, what each tool does, and where the tools stop.

What the server is

It is one npm package, @tday-com/mcp, that runs on your machine over stdio. Your agent starts it like any other local MCP server:

npx --prefix ~ -y @tday-com/mcp@latest serve

It needs Node.js 18.17 or later and ffmpeg on your PATH, on macOS, Linux or Windows (WSL2). It works with Claude Code, Cursor, Codex, VS Code, Gemini CLI and any MCP client that runs stdio servers. The tools are the same in all of them.

tday also has a hosted connector on tday.com that VS Code can add. That one carries your account's tools only, with no demo tools. Recording needs the local server, because the app being filmed runs on your machine.

Three ways to install it

WayWhat you runSign-in
A prompt's install lineTDAY_CAPTURE_TOKEN=<token> npx --prefix ~ -y @tday-com/mcp@latest installThe prompt's capture token
Your own tday logincurl -fsSL https://tday.com/install.sh | bashA code you approve in a browser
A pluginYour agent's plugin managerA link and a code on first use

A prompt's install line comes from tday: Record a demo on the Demos page gives you a prompt that starts with it. In Claude Code it adds the tday server at user scope, so nothing is written into your repo, and installs a capture skill. For Cursor and Codex it prints the configuration to paste into ~/.cursor/mcp.json or ~/.codex/config.toml. The token belongs to one brand and expires after one day.

Your own tday login needs no token. It adds the server to every coding agent it finds (Claude Code, Cursor, Gemini CLI and VS Code) and prints the setup for Codex.

A plugin exists for Claude Code, Cursor, Codex and Grok Build. In Claude Code:

claude plugin install tday --marketplace tday-com/tday-plugins

It adds the same server, the skill your agent follows, and two commands: /tday:demo records a demo, and /tday:demos-needed shows which features have none yet.

Use one of these, not two. With two, your agent lists the tday tools twice.

The tools, in the order a demo uses them

You rarely call these yourself. Your agent does. A typical demo runs the first column from top to bottom.

ToolWhat it does
demo_guideReturns tday's guide to recording a demo and writing its voiceover, and says how many minutes of voiceover your credits buy now
demo_app_notesReads what earlier demos saved about starting your app, from your repo's .tday folder
demo_checkA read-only checklist of your repo, data, queues, server keys, ports and tools. It starts and changes nothing
demo_startStarts recording a demo instance of your app, checks where its data lives and records the git baseline
demo_beatRecords one narrated line and the steps it covers, on camera
demo_fillSwaps text on screen for demo data, now and on every page after
demo_viewLooks at the screen, or runs steps, off camera
demo_discard_beatCuts the last beat, or a named beat and every beat after it
demo_reviewBuilds the take, runs tday's checks and the secret scan, and writes a local review page with a confirmation code
demo_uploadUploads a take that passed a clean review, then waits for tday to render it
demo_finishCloses the app or browser, deletes temp files and worktrees, and compares git status with the start

Four more tools sit around the take. demo_docs lists the demos your docs still need, each with its demo_start call. demo_features lists your product's features and which have a demo. demo_worktree checks out another branch in a temporary worktree outside your repo, to demo it or to show a before and after. demo_embed_docs returns every finished docs demo with the heading it goes under and its embed snippet, which is the subject of how to add demo videos to your docs.

Every answer from a recording tool carries a picture, so the agent sees its own footage and can check it.

Watch Stay in control of every demo (1:15), a demo of tday recorded by a coding agent with tday.

What one demo_beat holds

The beat is the unit of a take. Its main inputs:

InputWhat it is
sayThe narrated line, voiced exactly as written. Up to 400 characters
captionWhat the caption shows instead, such as /approve for "slash approve"
doThe steps the line covers. Up to 24. None means hold on what is on screen
focusWhat the line is about, when it is not a clicked control
payoffMarks the one beat with the result the viewer should remember

A step is one action. In a web or Electron app the actions are open, click, type, select, hover, scroll, press, drag, upload and wait. A terminal has type, press, run and wait_for. A step finds its control by role and name first, then by visible text, and by a CSS selector only as a last resort.

The footage holds until the line has had time to be said, and anything between beats is cut. A beat whose step fails is not kept. tday answers each beat with notes on the wording.

What demo_start can record

demo_start takes a kind, and there are six:

KindWhat is filmed
webA web app, in a 1440x900 browser at 2x
electronAn Electron app's own window
terminalA real shell, filmed as a clean terminal window
iosAn iPhone app in an iOS Simulator, on a Mac
androidAn Android app on an Android emulator
screenA Mac app's own window, filmed off your screen

Phone apps have their own guide: how to record a demo of an iPhone or Android app.

What the tools refuse to do

Giving an agent a camera on your running app is only reasonable if the tools have limits of their own. These are built in:

  • demo_start records a second instance of your app on a free port. Your dev server is never restarted or reused.
  • demo_start refuses a database that is not on your machine unless you say yes.
  • A step that would type a secret on camera is refused. The agent types secrets as $env:NAME, off camera.
  • While a web or Electron demo records, requests from the app's window that would change something off your machine are blocked and counted.
  • demo_upload only takes a take that a clean demo_review passed. A possible secret in a line, a step or the text on screen blocks it.

What uploads is the take (the app's window only), a poster frame and a manifest of the narration, steps and checks. Source code, .env files, cookies and network traffic never leave your machine. While it records, the server sends tday each safety check row's result (ok, check or stop, never what it found) and each narrated line for wording notes, which is not stored.

One thing the tools cannot cover: your app's own server runs with whatever keys you start it with. Use test keys for payments and email. The full picture is in is it safe to let a coding agent record your app.

What the tools do not do

  • They make videos. A tday demo is a narrated video. If you want a tour that viewers click through themselves, these tools do not make one.
  • They do not run by themselves. Nothing records when code is pushed or merged. Someone asks the agent. On Pro and above, a Needs update tab lists demos a merged pull request may have put out of date.
  • They do not finish the video. The voice, cursor, camera, captions, cards and music are added by tday after the upload. The free plan includes 5 saved demos and 100 credits a month.
  • They have limits. One take holds 40 narrated lines and 10 minutes. A brand can start 12 uploads an hour.

Check the setup and keep it current

doctor prints ok or FAIL for the browser, ffmpeg, the token and the connection to tday:

npx --prefix ~ -y @tday-com/mcp@latest doctor

Your agent's config names an exact version of the server, so nothing changes under you while you work. When tday releases a newer one, the server updates that version in your agents' configs as it starts. Set TDAY_MCP_AUTO_UPDATE=0 to keep the version you have. Codex's config.toml is never edited for you: run update by hand there.

The step-by-step first run is in how to record a product demo with your coding agent, and the limits are on one page.

Frequently asked questions

Which MCP clients can use tday's server?

Claude Code, Cursor, Codex, VS Code, Gemini CLI and any MCP client that runs stdio servers. The tools are the same in all of them. There is also a tday plugin for Claude Code, Cursor, Codex and Grok Build that adds the same server.

Does the MCP server run in the cloud or on my machine?

On your machine, over stdio, against a separate copy of your app that your agent starts there. tday's hosted connector on tday.com carries your account's tools only and has no demo tools.

What does the server send to tday?

After a clean review: the take (the app's window only), a poster frame and a manifest of the narrated lines, steps and safety checks. While recording: each safety check row's result and each narrated line for wording notes, which is not stored. Never source code, .env files, cookies or network traffic.

Can I use the tools without a coding agent?

Partly. The same package is a command line tool: run plan.json runs a list of tool calls without an agent and reviews the take, and doctor checks your setup. Writing the narration and performing the feature is still the work an agent does in a normal demo.

Does the MCP server change my repo?

Recording changes no code. The server compares git status at the start and the end and removes the temp files the agent registered. The one thing its tools may write is a .tday folder with a note on how your app was started, and they never commit it.

Sources

  1. Demo tools reference, tday docs
  2. Connect your coding agent, tday docs
  3. Your first demo, tday docs
  4. Keep demos safe, tday docs
  5. What leaves your machine, tday docs
  6. Model Context Protocol, Model Context Protocol

Have your coding agent record your first demo

One prompt in Claude Code, Cursor or Codex records a narrated demo of your app. tday voices, styles and renders it, ready for your docs. Free includes 5 saved demos.