lipdub-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIPDUB_API_KEY | No | Your API key. Required. | |
| LIPDUB_LOG_LEVEL | No | debug, info, warn, error. Logs go to stderr. | warn |
| LIPDUB_API_KEY_FILE | No | Path to a file containing the key, instead of the variable. | |
| LIPDUB_MAX_RENDERS_PER_SESSION | No | Ceiling on renders started per server process. | 5 |
| LIPDUB_REQUIRE_SPEND_CONFIRMATION | No | Set false only for headless pipelines with no human watching. | true |
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
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lipdub_check_connectionA | Verify that this server can reach LipDub and report which account it is using. Call this first if any other LipDub tool fails with an authentication error, or when a user asks whether LipDub is set up. Does not use credits and does not start anything. Credit balance is not available through the API — direct the user to https://app.lipdub.ai to see it. |
| lipdub_create_renderA | Start a LipDub 2 render: make the person in a source video appear to speak a different audio track, with matched lip movement. USES CREDITS. Each render charges the account and cannot be undone or refunded. Cost scales with the length of the source video. Confirm with the user first, then call again with confirm_spend set to true. Supply both sides as direct, publicly downloadable URLs:
LipDub 2 does NOT translate, transcribe or generate speech. If the user wants another language, produce that audio first with a separate text-to-speech or voice tool, host it at a URL, and pass that URL as audio_url. Links must return the media file itself, with two exceptions: YouTube links work (youtube.com, youtu.be or youtube-nocookie.com), because they are resolved for you. Google Drive and Dropbox share pages, and anything behind a login, will fail. Returns immediately with a render_id — the render is NOT finished. Rendering takes several minutes for a short clip, and longer for longer videos. Next step: call lipdub_wait_for_render with that render_id. |
| lipdub_get_renderA | Check a LipDub render once, right now, and return its download link if it has finished. This does NOT wait — it answers immediately with whatever the current status is. To wait for a render to finish, use lipdub_wait_for_render instead. Takes the render_id from lipdub_create_render. Free and never rate-limited — check as often as you need. status is one of:
download_url is a temporary signed link that expires. Give it to the user or download it promptly; do not save it for later. If the render is not finished yet, prefer lipdub_wait_for_render — it waits for you instead of making you check repeatedly. |
| lipdub_wait_for_renderA | Wait for a LipDub render to finish, then return its download link. Use this straight after lipdub_create_render instead of checking in a loop — it uses far less context. This call blocks for up to max_wait_seconds (default 45, maximum 600) while tracking the render for you. A render takes several minutes for a short clip, and longer for longer videos, so expect to call this several times — that is normal and costs nothing. If the render is still going when the wait is up, this returns normally with still_running set to true. That is NOT an error and NOT a failure — the render is fine and is still going. When it happens: tell the user it is still in progress, give them the render_id so they can come back to it, and call this tool again to keep waiting. Waiting and status checks are free and never rate-limited. |
| lipdub_list_rendersA | List recent LipDub renders on this account, newest first. Use this when:
Returns a short summary of each. Call lipdub_get_render with one of the returned render_ids to get its download link. Free and never rate-limited. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| lipdub_quick_dub | Walk through a LipDub 2 render: confirm the cost, start it, wait, and hand back the finished video. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| quickstart | What LipDub 2 does, the render flow, input requirements, cost and timing. |
| troubleshooting | Symptom, cause and fix for the common LipDub 2 failures. |
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: connection check, listing, creating, one-shot status check, and blocking wait. The overlap between get_render and wait_for_render is explicitly disambiguated in their descriptions.
All tools follow the same lipdub_ prefix with a consistent verb_noun pattern: check_connection, list_renders, create_render, get_render, wait_for_render. There are no naming style deviations.
Five tools is well-scoped for this server's purpose. Each tool covers a necessary part of the render workflow without redundancy or bloat.
The tool surface covers the full render lifecycle: verify setup, create a render, wait for completion, retrieve the result, and list past renders. No obvious missing operation is needed for the stated domain.