PageToVid
REMOTE · PAGETOVID.COM
Turn any web page into a narrated video: films the real site, writes, voices and captions it
Available components
Last scanned (5 hours ago)
Scores higher than 91% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 14950 tokens (~182/item across 82 items; 82 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management53
- Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 83 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 4 Nov 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 3 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 2 Nov 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 1 Nov 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 31 Oct 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 30 Oct 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 29 Oct 26 +1
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://pagetovid.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=pagetovid.com | CN=WR3,O=Google Trust Services,C=US | 14 Oct 2026 | 12 Jan 2027 | RSA 2048 | SHA256-RSA | ea665844bb4a2fca10297a2ba0f4f24d |
| SANs: pagetovid.com | ||||||
| CN=WR3,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a91568d63abc22861684aa4b5a |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of pagetovid.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| pagetovid.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://pagetovid.com/.well-known/oauth-protected-resource/mcp", scope="videos:read videos:write videos:delete account:read", error="unauthorized"
Bearer resource_metadata="https://pagetovid.com/.well-known/oauth-protected-resource/mcp", scope="videos:read videos:write videos:delete account:read", error="unauthorized" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://apis.google.com https://www.gstatic.com https://js.stripe.com https://*.js.stripe.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https:; media-src 'self' data: blob: https:; connect-src 'self' blob: data: https://storage.googleapis.com https://*.storage.googleapis.com https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://www.google.com https://stats.g.doubleclick.net https://identitytoolkit.googleapis.com https://securetoken.googleapis.com https://www.googleapis.com https://apis.google.com https://*.firebaseapp.com https://fonts.googleapis.com https://fonts.gstatic.com https://api.stripe.com https://link.com https://*.link.com; frame-src 'self' https://*.firebaseapp.com https://accounts.google.com https://checkout.stripe.com https://js.stripe.com https://*.js.stripe.com http |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Protected resource metadata
| Document | https://pagetovid.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://pagetovid.com/mcp |
| Authorisation server | https://pagetovid.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://pagetovid.com/mcp | Verified | 200 | |
| http (plaintext) | http://pagetovid.com/mcp | HTTPS enforced | 302 | https://pagetovid.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
inspect_page See what is on a page worth filming ~284
[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 of it (blocked, block_kind), and which fields will never be typed into.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | The viewport to look through. 9:16 loads the page as a phone does, which is the layout a vertical video films — a responsive site offers different elements there (a sticky call bar, stacked cards) an… |
| kinds | string | – | Comma-separated kinds to keep, e.g. "cta,search,card". The vocabulary is in the `kinds` histogram of any reply: cta, media, image, card, pricing, testimonial, logos, heading, section, nav, search, ch… |
| limit | integer | – | How many candidates to return, best first (a page offers up to 40; a film uses four or five). The `kinds` histogram still counts every one. |
| url | string | yes | A public page to look at. Nothing is filmed and no credit is spent. |
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | yes | – |
| block_kind | string|null | yes | – |
| block_reason | string|null | yes | – |
| blocked | boolean | yes | – |
| candidates | array | yes | – |
| device | string | yes | – |
| kinds | object | yes | – |
| layout | string | yes | – |
| pages | array | – | The other pages of this site a film may be sent to, taken from this page's own links. A scene's page_url is DROPPED unless it is one of these or the page itself, so this is the complete set — not a s… |
| refused_fields | array | yes | selector, label, reason: fields never typed into. |
| title | string | yes | – |
| url | string | yes | – |
| viewport | object | yes | width, height. |
No examples provided.
invite_member Invite a team member ~124
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| credit_cap | integer|null | – | Monthly credit cap; null = none. |
| string | yes | They join by signing in with it. | |
| role | string | yes | editor makes and spends; reviewer comments and approves. |
| site_urls | array|null | – | Limit to these sites; null = all. |
| Name | Type | Req | Description |
|---|---|---|---|
| email_sent | boolean | yes | – |
| member | object | yes | – |
No examples provided.
list_assets List the account's own media bank ~194
[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; a recorded flow's steps are clips of their own, tagged rush-step, each exactly one step of the rush); an audio asset is a film's music as "asset:<id>". Reusing costs no credit.
| Name | Type | Req | Description |
|---|---|---|---|
| character | string | – | Only assets generated for this character. |
| kind | string | – | Only images, clips, uploaded audio or fonts. |
| limit | integer | – | At most this many, newest first (default 40). |
| q | string | – | Words, and/or facets origin: subject: camera: light: look: mood: orientation: |
| site_url | string | – | Only assets attached to this site. |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
No examples provided.
list_characters List the account's characters ~27
[Free] The reusable characters on this account, each with its reference images and description.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| characters | array | yes | – |
No examples provided.
list_comments Read a video's comments ~40
[Free] Timestamped comments from members and review-link guests, oldest first, and the approval round.
| Name | Type | Req | Description |
|---|---|---|---|
| video_id | string | yes | The video's id. |
| Name | Type | Req | Description |
|---|---|---|---|
| approval | – | yes | – |
| comments | array | yes | – |
No examples provided.
list_commons_assets Browse the asset commons ~145
[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 shared.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Only images, or only clips. |
| limit | integer | – | At most this many, newest first (default 40). |
| q | string | – | A word to find in tags or the asset's brief. |
| tag | string | – | One tag, e.g. logo, dashboard, person. |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | yes | – |
| commons_url | string | yes | – |
No examples provided.
list_connections List the account's upstream connections ~27
[Free] Every registered connection with its alias, kind and URL. Credentials are never returned.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| connections | array | yes | – |
No examples provided.
list_formats List formats ~49
[Free] The account's formats, newest change first, with versions and the shows running each.
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | – | Only this site's formats. Omitted, every format on the account. |
| Name | Type | Req | Description |
|---|---|---|---|
| formats | array | yes | – |
| total_count | number | yes | – |
No examples provided.
list_members List team members ~59
[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).
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | – | Only members with this site. |
| Name | Type | Req | Description |
|---|---|---|---|
| members | array | yes | – |
| owner_email | string | yes | – |
| seats_included | number|null | yes | – |
| seats_used | number | yes | – |
| workspace_id | string | yes | – |
| your_role | string | yes | – |
| your_workspaces | array | yes | – |
No examples provided.
list_models List generation models and prices ~108
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_unavailable | boolean | – | Also list models this account cannot use now, with the reason. |
| modality | string | – | Only video or only image models. |
| Name | Type | Req | Description |
|---|---|---|---|
| credit_value_note | string | yes | – |
| models | array | yes | – |
No examples provided.
list_motion_templates List motion templates ~66
[Free] Your saved motion graphics (visual "motion") and the commons, with their params. Rushie designed cards: list_motions {rushie}.
| Name | Type | Req | Description |
|---|---|---|---|
| q | string | – | A word in the name, brief or tags. |
| scope | string | – | Default all. |
| Name | Type | Req | Description |
|---|---|---|---|
| templates | array | yes | – |
No examples provided.
list_motions List animation styles ~83
[Free] How a scene can look: 26 visuals, 1117 animations, motions, transitions, fx. Check pairs before writing scenes. New: get_motion_grammar.
| Name | Type | Req | Description |
|---|---|---|---|
| for_scene | string | – | Narration → 5 picks. |
| rushie | string | – | Search: words, id or beat (+9:16/1:1). |
| Name | Type | Req | Description |
|---|---|---|---|
| edit_styles | array | yes | – |
| families | object | yes | – |
| fx | array | yes | – |
| motions | array | yes | id, label, energy, description, tags, family, min_seconds. |
| presets | array | – | – |
| recommended | array | – | – |
| rule | string | yes | – |
| rushie_index | object | yes | – |
| rushie_summary | object | yes | total, by_aspect, catalogue, top_by_beat, example. |
| rushie_templates | array | yes | id, use, beat, requires, optional, aspects, min_seconds, poster_url, page_url, ui_text, facets, props_schema. |
| transitions | array | yes | – |
| visuals | array | yes | id, family, description, requires, types (path → string|number|boolean), available_in, min_seconds, default_motion. |
No examples provided.
list_objects List the account's objects ~71
[Free] The reusable objects on this account, with reference images, kind and metadata (price, brand, sku).
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Only this kind. |
| q | string | – | A word in the name or description. |
| site_url | string | – | Scope it to one of your sites. |
| Name | Type | Req | Description |
|---|---|---|---|
| objects | array | yes | – |
No examples provided.
list_options List every option in one call ~54
[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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| aspects | array | yes | – |
| brand_kit | object | yes | color_slots, logo_corners, logo_safe_zone {min, max, default}. |
| callouts | array | yes | – |
| caption_animations | array | yes | – |
| caption_emphasis | array | yes | – |
| caption_styles | array | yes | – |
| cursor_styles | array | yes | – |
| end_screens | array | yes | – |
| font_upload | object | yes | exts, max_bytes. |
| fonts | object | yes | – |
| goals | array | yes | – |
| grades | array | yes | – |
| inheritance | object | yes | levels, sources, options (option → levels). |
| intro_templates | array | yes | – |
| languages | array | yes | – |
| looks | array | yes | – |
| models | array | yes | id, modality, example_credits, available. |
| motions | object | yes | text, block: motion ids by family. |
| music | object | yes | ids, asset_pattern. |
| press_effects | array | yes | – |
| sfx_levels | array | yes | – |
| target_seconds | object | yes | min, max, default. |
| transitions | array | yes | – |
| visuals | array | yes | – |
| voices | array | yes | – |
No examples provided.
list_revisions List a storyboard's revisions ~65
[Free] Every storyboard edit, newest first: what changed and a revision_id. restore_revision puts the storyboard back as it was before one.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many, newest first. |
| video_id | string | yes | The video whose storyboard history to use. |
| Name | Type | Req | Description |
|---|---|---|---|
| revisions | array | yes | – |
| video_id | string | yes | – |
No examples provided.
list_scenes List the scene library ~108
[Free] Saved scenes, newest first: name, id, visual, aspect, whether footage is kept, the {{placeholders}} each needs as params, and tags.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | At most this many, newest first (default 40). |
| q | string | – | A word in the name, heading or narration. |
| site_url | string | – | Scope it to one of your sites. |
| tags | array | – | Only scenes carrying every one of these tags. |
| Name | Type | Req | Description |
|---|---|---|---|
| scenes | array | yes | – |
No examples provided.
list_shows List shows ~79
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| site_url | string | – | Only this site's shows. Omitted: every show on the account. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | number | yes | – |
| shows | array | yes | – |
No examples provided.
list_themes List theme presets and the rules a theme must satisfy ~51
[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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| corners | array | yes | – |
| fonts | object | yes | – |
| max_colors | number | yes | – |
| modes | array | yes | – |
| presets | array | yes | – |
| rules | array | yes | – |
| slots | array | yes | – |
No examples provided.
list_video_options List available video options ~60
[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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratios | array | yes | – |
| caption_styles | array | yes | – |
| devices | array | yes | aspect_ratio, device, viewport, layout. |
| goals | array | yes | – |
| languages | array | yes | code, name. |
| looks | array | yes | id, note. |
| music | array | yes | id, name, family. |
| notes | string | yes | – |
| target_seconds | object | yes | min, max, default. |
| voices | array | yes | id, style, pitch, hz. |
No examples provided.
list_videos List videos on this account ~132
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| created_after | string | – | ISO 8601 timestamp; only videos created after it. |
| cursor | string | – | The next_cursor from a previous call. Opaque — pass it back unchanged. |
| limit | integer | – | How many to return. |
| query | string | – | Matches part of the source URL or the title. |
| status | string | – | Only videos in this state. |
| Name | Type | Req | Description |
|---|---|---|---|
| has_more | boolean | yes | – |
| next_cursor | string|null | yes | – |
| total_count | number | yes | – |
| videos | array | yes | – |
No examples provided.
list_voices List the narrator voices ~70
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Language of the samples. |
| pitch | string | – | Only this pitch band. |
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | yes | – |
| samples_available | boolean | yes | – |
| voices | array | yes | – |
No examples provided.
preview_episode Preview one episode of a format, for free ~132
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| format_id | string | yes | The format_id from create_format or list_formats. |
| format_version | integer | – | Preview this version; omitted, the latest. |
| item | object | – | The item to make the episode of: {title, summary, link, image, date}. Omitted, a sample item. |
| Name | Type | Req | Description |
|---|---|---|---|
| beats | array | yes | visual, heading, narration, caption. |
| dropped | array | yes | beat, reason. |
| ok | boolean | yes | – |
| provenance | object | yes | Per source: kind, target, fetched_at, cached. |
| refusal | string|null | yes | – |
| report | object | yes | ok, words, estimated_seconds, issues[] {check, beat, message}. |
| title | string | yes | – |
| upstream | object | yes | calls, records[] {id, kind, target, ms, cached, ok}. |
No examples provided.
preview_motion Preview a motion spec ~186
[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 frame.
| Name | Type | Req | Description |
|---|---|---|---|
| aspects | array | – | Default all three. |
| params | object | – | Param values to check it with (default: the declared defaults). |
| seconds | number | – | The scene's length (its narration slice). Default 5. |
| site_url | string | – | Lint against this site's brand colours. |
| spec | object | – | The spec to preview (or template_id). |
| template_id | string | – | A saved template to preview instead of a spec. |
| Name | Type | Req | Description |
|---|---|---|---|
| aspects | array | yes | – |
| errors | number | yes | – |
| note | string | yes | – |
| ok | boolean | yes | – |
| preview | string | yes | – |
| scene_seconds | number | yes | – |
| warnings | number | yes | – |
No examples provided.
quote_cost Quote a cost before spending ~215
[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 make is refused with what it can. plan_note says when this plan has no AI generation.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many, 1-4. |
| duration_s | number | – | Clip length in seconds, within the model's range. |
| kind | string | – | Price one generation of this kind. |
| model | string | – | A model id from list_models. Omit for the house model. |
| resolution | string | – | Clip resolution, one the model offers. |
| role | string | – | A full-frame scene or a presenter in a corner (a presenter uses the cheapest resolution). |
| video_id | string | – | Price the next rerender_video of this video. |
| Name | Type | Req | Description |
|---|---|---|---|
| breakdown | array | yes | – |
| cover_note | string | – | – |
| credits | number | yes | – |
| plan_note | string | – | – |
| warnings | array | yes | – |
No examples provided.
register_mcp_connection Name an upstream server for resolvers ~194
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| alias | string | yes | The name a format's resolvers use: {"mcp": "finance_ds", ...}. Letters, digits, underscore. |
| kind | string | – | mcp: JSON-RPC tools/call. http: plain JSON endpoints under this base. |
| note | string | – | What this server is, for the list. |
| secret | string | – | A bearer token or API key sent as Authorization: Bearer. Stored encrypted, never returned, never in a format. |
| url | string | yes | The server's public http(s) address: an MCP endpoint (streamable HTTP) or an http API base. |
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | yes | – |
No examples provided.
release_video Publish a held video ~49
[Free] Publishes a video its quality_gate held (status "held") as it is: status becomes done. Nothing is re-rendered.
| Name | Type | Req | Description |
|---|---|---|---|
| video_id | string | yes | The held video. |
| Name | Type | Req | Description |
|---|---|---|---|
| page_url | string|null | yes | – |
| permanent_url | string|null | yes | – |
| status | string | yes | – |
| video_id | string | yes | – |
| video_url | string|null | yes | – |
No examples provided.
remove_member Remove a member ~47
[Free] Removes a member or cancels an invite, freeing the seat; your own member id leaves the workspace. Their work stays.
| Name | Type | Req | Description |
|---|---|---|---|
| member_id | string | yes | From list_members. |
| Name | Type | Req | Description |
|---|---|---|---|
| member | object | yes | – |
No examples provided.
request_approval Ask for approval ~56
[Free] Opens an approval round for the named approvers; supersedes a pending one.
| Name | Type | Req | Description |
|---|---|---|---|
| approver_ids | array | yes | Member ids, or the owner's user id. |
| video_id | string | yes | The video's id. |
| Name | Type | Req | Description |
|---|---|---|---|
| approval | object | yes | – |
No examples provided.
request_changes Request changes on a video ~41
[Free] Closes the pending round as changes requested.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | yes | What to change. |
| video_id | string | yes | The video's id. |
| Name | Type | Req | Description |
|---|---|---|---|
| approval | object | yes | – |
No examples provided.
rerender_video Re-render a video from its storyboard ~410
[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). The file is replaced when the new render finishes. Returns a start receipt; call get_video for the full status.
| Name | Type | Req | Description |
|---|---|---|---|
| callback_url | string | – | As create_video, for this render. |
| captions_only | boolean | – | true re-times the subtitles on the existing voice track and renders again; nothing is re-recorded, re-scripted or re-voiced. The first resync after a paid render is free, the next costs a render's cr… |
| draft | boolean | – | As create_video; only before the first paid render. |
| dry_run | boolean | – | Quote only; nothing made or charged. |
| idempotency_key | string | – | A caller-chosen id for this request. Sending the same key again within 24 hours returns the same re-render instead of starting and charging a second time — use it if your client may retry. |
| max_credits | integer | – | Refuse (budget_exceeded + quote) above this. |
| outputs | array | – | As create_video; must include this video's shape. Other shapes re-render their sibling or make one, a render each. |
| quality_gate | object | – | As create_video, for this render. |
| target_seconds | integer | – | What this film should run now, if it has legitimately grown or shrunk since creation. length_within_tolerance is measured against it and later re-renders keep it; their length fit aims at it (words y… |
| theme | object | – | As create_video; replaces the video's theme and is kept for later re-renders. |
| video_id | string | yes | The video to re-render. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | number | yes | – |
| draft | boolean | – | – |
| dry_run | boolean | – | – |
| editor_url | string | – | – |
| error | string|null | – | – |
| eta_seconds | number | – | – |
| format_group_id | string | – | – |
| formats | array | – | Every shape: video_id, aspect_ratio, status, primary, video_url. |
| free_length_fix | boolean | – | – |
| free_resync | boolean | – | – |
| idempotent_replay | boolean | – | – |
| next_step | string | – | – |
| notes | array | – | – |
| page_url | string|null | – | – |
| phase_label | string | – | – |
| poll_after_seconds | number | – | – |
| progress | number | – | – |
| quote | object | – | – |
| status | string | – | – |
| upgrade | object | – | – |
| video_id | string | – | – |
| video_url | string|null | – | – |
| warnings | array | – | – |
| webhook_secret | string | – | – |
No examples provided.
restore_revision Undo storyboard edits ~91
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| revision_id | string | yes | From list_revisions. The storyboard returns to how it was BEFORE this edit. |
| video_id | string | yes | The video whose storyboard history to use. |
| Name | Type | Req | Description |
|---|---|---|---|
| restored_to_before | string | yes | – |
| scene_count | number | yes | – |
| undo_revision_id | string | yes | – |
| video_id | string | yes | – |
No examples provided.
rotate_webhook_secret Rotate the webhook signing secret ~45
[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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| secret_set | boolean | yes | – |
| webhook_secret | string | – | – |
| webhook_url | string|null | yes | – |
No examples provided.
run_show Run a show now ~184
[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: it makes the episodes and lets the scheduler run the show from then on.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | false (the default): a free preview of the episodes this run would make. true: make them, and on a held show, confirm it — from then on the scheduler runs it at its cadence. |
| items | array | – | The items to make episodes from, for a manual show. A feed show ignores this and reads its feed. |
| show_id | string | yes | The show_id from create_show or list_shows. |
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | yes | – |
| credits_charged | number | yes | – |
| credits_left_today | number|null | yes | – |
| held | boolean | yes | – |
| needs_confirmation | boolean | yes | – |
| next_step | string | yes | – |
| reason | string|null | yes | – |
| show_id | string | yes | – |
| skipped | array | yes | – |
| started | array | yes | – |
| would_make | array | yes | – |
No examples provided.
save_motion_spec Save a motion spec ~149
[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}}.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Default: the spec's name. |
| params | object | – | Param values to check it with (default: the declared defaults). |
| site_url | string | – | Lint against this site's brand colours. |
| spec | object | yes | A motion spec (get_motion_grammar). |
| tags | array | – | Labels to find it by. |
| visibility | string | – | Default private; commons is owner/admin only. |
| Name | Type | Req | Description |
|---|---|---|---|
| params_schema | array | yes | – |
| repairs | array | yes | – |
| template | object | yes | – |
| use | object | yes | – |
| warnings | array | yes | – |
No examples provided.
save_scene Save a scene to the library ~140
[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 fill them per use.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | A name to reuse it by. The same name replaces the earlier entry. |
| scene_id | string | yes | The scene, from get_storyboard. |
| tags | array | – | Tags to find it by. |
| video_id | string | yes | The video the scene is in. |
| Name | Type | Req | Description |
|---|---|---|---|
| replaced | boolean | yes | – |
| scene | object | yes | – |
| warnings | array | – | – |
No examples provided.
set_account_defaults Set the account's option defaults ~140
[Free] Partial update of the options every film starts from (below a site's brand kit). null clears a field.
| Name | Type | Req | Description |
|---|---|---|---|
| caption_style | string | – | Default caption style. |
| end_screen | string | – | Outro card template. |
| font_family | string | – | A list_options face. |
| intro | string | – | Intro card template. |
| look | string | – | Default look. |
| model | string | – | Clip model for ai_mode rich (list_models). |
| music | string | – | Default bed, or "asset:<id>". |
| transition | string | – | Default arrival for scenes naming none. |
| voice | string | – | Default narrator. |
| Name | Type | Req | Description |
|---|---|---|---|
| defaults | object | yes | – |
No examples provided.
set_brand_kit Set a site's brand kit ~315
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| caption_style | string | – | Default caption style. |
| colors | object|null | – | Hex per slot; partial merges. |
| end_screen | string | – | Outro card template. |
| font_asset_id | string | – | Font asset id (upload_asset kind "font"); outranks font_family. |
| font_family | string | – | A list_options face. |
| from_detect | boolean | – | Fill palette, face and logo from detect_brand first; your fields win. |
| intro | string | – | Intro card template. |
| logo_asset_id | string | – | Image asset id (upload_asset). |
| logo_corner | string | – | Logo corner on the picture, or none. |
| logo_safe_zone | number | – | Logo clear space, % of the short side. |
| look | string | – | Default look. |
| model | string | – | Clip model for ai_mode rich (list_models). |
| music | string | – | Default bed, or "asset:<id>". |
| site_url | string | yes | Any URL of the site. |
| transition | string | – | Default arrival for scenes naming none. |
| voice | string | – | Default narrator. |
| watermark | boolean | – | Paid plans: badge on or off. Free keeps it. |
| Name | Type | Req | Description |
|---|---|---|---|
| account_defaults | – | yes | – |
| detected | boolean | – | – |
| domain | string | yes | – |
| exists | boolean | yes | – |
| film_theme | – | yes | – |
| font_url | string|null | yes | – |
| kit | object | yes | The set_brand_kit fields; null = inherited. |
| logo_url | string|null | yes | – |
| not_painted | array | yes | – |
| painted | array | yes | – |
| watermark_effective | boolean | yes | – |
| watermark_from | string | yes | – |
No examples provided.
set_webhook Set the account's completion webhook ~89
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string|null | yes | Public https URL for the completion event of every render that has no callback_url of its own; null removes it. Signed as callback_url describes on create_video. |
| Name | Type | Req | Description |
|---|---|---|---|
| secret_set | boolean | yes | – |
| webhook_secret | string | – | – |
| webhook_url | string|null | yes | – |
No examples provided.
translate_video Translate a video into other languages ~148
[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 reused and `scenes` says so. Charged and refunded like any render; AI visuals already made are reused free.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | – | Same key within 24 h returns the videos already started, uncharged. |
| languages | array | yes | One new video each. |
| video_id | string | yes | A finished video. |
| Name | Type | Req | Description |
|---|---|---|---|
| credits_charged | number | yes | – |
| source_video_id | string | yes | – |
| videos | array | yes | – |
No examples provided.
update_character Update a character ~109
[Free] Changes a character's references, description or name; anything not given is kept. Clips already made keep the look they were made with.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string|null | – | What the character looks like; null clears it. |
| name | string | yes | The character's current name. |
| new_name | string | – | Rename it. Scenes that name the old name must be updated. |
| refs | array | – | 1-3 reference image URLs from your bank, replacing the current ones. |
| Name | Type | Req | Description |
|---|---|---|---|
| character | object | yes | – |
No examples provided.
update_format Revise a format: writes a new version ~317
[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 them. Validated whole before anything is written.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | As create_format. |
| brand_name | string | – | As create_format. |
| focus_template | string | – | As create_format. |
| format_id | string | yes | The format_id from create_format or list_formats. |
| goal | string | – | As create_format. |
| intro | boolean | – | As create_format. |
| language | string | – | As create_format. |
| music | string | – | As create_format. |
| name | string | – | A new name. |
| note | string | – | What this version changes, for the version history. |
| outro | boolean | – | As create_format. |
| programme | object | – | As create_format. |
| routing | object | – | As create_format. |
| scenes | array | – | animation formats: the scene templates, as create_animation's scenes (not from_library), with the placeholders in any string. |
| subtitles | boolean | – | As create_format. |
| target_seconds | integer | – | As create_format. |
| theme | object | – | As create_video. |
| title_template | string | – | As create_format. |
| tone | string | – | As create_format. |
| voice | string | – | As create_format. |
| Name | Type | Req | Description |
|---|---|---|---|
| format | object | yes | – |
| version | number | yes | – |
No examples provided.
update_member Change a member's role, sites or cap ~80
[Free] Changes only the fields sent. Only the owner grants or changes admin and billing.
| Name | Type | Req | Description |
|---|---|---|---|
| credit_cap | integer|null | – | Monthly credit cap; null = none. |
| member_id | string | yes | From list_members. |
| role | string | – | New role. |
| site_urls | array|null | – | Limit to these sites; null = all. |
| Name | Type | Req | Description |
|---|---|---|---|
| member | object | yes | – |
No examples provided.
update_motion_template Change a motion template ~133
[Free] Renames, retags, sets param defaults or visibility, or replaces the spec of a template you wrote. Films already using it keep their picture.
| Name | Type | Req | Description |
|---|---|---|---|
| defaults | object | – | New default values for its params, by name. |
| name | string | – | Rename it. |
| spec | object | – | A new spec for a template you wrote (save_motion_spec); checked like validate_motion_spec. |
| tags | array | – | Labels to find it by. |
| template_id | string | yes | The template's id. |
| visibility | string | – | commons shares it with every account (owner/admin only). |
| Name | Type | Req | Description |
|---|---|---|---|
| template | object | yes | – |
| warnings | array | – | – |
No examples provided.
update_object Change an object ~142
[Free] Changes only the fields sent. Media already generated with it is kept until a scene's description changes.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string|null | – | One line added to every prompt that names it. |
| kind | string | – | What it is. |
| metadata | object | – | Merged into the metadata; a null value clears that key. |
| name | string | yes | The object to change. |
| new_name | string | – | Rename it. |
| refs | array | – | Replace the references. |
| site_url | string | – | Scope it to one of your sites. |
| source_url | string | – | Where it comes from (a product page). Attribution only. |
| Name | Type | Req | Description |
|---|---|---|---|
| object | object | yes | – |
No examples provided.
update_show Pause, resume or retune a show ~322
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | – | false pauses the show (the scheduler skips it, run_show refuses); true resumes it. |
| cadence | string | – | A new cadence. |
| format_id | string | – | Move the show to another format of the same kind. |
| format_version | integer | – | Pin the show to this version of its format. |
| format_version_latest | boolean | – | true unpins the show so it follows its format's latest version. |
| max_credits_per_day | integer | – | A new daily credit cap (an episode is 40 credits). |
| max_episodes_per_run | integer | – | A new per-run cap. |
| name | string | – | A new name. |
| repeat_every | string | – | query and watchlist shows: a new period, or none to stop repeating. |
| rotate_webhook_secret | boolean | – | webhook shows: mint a new signing secret (returned once in this call's webhook_secret); the old one stops working at once. |
| show_id | string | yes | The show_id from create_show or list_shows. |
| source | object | – | query shows: a new source (same shape as create_show). |
| watchlist | array | – | watchlist shows: the new list; it replaces the old one. Items already made stay made. |
| Name | Type | Req | Description |
|---|---|---|---|
| show | object | yes | – |
| webhook_secret | string | – | – |
No examples provided.
How do I install the PageToVid MCP server?
PageToVid is a hosted endpoint at https://pagetovid.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · pagetovid.com
claude mcp add --transport http com-pagetovid-pagetovid 'https://pagetovid.com/mcp'
What is the PageToVid MCP server?
PageToVid is an MCP server listed in the public MCP registry as com.pagetovid/pagetovid. Turn any web page into a narrated video: films the real site, writes, voices and captions it. This page covers its hosted endpoint (https://pagetovid.com/mcp).
Is the PageToVid MCP server safe to use?
PageToVid scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PageToVid MCP server expose?
PageToVid exposes 82 tools: create_video, create_animation, cancel_video, get_video, release_video, and 77 more. Their descriptions and schemas cost roughly 14,133 tokens of context every time the server is loaded.
Does the PageToVid MCP server require authentication?
Yes. PageToVid asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the PageToVid MCP server still maintained?
PageToVid is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.