servers / tegas
Tegas MCP server
communitystreamable_httpremotewrite capablehealthy
Write, generate and edit short AI videos with voice-over, subtitles and music.
01Tools · 12
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| tegas_account Free. Account overview: token balance, whether a plan is active, rate limits and the current
price in tokens per second of video for each quality (480p/720p/1080p). Call this first to know
the balance, and before starting a video to compute price = tokens_per_second[quality] * duration_sec.
If plan.active is false, POST-type tools (scenario, heroes, video) will fail with no_active_plan:
tell the user to activate a plan in the Tegas cabinet. If the balance is lower than a price,
the start will fail with insufficient_tokens: tell the user to top up tokens in the cabinet. | unknown | unknown | unknown |
| tegas_draw_heroes PAID. Draw hero sheets for the brief items chosen by `index` (from tegas_find_heroes, up to 3).
Cost = price_each_tokens x number of items; pass price_each_tokens from tegas_find_heroes to
avoid recomputing the brief. With confirm=false (default) nothing is drawn: the tool returns
needs_confirmation=true and the price - show it to the user and ask for consent. Only after an
explicit "yes" call again with confirm=true. Drawn sheets are attached to the scenario and used
automatically by tegas_start_video with the same scenario_id. The result carries idempotency_key:
if the call times out or fails with a network error, retry with the same idempotency_key - never
start twice without it. On insufficient_tokens ask the user to top up; on no_active_plan ask them
to activate a plan in the cabinet. | read | false | unknown |
| tegas_edit_video Free (no tokens charged). Edit a finished video in place and rebuild it: this REPLACES the
whole video end to end and typically takes a few minutes, the same as the original render - it
is not a quick patch. Tell the user what you are about to change before calling this, then poll
with tegas_wait_video (or tegas_video_status) after the call; do not call this again for the
same video until the rebuild finishes.
Pass at least one of the groups below; omit a group entirely to leave it untouched:
- scenes: list of {"index": int, "voiceover_text"?: str, "subtitles_text"?: str, "video_url"?: str}
- one entry per scene to change, each needs at least one of the three fields.
- voice: {"id"?: str, "gender"?: "female"|"male", "language"?: "ru"|"en"|"es"|"fr"|"de"} -
changing any of id/gender/language RE-VOICES EVERY SCENE that has voice-over text, not just
the ones listed in `scenes`.
- subtitles: {"enabled"?: bool, "style"?: "tiktok"|"phrases"|"contrast",
"appearance"?: {"alignment"?, "font_size"?, "font_family"?, "text_color"? (hex "#RRGGBB"),
"color_saturation"?}} - you cannot disable subtitles and set their style/appearance in the
same call, that fails with 422 validation_error; disable them in one call and restyle in a
later one.
- music: {"enabled"?: bool, "url"?: str} - url must come from tegas_upload_music (or another
public https URL).
- volumes: {"voice"?: int, "music"?: int, "master"?: int} - each 0..100.
- watermark: bool - the Tegas watermark on the finished video. Must be the ONLY change in the
call, not combined with scenes/voice/subtitles/music/volumes: the renderer rebuilds the
watermark through a separate step, so mixing it with other changes fails with 422
validation_error. Change the watermark in its own call.
Returns video_id, status "processing" and edits_accepted - the list of groups that were actually
applied (e.g. ["voice", "subtitles"], or ["watermark"] for a watermark-only edit). If the video is
still rendering or being rebuilt from a previous edit, this fails with 409 video_busy - wait for
status completed (tegas_wait_video) and try again, do not retry immediately in a loop. | write | true | unknown |
| tegas_find_heroes Free (requires an active plan). Brief of recurring characters and the hero product of a
scenario: up to 3 items with `index`, kind (character/object), name and an image prompt,
plus price_each_tokens - the price of drawing one hero sheet. Hero sheets keep a character
consistent across all episodes of the video. style: photorealistic | 3d_cartoon | 2d_animation
| anime (omit to follow the scenario). Drawing is a separate paid step: tegas_draw_heroes. | read | false | unknown |
| tegas_list_videos Free. The user's most recent videos (newest first, limit 1..100) with status, file_url,
price_tokens, quality and scenario_id. | read | false | unknown |
| tegas_start_video PAID. Start rendering a video from a Tessa scenario (scenario_id) or your own scenario_text -
exactly one of them. Cost = tokens_per_second[quality] x duration_sec (see tegas_account);
pass duration_sec returned by tegas_write_scenario so the quote is exact. With confirm=false
(default) nothing is started: the tool returns needs_confirmation=true with the price and the
balance - show them to the user and ask for consent. Only after an explicit "yes" call again with
confirm=true; it then starts the render and returns video_id with status queued plus the
idempotency_key used. If the call times out or fails with a network error, retry with the same
idempotency_key (it makes the retry free of double charge); never start twice without it.
Then call tegas_wait_video.
quality 480p | 720p | 1080p; voice - id from tegas_voices (omit for the default); music,
subtitles (style tiktok | phrases | contrast); reference_urls - product/character images;
watermark - the Tegas watermark on the finished video, omit to keep the account default.
Errors: insufficient_tokens -> ask the user to top up in the cabinet; no_active_plan -> ask them
to activate a plan; rate_limited with details.active -> wait for a running video to finish. | read | false | unknown |
| tegas_upload_music Free (requires an active plan). Upload one music track and get a `url` to reuse in
tegas_edit_video's `music.url`. Give exactly one of audio_base64 or file_path.
audio_base64 - the audio bytes as base64 (a `data:audio/mpeg;base64,...` URL is also accepted);
this is the way for any remote agent, because the file never has to be public.
file_path - a path on the FILESYSTEM OF THE MCP SERVER, so it only works for local / self-hosted
runs where the server and the agent are on the same machine, and only when the server enables it
(otherwise the tool answers with code local_files_disabled - then send audio_base64 instead).
Formats mp3, wav, m4a, up to 25 MB.
Bad input comes back as validation_error with details.reason, before anything is uploaded:
one_source_required (gave both or neither), bad_base64, empty, not_audio, too_large; a file_path
that cannot be read is file_not_readable, and a server that forbids local files answers with code
local_files_disabled.
label - a short note (e.g. "background track"), optional, kept to the first 120 characters.
Returns music_id, the stored url, the label and expires_at. Pass the returned url in
`music.url` of tegas_edit_video (and set `music.enabled` to true if music was off).
Errors: no_active_plan -> ask the user to activate a plan in the cabinet. | write | true | unknown |
| tegas_upload_reference Free (requires an active plan). Upload one reference image and get a `reference_id` to reuse:
a product photo, a character, a brand shot. Give exactly one of image_base64 or file_path.
image_base64 - the image bytes as base64 (a `data:image/png;base64,...` URL is also accepted);
this is the way for any remote agent, because the image never has to be public.
file_path - a path on the FILESYSTEM OF THE MCP SERVER, so it only works for local / self-hosted
runs where the server and the agent are on the same machine, and only when the server enables it
(otherwise the tool answers with code local_files_disabled - then send image_base64 instead).
Formats jpeg, png, webp, heic, up to 10 MB, shorter side at least 360 px, longer at most 4096 px.
Bad input comes back as validation_error with details.reason, before anything is uploaded:
one_source_required (gave both or neither), bad_base64, empty, not_image, too_small,
too_large_dimensions, too_large; a file_path that cannot be read is file_not_readable, and a
server that forbids local files answers with code local_files_disabled.
label - a short note (e.g. "hero", "product"), optional, kept to the first 120 characters.
Returns reference_id, the stored url, the label and a model-written description. The reference
expires together with scenarios (the server's scenario TTL, 7 days by default), so upload it
again for a later video. Pass the returned reference_id in `reference_urls` of
tegas_write_scenario or tegas_start_video - no public link needed.
Errors: no_active_plan -> ask the user to activate a plan in the cabinet. | write | true | unknown |
| tegas_video_status Free. Status of one video: queued | processing | completed | failed, progress 0..100,
file_url when completed, error when failed (tokens are refunded automatically on failure). | read | false | unknown |
| tegas_voices Free. List voice-over voices for a language (ru, en, es, fr, de). Each item has an `id`
that can be passed as `voice` to tegas_start_video; when `voice` is omitted the default
natural voice is used, so calling this is optional. | read | false | unknown |
| tegas_wait_video Free. Wait for a video: polls the status every 10 s until completed (returns file_url),
failed (returns error; tokens are refunded) or timeout_sec elapses (returns the last status with
timed_out=true - call again to keep waiting). A 20-30 s video usually takes a few minutes. | read | false | unknown |
| tegas_write_scenario Free (requires an active plan). Tessa writes a complete video scenario from an idea in one
call, without asking questions. duration_sec 5..60, aspect 9:16 | 16:9 | 1:1. reference_urls:
public image URLs of a product/character (or reference_id `ref_...`), optional.
Returns scenario_id (valid for a few days), the scenario text, episodes with per-episode
durations, warnings and the actual duration_sec (may differ from the requested one).
Typical flow: tegas_write_scenario -> (optional) tegas_find_heroes / tegas_draw_heroes ->
tegas_start_video with confirm=false to get the price -> user consent -> confirm=true ->
tegas_wait_video. Keep the returned duration_sec: pass it to tegas_start_video for the quote.
Show the scenario text to the user; call again with a refined idea if they want changes. | write | true | unknown |
02Install & source
https://api.tegas.ai/mcp
remote_url- repohttps://github.com/ITtegasai/tegas-mcp
- homepagehttps://api.tegas.ai/mcp
- licenseMIT
- adoption0 stars · 0 forks
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-09-20 12:20Z
next_check2026-09-20 15:20Z
cadenceevery 3h
verifiedmetadata:passed handshake:skipped metadata:passed handshake:skipped metadata:passed handshake:skipped metadata:passed handshake:skipped metadata:passed handshake:skipped
index_statusindex — 8 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/tegas)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →