RecordHTML
Server Details
Give your AI agent a video recorder. Record HTML5 ads, banners and web pages to MP4, WebM or GIF from a chat. Your assistant writes or finds the creative, records it in a real browser and hands you the video.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool has a clearly distinct role in the recording lifecycle: create, estimate, retrieve one, list many, and delete. There is no meaningful overlap between get_recording and list_recordings because one fetches a single recording with a fresh link while the other paginates summaries.
All tool names use snake_case verb_noun form: record_html, estimate_recording, get_recording, list_recordings, delete_recording. The singular/plural distinction on recording(s) is natural for single-item versus collection operations and does not break the pattern.
Five tools is well-scoped for a recording service: one creation tool, one preflight estimate, one single-item read, one collection read, and one delete. Each earns its place without redundant variations.
The core lifecycle is covered: create, estimate, list, get status/link, and delete. A dedicated cancel operation for queued or running recordings is absent, but recordings appear otherwise immutable, so this is a minor gap rather than a blocker.
Publisher details
- Operator
- Unknown
- Operator website
- https://recordhtml.com/ · Publisher source
- Vendor relationship
- Not applicable
- Documentation
- https://recordhtml.com/docs/mcp
- Trust center
- Unknown
- Restrictions
- Unknown
Available Tools
5 toolsdelete_recordingDelete a recordingADestructiveIdempotentInspect
Delete a recording’s video files for good: the original and any crop or trim. The recording stays in the history with status deleted. This cannot be undone; deleting it again changes nothing.
Inputs: id (required). Returns: id, error, video, report, +7 more
estimate_recordingCheck a recording requestARead-onlyInspect
Check a recording request without recording or using up any quota. Takes the same arguments as record_html. Returns what to fix (invalidIssues, limitIssues, capacity.reasons), the resource estimate, your limits and your usage: recordings in progress and recordings started in the last 24 hours, plus credits: what the recording would use and what the account has.
Inputs: width (required), height (required), durationSec (required), crf, +21 more. Returns: ok, usage, limits, capacity, +3 more
get_recordingGet a recordingARead-onlyInspect
Get a recording's status, report and a fresh video link (signed, valid for 1 hour). With waitSec, waits up to that many seconds (at most 45) for a queued or running recording to finish. Use it to continue after record_html returned before the video was ready, or to refresh an expired link.
Inputs: id (required), waitSec. Returns: id, error, video, report, +7 more
list_recordingsList recordingsARead-onlyInspect
List your recordings, newest first: id, status, request, report and pageUrl (10 per page by default). Video links are left out; call get_recording for one. Continue with nextCursor.
Inputs: limit, cursor, status. Returns: items, nextCursor
record_htmlRecord HTML to videoAInspect
Record a web page or HTML5 creative (banner, ad, animation, landing page) to a video: MP4 (default), WebM, MOV (ProRes) or GIF. Returns the finished recording with a video link.
Transparency: transparent: true with webm, mov or gif keeps what the page draws without its background (an alpha channel), for stickers, overlays and lower thirds. Give the page no background of its own beyond html and body (those are removed).
Input: either url (a public http(s) page; localhost and private networks are out of reach) or html (a complete single-file HTML document you wrote, published at an unlisted public URL and recorded from there). Set width and height to the creative's size (e.g. 300×250, 728×90, 1080×1920, 1920×1080) and durationSec to how long it runs.
Claude artifacts: a claude.ai/chat link is private, so the recorder can't open it. To record an artifact from this conversation, pass its code as html. An HTML artifact goes in as it is. A React artifact is a component, not a page: wrap it in a complete HTML document with
the component in , rendered with createRoot from react-dom/client into a root div. Replace what only exists inside Claude (@/components/ui imports, window.claude) with plain code. A published artifact (claude.ai/public/artifacts/…) records with Claude's page frame around it, so prefer html.
Waiting: the call waits up to waitSec (default 45 s) for the video. If it isn't done by then, you get the recording with status queued or running; it keeps going. Call get_recording with its id and waitSec to wait for it; don't call record_html again for it.
Retries are safe: identical calls within 10 minutes return the same recording. After changing the creative behind the same url, pass a new revision to record it again. A failed recording is never reused: call again once you've fixed the cause.
Trim markers: by default the video starts at the page's load event and lasts durationSec. To capture exactly the animation, the page can mark it. The recorder defines two global functions in every frame (iframes included):
trim_start(): call it once when the assets are loaded, just before the animation starts. The video starts there.
trim_end(): call it once from the animation's completion callback (e.g. GSAP onComplete, the last animationend). The video ends there and durationSec becomes the maximum. Guard both so the page still works in a normal browser: // assets loaded, just before the animation starts: if (typeof trim_start === 'function') trim_start(); // in the animation's completion callback: if (typeof trim_end === 'function') trim_end(); Never call the two right after each other: that marks an empty clip. With sync "markers" the recording fails instead of falling back to the load event when trim_start() isn't called within markerWaitSec (default 10 s). report.anchor says "trim_start" when the start marker was used.
Play buttons: a page that waits for a click records nothing but its button. For html you write, start the animation on load instead. For a page you can't change, pass actions: [{"type":"click","text":"Play"}] (the button's label, or a selector): the recorder clicks it and the video starts at the click (report.anchor "action").
Links: video.url is signed and valid for 1 hour (get_recording mints a fresh one). pageUrl is the recording's page in the web app, for a person to open later (they sign in).
Credits: each recording uses credits from the account: 1 per started 60 s of video up to 1920×1080 pixels (output size, else crop, else viewport), 5 above that. A failed recording gives its credits back. When the account runs out, the call fails with insufficient_credits: the person adds credits on the web app's Billing page. Limits on length, size, fps and recordings at a time apply too; estimate_recording shows the cost and the balance without recording. Errors say what to change: fix it and call again.
Inputs: width (required), height (required), durationSec (required), crf, +23 more. Returns: id, error, video, report, +7 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm46 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.169 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.