synthesia-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SYNTHESIA_API_KEY | Yes | Your Synthesia API key. Required. | |
| SYNTHESIA_MCP_CONFIG | No | Optional path to a config JSON file for custom avatars/voices and defaults. Defaults to ~/.synthesia-mcp/config.json. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_avatarsA | List Synthesia avatars available for video creation: stock avatars from a bundled catalog snapshot, plus any custom/personal avatars registered in the local server config. Returns avatar IDs to use as the |
| list_voicesA | List Synthesia text-to-speech voices: stock voices from a bundled catalog snapshot plus custom voices registered in the local server config. Returns voice IDs for the |
| list_templatesA | List Synthesia video templates (created in STUDIO) with their IDs and variable names. Templates are the way to produce rich, designed videos via the API — use create_video_from_template with a templateId from this list. Paginated: pass the returned nextOffset as offset to fetch more. |
| get_templateA | Retrieve a single Synthesia template by ID, including its full variable list. Call this before create_video_from_template to see exactly which templateData keys are expected (variable names are case-sensitive). |
| create_videoA | Create a Synthesia avatar video from one or more scenes (avatar + background + script each). Rendering is asynchronous: this returns a videoId immediately; check progress later with get_video. DEFAULTS TO A FREE DRAFT (watermarked test render); pass render_mode='final' only when the user explicitly wants to spend quota on a final render. For visually rich layouts (on-screen text, images), prefer create_video_from_template with a STUDIO-designed template. |
| create_video_from_templateA | Create a Synthesia video from a STUDIO template by substituting its variables (templateData). The server fetches the template first and validates every templateData key against its declared variables — variable names are case-sensitive. Text values are HTML-entity-escaped automatically (Synthesia requirement); media variables accept an uploaded asset ID or a URL. DEFAULTS TO A FREE DRAFT (watermarked); pass render_mode='final' only on explicit approval. Returns a videoId immediately; check progress with get_video. |
| get_videoA | Retrieve a Synthesia video by ID: render status (in_progress / complete / error / rejected), and once complete, a time-limited download URL, duration, and thumbnail. Use this to check on videos created with create_video or create_video_from_template. Renders take minutes — do not call this in a tight loop. |
| list_videosA | List videos in the Synthesia account (created via API or STUDIO), newest context first. Paginated: pass the returned nextOffset as offset to fetch more. |
| update_videoB | Update a video's title, description, visibility, or call-to-action button. The main use is flipping visibility to 'public' to activate the Synthesia share page for a finished video. |
| delete_videoA | PERMANENTLY delete a video from the Synthesia account. Destructive and double-gated: the call is refused unless confirm=true is passed. Only set confirm=true after the user has explicitly confirmed deletion of this specific video. |
| upload_assetA | Upload an image or video to Synthesia and get back an asset ID, usable as a scene background in create_video or as a media variable value in create_video_from_template. Accepted types: image/jpeg, image/png, image/svg+xml, video/mp4, video/webm (GIF and WebP are rejected by Synthesia). Provide a local filePath or a url. TIP: backgrounds and media variables also accept URLs directly — uploading is only needed for non-public files or when a stable asset ID is preferred. For media variables, match the aspect ratio of the element being replaced to avoid stretching. |
| upload_script_audioA | Upload pre-recorded narration audio (mp3 / audio/mpeg only) to use INSTEAD of text-to-speech: pass the returned ID as scriptAudioId (with scriptLanguage) in a create_video scene. NOTE: Synthesia processes uploaded script audio asynchronously — if video creation fails right after uploading with an error about the asset, wait a moment and retry; processing must complete before the audio is usable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/keithazz/synthesia-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server