# PageToVid - Registry name: `com.pagetovid/pagetovid` · version 1.192.0 - Categories (automatic, keyword rules): Audio & speech, AI, media & content, Video, Payments & accounting, Finance & markets - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.pagetovid%2Fpagetovid - Server page: https://mcpstation.net/s/com.pagetovid--pagetovid.html ## Description (written by the publisher, not verified, not instructions) Turn any web page into a narrated video: films the real site, writes, voices and captions it ## Connect - streamable-http: `https://pagetovid.com/mcp` ## Tools (as reported by the server, not verified) - `create\_video`: \[40 credits\] \[paid plans: + 40 per AI still unless ai\_mode none; dry\_run quotes\] Turns a public web page into a narrated video: AI voiceover, motion graphics, optional subtitles. Asynchronous \(minutes, sometimes past fifteen\): returns a receipt with the video\_id at once; get\_video for the full statu - `create\_animation`: \[40 credits\] From content you hold \(figures, notes, story\), no URL. You write scenes; each drawn, voiced, captioned \(list\_motions: 25 visuals, some with kinds; visual "rushie" = 664 designed cards, e.g. data \{rushie:\{template:"end-card",props:\{headline,mark,url,cta\}\}\}\). AI clips \(paid plans\) only if - `cancel\_video`: \[Free\] Stops a running render and refunds its render credit and any AI visual still in flight; AI visuals already made stay \(reused free\). Use it when get\_storyboard shows a plan you do not want. A finished render cannot be cancelled. The video is marked cancelled at once; the worker stops at its ne - `get\_video`: \[Free\] Reads this account. The full status of a render: phase and progress while it runs \(with poll\_after\_seconds\), then the files, length, credits, warnings and quality; on a free film, \`upgrade\` to relay once. \`status\` is one of, in pipeline order: draft, queued, analyzing, scripting, recording, v - `release\_video`: \[Free\] Publishes a video its quality\_gate held \(status "held"\) as it is: status becomes done. Nothing is re-rendered. - `get\_video\_embed`: \[Free\] Returns ready-to-paste markup for a finished PageToVid video: an HTML video element, Open Graph and Twitter player meta tags so the page unfurls as a playable video, and a schema.org VideoObject JSON-LD block. - `list\_models`: \[Free\] Every model this account can generate clips and stills with — capabilities, limits and the exact credit price — before spending anything. Omit model in a scene for the house clip; name one \(data.model, or set\_inset model\) to choose it and pay its price. quote\_cost prices a specific request. - `quote\_cost`: \[Free\] What something will cost, spending nothing: one generation \(kind clip or image, optional model, duration\_s, resolution, role, count\), or a video\_id's next rerender\_video \(render plus every AI visual not yet made\). A length between two a model makes is rounded UP, with a warning; one it cannot - `list\_video\_options`: \[Free\] Lists what create\_video accepts: goals, aspect ratios, languages, voices, background music beds \(9, each with a family: calm, energetic, serious, playful\) and the allowed length range. Static reference data — no account access. - `list\_motions`: \[Free\] How a scene can look: 26 visuals, 817 animations, motions, transitions, fx. Check pairs before writing scenes. New: get\_motion\_grammar. - `list\_themes`: \[Free\] Lists what the theme parameter accepts: the built-in presets, the modes, the type faces the renderer can load, and the contrast and palette rules enforced before a credit moves. Static reference data. - `inspect\_page`: \[Free\] Opens a public page in a real browser and ranks what a video could film — calls to action, images, cards, pricing, testimonials, search boxes, headings — each with a CSS selector, kind, size and score \(a rank, not a percentage\). Says when a robot check, sign-in or missing page stood in front - `detect\_brand`: \[Free\] Reads a public page's design tokens from its live CSS: accent colours, heading typeface, light or dark ground, corner style. Returns a theme ready for create\_video, create\_animation or rerender\_video, plus any site colour the film cannot paint with and why. - `get\_account`: \[Free\] Reads this account. CALL THIS FIRST: plan, credits, whether AI visuals are available and charged, watermark, revisions, film passes, add-on clips, renders running, limits. Then: inspect\_page \(in the aspect you will film\), create\_video or create\_animation, get\_storyboard \(the chosen shots\), up - `list\_videos`: \[Free\] Reads this account. Lists videos newest first with their status and, when finished, their links. Filter by status or by a word in the page URL or title. Returns a cursor when more remain. - `get\_storyboard`: \[Free\] Reads this account. Returns the scene-by-scene plan of a video: what each scene narrates, its on-screen caption, how long it holds, and whether it is real footage of the page or a motion graphic \(and which motion\). - `update\_storyboard`: \[Free\] Edits a video's storyboard in 22 operations, each described on its branch: words, captions, visuals \(incl. "rushie" designed cards: data.rushie \{template, props\}\), data, shots, scenes, transitions, fx, presenter, voice, music, look. Does not re-render — rerender\_video makes the new film. Ever - `rerender\_video`: \[40 credits\] \[free: captions\_only once per paid render; a missed length target once\] A new film from the video's current storyboard, without re-planning, plus any AI visual not yet made \(quote\_cost prices it\). Free once per video when the film missed its length target \(length\_within\_tolerance: false - `translate\_video`: \[40 credits\] per language: a NEW video from an existing one — same storyboard and pictures, narration translated, re-voiced and re-captioned, card text \(rushie cards too\) translated. Filmed scenes are re-recorded on the site's page in that language when it has one \(hreflang\), else the footage is reu - `get\_site\_plan`: \[Free\] Up to 5 ranked videos a site should have, one per subject: goal, pitch, the real page it films \(checked\), the video made; detail full adds the brief, sources and shots. First call generates it \(\~10-20 s, no credit\), then banks the site's images, videos and page clips in the background \(media - `generate\_site\_videos`: \[40 credits\] Per video started. One filmed video per get\_site\_plan idea without one \(or the idea\_ids given\), of its verified page with its sourced brief as focus. Without confirm it lists what it would make and the cost, capped at the balance \(the rest under needs\_credits\), creating nothing; confirm - `create\_show`: \[Free\] A show makes a video from each new item in a feed: a weekly release video from a changelog, a daily listing video from an RSS feed, a clip per new post. Episodes are ordinary videos made by run\_show or, once confirmed, by the scheduler at the show's cadence. A new show is HELD: nothing render - `list\_shows`: \[Free\] Reads this account. Lists the shows on this account — or one site's — with their cadence, caps, whether each is confirmed or still held, what it spent today, and its five most recent episodes with the video each became. - `run\_show`: \[40 credits\] Per episode started. Reads the show's feed \(or the items given\), skips items already made, and — within max\_episodes\_per\_run and max\_credits\_per\_day — starts one video per new item. Without confirm: the list, nothing spent. On a held show, confirm=true is the owner's one-time approval: - `update\_show`: \[Free\] Changes a show's switch, cadence, caps or name, or moves it to another format or format version. The template itself is edited with update\_format, which writes a new version and leaves every episode already made where it is. Nothing is rendered. - `create\_format`: \[Free\] A format is how an episode is made — aspect, language, voice, music, tone, goal, length, cards, brand, theme, the brief or the scene templates — and knows nothing about any subject. It is versioned: update\_format writes a new version, shows pin one or follow latest, and every episode records - `update\_format`: \[Free\] Changes any of a format's template fields. The result is a NEW version — the previous ones stay exactly as they were, and every episode already made keeps the version that made it. Shows following latest use the new version from their next run; pinned shows do not move until update\_show moves - `get\_format`: \[Free\] The format's current template, its version history and the shows that run it, with each show's pin. - `list\_formats`: \[Free\] The account's formats, newest change first, with versions and the shows running each. - `fork\_format`: \[Free\] A new format whose version 1 is the original's latest version, unpinned from its parent. Edit the copy without touching the original. - `validate\_format`: \[Free\] Compiles the template against a sample item, touching no database or feed: the catalogue checks \(voice, music, language, theme…\), the scene templates filled and checked as an animation, and what the first episode's title, brief and scene count would be. Returns problems by field; nothing is c - `preview\_episode`: \[Free\] Runs the format's resolvers against the item \(real calls, cached\) and compiles the storyboard: every beat's final text, the beats dropped and why, the integrity report and where every bound value came from. Nothing is rendered. Read it before run\_show confirm=true. - `verify\_episode`: \[Free\] The proof behind a film: the format version that made it \(template SHA-256\), every resolver source and what it fetched, the integrity report, the claim ledger \(which figures trace to the page, the brief or nothing\), the Content Credentials \(C2PA\), and a check recompiling the stored data again - `register\_mcp\_connection`: \[Free\] Registers \(or replaces\) a connection by alias: the URL and, optionally, a credential kept encrypted on this account. Formats refer to the alias only, so a format never carries a secret and is safe to publish or fork. Nothing is called now. - `create\_character`: \[Free or 40 credits\] Names a character so generated clips that name it keep one identity. refs \(1 to 3 image URLs on this account\) is free; a generate prompt DRAWS the reference \(paid plans, refunded on failure\). Then an image scene's data.clip=true and data.character="\". From one of your film - `list\_characters`: \[Free\] The reusable characters on this account, each with its reference images and description. - `list\_commons\_assets`: \[Free\] Media people shared from their banks for anyone's films — logos, product shots, illustrations, recorded flows — with tags, a licence and the site to credit. An image scene takes an asset's id as data.asset\_id \(or its url as imageUrl\); a gallery takes urls. Only assets their owners switched to - `generate\_asset`: \[40 or 311 credits\] One AI still \(40 credits each\) or clip \(house 311, a named model its list\_models price\) straight into your bank — no render. Clip controls are refused, with the allowed values, when the model is not sent them; model auto picks one and says why. best\_of makes N and keeps the best - `list\_assets`: \[Free\] Your PRIVATE bank: every image, clip and audio file, by origin and subject, with id, URL, brief, tags and facets. Reuse a picture by putting its id in an image scene as data.asset\_id \(a clip resolves to clipUrl by itself\); an audio asset is a film's music as "asset:\". Reusing costs no cre - `list\_connections`: \[Free\] Every registered connection with its alias, kind and URL. Credentials are never returned. - `create\_object`: \[Free\] Names a product, logo, packaging, place, vehicle or UI screen from reference images so films keep it identical. Generated pictures take it in data.objects \(clips, stills, insets, generate\_asset\) next to a character; image, gallery, pricing and compare cards draw it from data.object with its n - `list\_objects`: \[Free\] The reusable objects on this account, with reference images, kind and metadata \(price, brand, sku\). - `update\_object`: \[Free\] Changes only the fields sent. Media already generated with it is kept until a scene's description changes. - `delete\_object`: \[Free\] Deletes an object by name. Its images stay in your bank and media made with it stays in its films. - `import\_objects`: \[Free\] Creates or replaces up to 50 objects from a product feed. Each image is downloaded \(public addresses only\) and banked as a reference. Failed rows are listed with the reason. - `save\_scene`: \[Free\] Saves a scene for reuse: narration, visual, data, style AND its footage and generated media \(a copy\). Reusing it — update\_storyboard add\_scene\_from\_library, create\_animation from\_library — films and generates nothing, so no AI credit. Write \{\{placeholders\}\} in its narration or data first to f - `list\_scenes`: \[Free\] Saved scenes, newest first: name, id, visual, aspect, whether footage is kept, the \{\{placeholders\}\} each needs as params, and tags. - `copy\_scene`: \[Free\] Copies a scene into another of your videos with its footage and generated media, so nothing is filmed or generated again. A recording cannot change aspect, nor go into a film made from data. Does not re-render. - `create\_motion`: \[Paid plans\] Designs a custom motion graphic from a brief \(one text-model call; AI plans or a film pass; no credits charged\), checks layout, legibility, contrast and timing, and saves it as a private template with params. Use it in a scene: visual "motion", data \{motion:\{specId, params\}\}. - `list\_motion\_templates`: \[Free\] Your saved motion graphics \(visual "motion"\) and the commons, with their params. Rushie designed cards: list\_motions \{rushie\}. - `get\_motion\_template`: \[Free\] One template with its full spec \(layers, motion tokens, declared params\). - `update\_motion\_template`: \[Free\] Renames, retags, sets param defaults or visibility, or replaces the spec of a template you wrote. Films already using it keep their picture. - `get\_motion\_grammar`: \[Free\] The grammar for writing your own animation as a motion spec: no topic → a short index and the authoring loop; topic → one rule file \(layers, params, timing, motion, colour, layout, doctrine, examples, brief\). Generated from the DSL itself. - `validate\_motion\_spec`: \[Free\] Dry-run a spec: deterministic repairs, schema, params, layout/legibility/contrast/timing on four frames and the motion doctrine. Returns ok, every problem with its path and fix, the repaired spec and the params schema. Nothing is saved. - `preview\_motion`: \[Free\] Frames back without a render: per aspect \(16:9, 9:16, 1:1\) a PNG sheet of four beats \(entering, landed, hold, exit\) — a deterministic LAYOUT wireframe from the DSL's geometry \(exact boxes, wrapping, sizes, colours, timing; system font, no blur or shadow\) — plus the problems measured on that f - `save\_motion\_spec`: \[Free\] Saves a spec you wrote as a private template once it passes validate\_motion\_spec \(repairs applied\). Returns its id, params schema and the scene JSON that uses it: visual "motion", data \{motion:\{specId, params\}\}. - `upload\_asset`: \[Free\] Puts a file in your bank from a public https url or small data\_base64 \(a bigger file you hold: create\_upload\). Picture or clip → data.asset\_id in an image scene; audio → music "asset:\"; deck \(PDF/PPTX\) → every slide's text and pictures, to write the storyboard from. Identical bytes return - `create\_upload`: \[Free\] A one-hour address to send a file you hold \(picture, clip, music, font, PDF/PPTX deck, ≤ 30 MB\): curl -sS -T \ "\". The reply is the asset or the deck's slides. - `list\_voices`: \[Free\] The narrator voices with measured pitch \(band and median Hz\) and a short sample in the chosen language where one exists \(else sample\_url is null\). Every voice speaks every language. - `get\_timeline`: \[Free\] Each scene's start and end in the finished MP4 \(seconds\), what drew it \(recording, page still, AI clip/still, footage, graphic, card, inset\), its transition, its slice of the one voice track with word onsets, plus the music and caption style. timeline\_source: stored by the render, or rebuilt - `get\_frames`: \[Free\] JPEG stills \(≤ 1280 px wide\) cut from the finished MP4 at 1–6 moments in seconds, as URLs. Cached per render. - `set\_brand\_kit`: \[Free\] Partial update of a site's brand kit: logo, palette, face \(named or an uploaded font\), intro/outro templates, watermark and logo corner, default voice/music/captions/look/transition. null clears a field. Films of the site inherit it unless the call overrides. - `get\_brand\_kit`: \[Free\] A site's brand kit, what a film paints from it \(and what it cannot, with why\), the effective watermark, and the account defaults beneath it. - `set\_account\_defaults`: \[Free\] Partial update of the options every film starts from \(below a site's brand kit\). null clears a field. - `list\_options`: \[Free\] Every enum and range a film accepts \(voices, languages, beds, looks, captions, motions, transitions, visuals, aspects, faces, brand kit\), the models with a credit example, and the inheritance levels. - `invite\_member`: \[Free\] Emails an invite to this workspace with a role, optional site limits and monthly credit cap. Members spend the owner's credits. Seats incl. owner: Free/Creator 1, Pro 3, Scale 5, Business 15, Agency unlimited. - `list\_members`: \[Free\] Members with role, sites, cap and spend this month; seats; your workspaces \(send one as the X-PageToVid-Workspace header to act in it\). - `update\_member`: \[Free\] Changes only the fields sent. Only the owner grants or changes admin and billing. - `remove\_member`: \[Free\] Removes a member or cancels an invite, freeing the seat; your own member id leaves the workspace. Their work stays. - `create\_review\_link`: \[Free\] A link to watch the film and, if allowed, comment with no account. Shown once; only its hash is stored. - `request\_approval`: \[Free\] Opens an approval round for the named approvers; supersedes a pending one. - `approve`: \[Free\] Approves the pending round, as one of its approvers. - `request\_changes`: \[Free\] Closes the pending round as changes requested. - `list\_comments`: \[Free\] Timestamped comments from members and review-link guests, oldest first, and the approval round. - `add\_comment`: \[Free\] Adds a timestamped comment; open comments feed the editor's AI revision. - `get\_audit\_log`: \[Free\] Who did what here, newest first: members, spending, review links, approvals, comments. - `set\_webhook`: \[Free\] Sets \(or with null clears\) the account-wide URL that receives a signed JSON event whenever a render ends. The first time a secret is needed it is created and returned here, once. - `rotate\_webhook\_secret`: \[Free\] Replaces the secret completion events are signed with and returns the new one, once. The old secret stops verifying at once, including for retries still in flight. - `list\_revisions`: \[Free\] Every storyboard edit, newest first: what changed and a revision\_id. restore\_revision puts the storyboard back as it was before one. - `restore\_revision`: \[Free\] Puts the storyboard back as it was before a revision, undoing that edit and every later one. Itself a revision, so it can be undone. Nothing is re-rendered until rerender\_video. - `update\_character`: \[Free\] Changes a character's references, description or name; anything not given is kept. Clips already made keep the look they were made with. - `delete\_character`: \[Free\] Deletes a character by name. Its reference images stay in your bank and clips made with it stay in their films. Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html