Skip to main content
Glama

Veltake Studio

Server Details

Drive Veltake Studio from any AI agent: create film and ad projects, have the Studio agent build scenes on the canvas, price and start renders, and export edited cuts. Also makes single images, video, speech and music in one call; every paid call runs only at the price it was quoted.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3.4/5.0

Scored across 40 tools

Disambiguation3/5

The app_* tools intentionally duplicate core actions such as generate, upscale, estimate, list_models, list_generations, and import_media, and are scoped only by 'for app screens, not a conversation.' An agent can often tell them apart from descriptions, but the set still contains several near-overlapping pairs that invite misselection.

Naming Consistency4/5

Most tools use predictable snake_case verb_noun naming, and the app_ prefix is consistently used for UI-specific wrappers. Minor deviations exist, such as app_home/app_library/app_models being noun-style while other app_ tools are verb-style, plus open_* alongside app_home.

Tool Count2/5

With 40 tools, the surface is heavy for the domain, and a meaningful portion is duplicated through app-only wrappers of core conversation tools. The server would be better scoped if UI concerns were separated from the agent-facing tool set.

Completeness3/5

Core workflows are covered: generation and upscaling with pricing, media import, projects, chats, turns, cuts, exports, and canvas runs. However, several lifecycle gaps remain, including no project/chat/cut update or delete operations, no run cancellation, and only limited export listing/cancel capabilities.

Available Tools

40 tools
app_generateGenerate from the composer (app)AInspect

For the Veltake app's own screens only — not for a conversation. generate from the composer: this SPENDS the user's coins at expected_cost, the number on the button the person pressed.

NameRequiredDescriptionDefault
kindYeswhat to make: image | video | speech | music. Each argument below says which kinds take it
linesNospeech: the script, in order — each line is {speaker, text, style}
modelYesa model id from list_models for this kind
styleNomusic: the style — a genre, a mood, the instruments (custom songs)
titleNomusic: the song's title (custom songs)
imagesNoimage, video: hosted image URLs — references for an image model; for a video model the first frame, or with images_are_references the subject/style references (at most the model's max_images). Import a link with import_media first
lyricsNomusic: the words to be sung. With lyrics, title and style are required
promptNoimage, video: what to make. music: the description of the song (simple mode; for a song with its own lyrics use lyrics)
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
durationNovideo: seconds, one of the model's durations. music: the song's length in seconds (custom songs only)
speakersNospeech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead
last_frameNovideo: a hosted image URL for the LAST frame — only for models with supports_transition; then images holds exactly the first frame
resolutionNoimage, video: one of the model's resolutions — a higher tier costs more
video_taskNovideo: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip
aspect_ratioNoimage, video: the frame, one of the model's aspect_ratios (e.g. 16:9)
filler_wordsNospeech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words
instrumentalNomusic: no vocals
expected_costYesthe coins estimate_generation answered for these very arguments — omit it only when the host confirms prices with the person itself
generate_audioNovideo (and any image model that has it): make the sound too — only for models with supports_audio, and it costs audio_cost more
idempotency_keyNooptional: repeat it on a retry so the retry answers the first generation instead of charging again
reference_audioNovideo: a hosted audio URL to take sound from — only for models with max_reference_audios above 0
reference_videoNovideo: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0
images_are_referencesNovideo: read images as references to draw from, NOT as the first frame — the video does not start on them. Needs at least one image, cannot be combined with last_frame, and only models with supports_reference take it

Output Schema

NameRequiredDescription
vNo
idYes
kindYes
coinsYes
modelYes
takesNo
resultNo
statusYes
balanceNo
replayedNo
app_homeVeltake home (app)A
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. Answers the home: balance, recent work, workflows.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
vYes
hostYes
kindsYes
linksYes
recentYes
balanceNo
prefillNo
upscaleYes
workflowsYes
app_import_fileImport an attached file (app)AInspect

For the Veltake app's own screens only — not for a conversation. import_media for a file the person picked in the app.

NameRequiredDescriptionDefault
fileYesthe picked file

Output Schema

NameRequiredDescription
vNo
urlYes
kindYes
sizeYes
content_typeYes
app_libraryThe library (app)A
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. list_generations with posters for the grid.

NameRequiredDescriptionDefault
kindNoonly this kind — omit for all
limitNohow many (default 20, at most 50)
sinceNooptional: only generations of the last N hours
offsetNowhere to continue — the previous answer's next_offset

Output Schema

NameRequiredDescription
vNo
generationsYes
next_offsetNo
apply_turnApply the agent's proposalAInspect

Apply a turn's proposed canvas. With run:true also start the run the agent asked for — this SPENDS coins; pass expected_total (the turn's estimate.total_coins) so the charge cannot differ from the quote. Without expected_total, a host that can ask the person confirms the price with them. The agent reviews the results when the run finishes. A turn's cut_proposal (a large cut edit held for review) is applied separately, with cut_only:true.

NameRequiredDescriptionDefault
runNo
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
turn_idYesfrom send_message
cut_onlyNo
expected_totalNo
app_modelsModels for the picker (app)A
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. Answers list_models for one kind with the picker's extra fields (logo, badge, a one-line summary, the default).

NameRequiredDescriptionDefault
kindYesimage | video | speech | music

Output Schema

NameRequiredDescription
vNo
autoYes
kindNo
modelsYes
balanceNo
app_quotePrice the composer (app)B
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. estimate_generation for the composer's settings.

NameRequiredDescriptionDefault
kindYeswhat to make: image | video | speech | music. Each argument below says which kinds take it
linesNospeech: the script, in order — each line is {speaker, text, style}
modelYesa model id from list_models for this kind
styleNomusic: the style — a genre, a mood, the instruments (custom songs)
titleNomusic: the song's title (custom songs)
imagesNoimage, video: hosted image URLs — references for an image model; for a video model the first frame, or with images_are_references the subject/style references (at most the model's max_images). Import a link with import_media first
lyricsNomusic: the words to be sung. With lyrics, title and style are required
promptNoimage, video: what to make. music: the description of the song (simple mode; for a song with its own lyrics use lyrics)
durationNovideo: seconds, one of the model's durations. music: the song's length in seconds (custom songs only)
speakersNospeech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead
last_frameNovideo: a hosted image URL for the LAST frame — only for models with supports_transition; then images holds exactly the first frame
resolutionNoimage, video: one of the model's resolutions — a higher tier costs more
video_taskNovideo: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip
aspect_ratioNoimage, video: the frame, one of the model's aspect_ratios (e.g. 16:9)
filler_wordsNospeech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words
instrumentalNomusic: no vocals
generate_audioNovideo (and any image model that has it): make the sound too — only for models with supports_audio, and it costs audio_cost more
reference_audioNovideo: a hosted audio URL to take sound from — only for models with max_reference_audios above 0
reference_videoNovideo: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0
images_are_referencesNovideo: read images as references to draw from, NOT as the first frame — the video does not start on them. Needs at least one image, cannot be combined with last_frame, and only models with supports_reference take it

Output Schema

NameRequiredDescription
vNo
kindYes
coinsYes
modelYes
enoughNo
balanceNo
settingsNo
app_spend_statusDid this spend land (app)A
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. Read-only: did the idempotency_key of an unconfirmed app_generate / app_upscale create a generation for this person? Never spends, never retries.

NameRequiredDescriptionDefault
toolYesthe spend the key was sent to
idempotency_keyYesthe key the spend carried

Output Schema

NameRequiredDescription
vNo
idNo
kindNo
coinsNo
foundYes
modelNo
statusNo
app_upscaleUpscale from the app (app)AInspect

For the Veltake app's own screens only — not for a conversation. upscale from the app: this SPENDS the user's coins at expected_cost, the number on the button the person pressed.

NameRequiredDescriptionDefault
kindYesimage or video — what the file is
modelNoas passed to estimate_upscale
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
resolutionNoas passed to estimate_upscale
source_urlYesthe hosted URL, as passed to estimate_upscale
expected_costNothe coins estimate_upscale answered for these very arguments
idempotency_keyNooptional: repeat it on a retry so the retry answers the first upscale instead of charging again

Output Schema

NameRequiredDescription
vNo
idYes
kindYes
coinsYes
modelYes
takesNo
resultNo
statusYes
balanceNo
replayedNo
app_upscale_quotePrice an upscale (app)B
Read-onlyIdempotent
Inspect

For the Veltake app's own screens only — not for a conversation. estimate_upscale for the app's Upscale card.

NameRequiredDescriptionDefault
kindYesimage or video — what the file is
modelNooptional: an upscaler id from a previous estimate_upscale answer — omit for the default
resolutionNooptional: the target, one of the upscaler's resolutions — omit for its default
source_urlYesthe hosted URL of the file to upscale (from import_media or a generation's result_url)

Output Schema

NameRequiredDescription
vNo
kindYes
coinsYes
modelYes
enoughNo
balanceNo
settingsNo
cancel_generationCancel a generationA
DestructiveIdempotent
Inspect

Cancel a queued or running generation. The coins it held are returned in full; the provider is not told, so a result already on its way is discarded. A finished generation cannot be canceled.

NameRequiredDescriptionDefault
idYesfrom generate or list_generations
create_projectCreate a Studio projectAInspect

Create a Studio project (with one empty canvas) and answer its id and canvas id.

NameRequiredDescriptionDefault
kindNofilm (default) | marketing
nameYesproject name
estimate_generationPrice a generationA
Read-onlyIdempotent
Inspect

Price a generation without making it. Free, changes nothing. Takes the same arguments as generate (without expected_cost) and answers the coins it would cost, the coin balance and the settings that price is for (resolution, duration, audio). Every check generate makes runs here too, so a refused request is found before the person is asked anything. Pass the answered coins to generate as expected_cost.

NameRequiredDescriptionDefault
kindYeswhat to make: image | video | speech | music. Each argument below says which kinds take it
linesNospeech: the script, in order — each line is {speaker, text, style}
modelYesa model id from list_models for this kind
styleNomusic: the style — a genre, a mood, the instruments (custom songs)
titleNomusic: the song's title (custom songs)
imagesNoimage, video: hosted image URLs — references for an image model; for a video model the first frame, or with images_are_references the subject/style references (at most the model's max_images). Import a link with import_media first
lyricsNomusic: the words to be sung. With lyrics, title and style are required
promptNoimage, video: what to make. music: the description of the song (simple mode; for a song with its own lyrics use lyrics)
durationNovideo: seconds, one of the model's durations. music: the song's length in seconds (custom songs only)
speakersNospeech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead
last_frameNovideo: a hosted image URL for the LAST frame — only for models with supports_transition; then images holds exactly the first frame
resolutionNoimage, video: one of the model's resolutions — a higher tier costs more
video_taskNovideo: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip
aspect_ratioNoimage, video: the frame, one of the model's aspect_ratios (e.g. 16:9)
filler_wordsNospeech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words
instrumentalNomusic: no vocals
generate_audioNovideo (and any image model that has it): make the sound too — only for models with supports_audio, and it costs audio_cost more
reference_audioNovideo: a hosted audio URL to take sound from — only for models with max_reference_audios above 0
reference_videoNovideo: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0
images_are_referencesNovideo: read images as references to draw from, NOT as the first frame — the video does not start on them. Needs at least one image, cannot be combined with last_frame, and only models with supports_reference take it

Output Schema

NameRequiredDescription
vNo
kindYes
coinsYes
modelYes
enoughNo
balanceNo
settingsNo
estimate_runPrice a canvas runA
Read-onlyIdempotent
Inspect

Price running a canvas (free, spends nothing): the total in coins, who pays (payer: personal, or team — a team project's runs are always paid from its team's pool), that payer's balance, each node's price and model, and the canvas version the price is for. Pass the total and the version to start_run.

NameRequiredDescriptionDefault
graph_idYescanvas id, from get_project
force_nodesNore-generate these even when a cached result exists
scope_nodesNorun exactly these nodes (not with from_node_id)
from_node_idNorun this node and everything downstream of it — omit for the whole canvas
estimate_upscalePrice an upscaleA
Read-onlyIdempotent
Inspect

Price upscaling an image or a video (a sharper, larger copy of a file the person already has). Free, changes nothing. The price comes from the file itself — its size and, for a video, its length and frame rate — so it reads the file first. Answers the coins, the balance, the output size and the targets the upscaler offers. Pass the answered coins to upscale as expected_cost. The file must be hosted: import_media first.

NameRequiredDescriptionDefault
kindYesimage or video — what the file is
modelNooptional: an upscaler id from a previous estimate_upscale answer — omit for the default
resolutionNooptional: the target, one of the upscaler's resolutions — omit for its default
source_urlYesthe hosted URL of the file to upscale (from import_media or a generation's result_url)

Output Schema

NameRequiredDescription
vNo
kindYes
coinsYes
modelYes
enoughNo
balanceNo
settingsNo
export_cutRender a cut to a filmAInspect

Queue a render of a cut to a video file — one export per aspect ratio. Rendering spends no coins; the quality rungs and formats the account allows, and a daily export allowance, apply. Poll get_export for the file.

NameRequiredDescriptionDefault
fitNopad (default, letterbox) | crop (fill, keeping each clip's focus) | blur (over a blurred fill)
cut_idYesfrom list_cuts
formatNoh264 (default) | hevc | prores
qualityNosd | hd | master — omit for the best the account allows
aspect_ratioNoone frame, e.g. "9:16" — the same as a one-item aspect_ratios
aspect_ratiosNoframes to render, e.g. ["16:9", "9:16"] — omit for the cut's own; one export each (at most 4)
generateGenerate an image, video, speech or musicAInspect

Make an image, a video, a spoken script or a song. This SPENDS the user's coins: pass expected_cost exactly as estimate_generation answered it — if the price changed, nothing is charged and the new price is answered. The charge is a reservation of at most that number: a failed or canceled generation is refunded in full and the settlement may return part of it. Every call is paid in coins — a Relax queue or an unlimited allowance does not apply through an agent, and nothing here buys coins. Media (images, last_frame, reference_video, reference_audio) must be hosted: a URL import_media answered, or one on Veltake's own media host — import anything else first. Answers the generation (music answers its two takes); poll get_generation for the result — a host that runs tool tasks waits for the result itself. Repeat idempotency_key on a retry so it answers the first generation instead of charging again. Without expected_cost, a host that can ask the person shows them the price and the generation runs only when they accept; any other host is answered the price (price_required) and nothing is charged.

NameRequiredDescriptionDefault
kindYeswhat to make: image | video | speech | music. Each argument below says which kinds take it
linesNospeech: the script, in order — each line is {speaker, text, style}
modelYesa model id from list_models for this kind
styleNomusic: the style — a genre, a mood, the instruments (custom songs)
titleNomusic: the song's title (custom songs)
imagesNoimage, video: hosted image URLs — references for an image model; for a video model the first frame, or with images_are_references the subject/style references (at most the model's max_images). Import a link with import_media first
lyricsNomusic: the words to be sung. With lyrics, title and style are required
promptNoimage, video: what to make. music: the description of the song (simple mode; for a song with its own lyrics use lyrics)
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
durationNovideo: seconds, one of the model's durations. music: the song's length in seconds (custom songs only)
speakersNospeech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead
last_frameNovideo: a hosted image URL for the LAST frame — only for models with supports_transition; then images holds exactly the first frame
resolutionNoimage, video: one of the model's resolutions — a higher tier costs more
video_taskNovideo: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip
aspect_ratioNoimage, video: the frame, one of the model's aspect_ratios (e.g. 16:9)
filler_wordsNospeech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words
instrumentalNomusic: no vocals
expected_costNothe coins estimate_generation answered for these very arguments — omit it only when the host confirms prices with the person itself
generate_audioNovideo (and any image model that has it): make the sound too — only for models with supports_audio, and it costs audio_cost more
idempotency_keyNooptional: repeat it on a retry so the retry answers the first generation instead of charging again
reference_audioNovideo: a hosted audio URL to take sound from — only for models with max_reference_audios above 0
reference_videoNovideo: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0
images_are_referencesNovideo: read images as references to draw from, NOT as the first frame — the video does not start on them. Needs at least one image, cannot be combined with last_frame, and only models with supports_reference take it

Output Schema

NameRequiredDescription
vNo
idYes
kindYes
coinsYes
modelYes
takesNo
resultNo
statusYes
balanceNo
replayedNo
get_chatRead a conversationA
Read-onlyIdempotent
Inspect

Read one conversation with its transcript: each turn's message, status, reply and what it proposed or changed.

NameRequiredDescriptionDefault
lastNoonly the newest N turns (default 20, at most 50)
chat_idYesfrom start_chat or list_chats
get_cutRead a cutA
Read-onlyIdempotent
Inspect

Read one cut: its full timeline document (clips, voiceovers, music, captions, aspect ratio) and version. A clip's source is a take, a text card, or an upload (the person's own footage, by url); takes and uploads carry the media behind them, and a clip missing from both has no usable media.

NameRequiredDescriptionDefault
cut_idYesfrom list_cuts
get_exportRead an exportA
Read-onlyIdempotent
Inspect

Read an export: status, and when done the film's URL, frame size and frame rate.

NameRequiredDescriptionDefault
export_idYesfrom export_cut
get_generationRead a generationA
Read-onlyIdempotent
Inspect

Read one generation made with generate (or in the app's Create): its status (queued, in_progress, succeeded, failed, canceled), progress, and once it has succeeded the result URL, preview image, size and length. Music answers one take per call; the take_group ties the two.

NameRequiredDescriptionDefault
idYesfrom generate or list_generations

Output Schema

NameRequiredDescription
idYes
kindYes
takeNo
modelNo
takesNo
widthNo
heightNo
promptNo
statusYes
progressNo
coin_costNo
thumb_urlNo
created_atNo
result_urlNo
take_groupNo
duration_secNo
fail_categoryNo
get_projectRead a projectA
Read-onlyIdempotent
Inspect

Read one project: its canvases, scenes and shots, cast, and the agent conversations on it.

NameRequiredDescriptionDefault
project_idYesfrom list_projects
get_runRead a runA
Read-onlyIdempotent
Inspect

Read a canvas run: status, cost, and each node's state, model and result URLs.

NameRequiredDescriptionDefault
run_idYesfrom a turn or apply_turn
get_turnRead an agent turnA
Read-onlyIdempotent
Inspect

Read a turn: its status (running | waiting | done | failed | canceled), the agent's reply (its final answer), the steps it took (kind "call" carries tool; kind "say" is a step where the agent only spoke and has no tool; either may carry say, what the agent said on the way), its proposal, estimate, question, plan and what it changed.

NameRequiredDescriptionDefault
turn_idYesfrom send_message
import_mediaImport media from a link or an attachmentAInspect

Bring a file into the account's uploads and answer a hosted URL to pass to generate (images, last_frame, reference_video, reference_audio), to upscale, or to a Studio send_message as an attachment. Give either url — a DIRECT link to an image, video or audio file, not a web page — or file, a file the person attached in this conversation. The file is kept as a temporary upload.

NameRequiredDescriptionDefault
urlNoan https link straight to the file
fileNoa file the person attached in this conversation
interject_turnTell a running turn somethingAInspect

Hand the agent a message WHILE a turn is running ("no, use the other character"): it reads it at its next step instead of finishing the wrong work first. Only a running turn of a conversation you can message; once the turn has ended (or already has messages waiting) it is refused — send it with send_message as the next message instead. Answers how many of your messages the turn has not read yet; get_turn shows the rest. Repeat message_id on a retry so the message lands once. Omitted, it is derived from you, the turn and the words — so the same words sent twice are ONE message (already_received:true says a message was not queued again); pass your own message_id to send a deliberate repeat.

NameRequiredDescriptionDefault
textYeswhat you want to tell the agent, in words
turn_idYesthe running turn, from send_message or get_chat
message_idNooptional: your id for this message — repeat it on a retry
list_chatsList agent conversationsA
Read-onlyIdempotent
Inspect

List the agent conversations on a project (yours, and any a teammate shared), newest first, without their transcripts.

NameRequiredDescriptionDefault
project_idYesfrom list_projects
list_cutsList a project's cutsA
Read-onlyIdempotent
Inspect

List a project's cuts (edited films), each with its length, clip count and newest export.

NameRequiredDescriptionDefault
project_idYesfrom list_projects
list_generationsList generationsA
Read-onlyIdempotent
Inspect

List the account's Create generations, newest first (logos and Studio takes are not listed here). limit defaults to 20, at most 50; next_offset pages on.

NameRequiredDescriptionDefault
kindNoonly this kind — omit for all
limitNohow many (default 20, at most 50)
offsetNowhere to continue — the previous answer's next_offset (default 0)

Output Schema

NameRequiredDescription
generationsYes
next_offsetNo
list_modelsList generation modelsA
Read-onlyIdempotent
Inspect

List the models that make one kind of creation — image, video, speech or music. Each has its id, name and maker, what it accepts (aspect ratios, resolutions, durations, audio, reference images, voices, lengths) and what a default generation costs in coins; the coin balance comes too. Pass a model's id to estimate_generation and generate.

NameRequiredDescriptionDefault
kindYesimage | video | speech | music
list_projectsList Studio projectsB
Read-onlyIdempotent
Inspect

List the account's Studio projects (film and marketing), newest first, with their ids.

NameRequiredDescriptionDefault
kindNofilm | marketing — omit for both
open_generation_trayShow recent generationsA
Read-onlyIdempotent
Inspect

Show the person the generations of the last 24 hours, live, each one playable. Use it when they ask what is running or what was just made. Takes no arguments.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
countYes
openedYes
runningYes
open_veltakeOpen VeltakeA
Read-onlyIdempotent
Inspect

Open Veltake's home for the person: a composer for images, videos, voice and music that shows each generation's price in coins before it is made, their recent work, and ready-made workflows. Use it when the person wants to browse, pick a model or settings themselves, or start from a workflow. Takes no arguments; kind and prompt optionally pre-fill the composer. The answer is a short summary for you — the home itself is shown to the person.

NameRequiredDescriptionDefault
kindNooptional: the composer's starting kind
promptNooptional: words to pre-fill the composer with

Output Schema

NameRequiredDescription
noteNo
openedYes
balanceNo
retry_turnRegenerate or edit the latest messageA
Destructive
Inspect

Ask again: regenerate the conversation's LATEST message (omit message), or replace its words (message) and let the agent answer the edit. The old answer is kept as an earlier version and stops being part of the conversation. Only your own message, only the latest one, never while it is running; refused while what it changed outside the canvas is still in place — undo_turn it (and its reviews) first. Waits like send_message.

NameRequiredDescriptionDefault
messageNothe edited words — omit to regenerate the same message
turn_idYesthe latest message's turn, from send_message or get_chat
send_messageMessage the Studio agentAInspect

Send a message to the Studio agent and wait (up to ~45s) for its answer. The agent builds on a working copy and answers with a PROPOSAL (apply it with apply_turn), a question, a priced plan (answer with plan_approved:true to build it), or a run request with its price. If the turn is still working when the wait ends, poll get_turn. A host that runs tool tasks gets the turn as a task instead and waits for its answer.

NameRequiredDescriptionDefault
chat_idYesfrom start_chat
messageYeswhat you want, in words
attachmentsNohosted media URLs (≤4)
plan_approvedNotrue when this message approves the plan the agent proposed
start_chatOpen an agent conversationBInspect

Open a conversation with the Studio agent on a project's canvas. Answers the chat id.

NameRequiredDescriptionDefault
graph_idNocanvas id — omit for the project's first canvas
project_idYesfrom list_projects
start_runRun a canvasAInspect

Start rendering a canvas. This SPENDS the user's coins: pass expected_total and version exactly as estimate_run answered them — if the canvas or its price changed since, the run is refused and nothing is spent. Without both, a host that can ask the person confirms the price with them; any other host is answered the price and the version. Poll get_run (a host that runs tool tasks waits for it itself).

NameRequiredDescriptionDefault
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
versionNothe canvas version from estimate_run (with expected_total)
graph_idYescanvas id
force_nodesNoas passed to estimate_run
scope_nodesNoas passed to estimate_run
from_node_idNoas passed to estimate_run
expected_totalNototal_coins from estimate_run — omit both only when the host confirms prices with the person itself
idempotency_keyNooptional: repeat it on a retry so the retry answers the first run instead of charging again
stop_turnStop an agent turnA
Destructive
Inspect

Stop a running turn (its work so far is kept) or cancel a waiting turn's review.

NameRequiredDescriptionDefault
turn_idYesfrom send_message
undo_turnUndo what a turn changedA
Destructive
Inspect

Revert what a turn changed OUTSIDE the canvas — cuts it created or edited, voiceovers or music it placed, notes it wrote, shots it filed — each only while it is still what the agent wrote. A canvas proposal never lands without apply_turn, so it needs no undo.

NameRequiredDescriptionDefault
turn_idYesfrom send_message or get_chat
upscaleUpscale an image or a videoAInspect

Upscale an image or a video. This SPENDS the user's coins: pass expected_cost exactly as estimate_upscale answered it for these arguments — if the price changed, nothing is charged and the new price is answered. A failed or canceled upscale is refunded in full. Answers the generation; poll get_generation for the result (a host that runs tool tasks waits for it itself). Repeat idempotency_key on a retry. Without expected_cost, a host that can ask the person confirms the price with them; any other host is answered the price and nothing is charged.

NameRequiredDescriptionDefault
kindYesimage or video — what the file is
modelNoas passed to estimate_upscale
fundingNowho pays: personal (the person's own coins) or team (their team's pool — only when the person allowed this connection to spend team coins and the team approved this app). Omit to use the payer the person chose when connecting
resolutionNoas passed to estimate_upscale
source_urlYesthe hosted URL, as passed to estimate_upscale
expected_costNothe coins estimate_upscale answered for these very arguments
idempotency_keyNooptional: repeat it on a retry so the retry answers the first upscale instead of charging again

Output Schema

NameRequiredDescription
vNo
idYes
kindYes
coinsYes
modelYes
takesNo
resultNo
statusYes
balanceNo
replayedNo

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedapp_generate2 fields changed
      • changedInput schema / properties / expected_cost / description
        Previous value: -"the coins estimate_generation answered for these very arguments"New value: +"the coins estimate_generation answered for these very arguments — omit it only when the host confirms prices with the person itself"
      • addedOutput schema / properties / result
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coin_cost": {
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "created_at": {
        +      "type": "string"
        +    },
        +    "duration_sec": {
        +      "type": "number"
        +    },
        +    "fail_category": {
        +      "type": "string"
        +    },
        +    "height": {
        +      "type": "integer"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "vendor": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    "progress": {
        +      "maximum": 100,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "prompt": {
        +      "type": "string"
        +    },
        +    "result_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "queued",
        +        "in_progress",
        +        "succeeded",
        +        "failed",
        +        "canceled",
        +        "submit_unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "take": {
        +      "type": "integer"
        +    },
        +    "take_group": {
        +      "type": "string"
        +    },
        +    "takes": {
        +      "type": "integer"
        +    },
        +    "thumb_url": {
        +      "type": "string"
        +    },
        +    "width": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "kind"
        +  ],
        +  "type": "object"
        +}
    • Changedapp_upscale2 fields changed
      • changedInput schema / required
        Previous value: -[
        -  "kind",
        -  "source_url",
        -  "expected_cost"
        -]New value: +[
        +  "kind",
        +  "source_url"
        +]
      • addedOutput schema / properties / result
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coin_cost": {
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "created_at": {
        +      "type": "string"
        +    },
        +    "duration_sec": {
        +      "type": "number"
        +    },
        +    "fail_category": {
        +      "type": "string"
        +    },
        +    "height": {
        +      "type": "integer"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "vendor": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    "progress": {
        +      "maximum": 100,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "prompt": {
        +      "type": "string"
        +    },
        +    "result_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "queued",
        +        "in_progress",
        +        "succeeded",
        +        "failed",
        +        "canceled",
        +        "submit_unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "take": {
        +      "type": "integer"
        +    },
        +    "take_group": {
        +      "type": "string"
        +    },
        +    "takes": {
        +      "type": "integer"
        +    },
        +    "thumb_url": {
        +      "type": "string"
        +    },
        +    "width": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "kind"
        +  ],
        +  "type": "object"
        +}
    • Changedgenerate3 fields changed
      • changedInput schema / properties / expected_cost / description
        Previous value: -"the coins estimate_generation answered for these very arguments"New value: +"the coins estimate_generation answered for these very arguments — omit it only when the host confirms prices with the person itself"
      • changedInput schema / required
        Previous value: -[
        -  "kind",
        -  "model",
        -  "expected_cost"
        -]New value: +[
        +  "kind",
        +  "model"
        +]
      • addedOutput schema / properties / result
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coin_cost": {
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "created_at": {
        +      "type": "string"
        +    },
        +    "duration_sec": {
        +      "type": "number"
        +    },
        +    "fail_category": {
        +      "type": "string"
        +    },
        +    "height": {
        +      "type": "integer"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "vendor": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    "progress": {
        +      "maximum": 100,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "prompt": {
        +      "type": "string"
        +    },
        +    "result_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "queued",
        +        "in_progress",
        +        "succeeded",
        +        "failed",
        +        "canceled",
        +        "submit_unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "take": {
        +      "type": "integer"
        +    },
        +    "take_group": {
        +      "type": "string"
        +    },
        +    "takes": {
        +      "type": "integer"
        +    },
        +    "thumb_url": {
        +      "type": "string"
        +    },
        +    "width": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "kind"
        +  ],
        +  "type": "object"
        +}
    • Changedstart_run3 fields changed
      • changedInput schema / properties / expected_total / description
        Previous value: -"total_coins from estimate_run"New value: +"total_coins from estimate_run — omit both only when the host confirms prices with the person itself"
      • changedInput schema / properties / version / description
        Previous value: -"the canvas version from estimate_run"New value: +"the canvas version from estimate_run (with expected_total)"
      • changedInput schema / required
        Previous value: -[
        -  "graph_id",
        -  "version",
        -  "expected_total"
        -]New value: +[
        +  "graph_id"
        +]
    • Changedupscale2 fields changed
      • changedInput schema / required
        Previous value: -[
        -  "kind",
        -  "source_url",
        -  "expected_cost"
        -]New value: +[
        +  "kind",
        +  "source_url"
        +]
      • addedOutput schema / properties / result
        Added value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "coin_cost": {
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "created_at": {
        +      "type": "string"
        +    },
        +    "duration_sec": {
        +      "type": "number"
        +    },
        +    "fail_category": {
        +      "type": "string"
        +    },
        +    "height": {
        +      "type": "integer"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "vendor": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id"
        +      ],
        +      "type": "object"
        +    },
        +    "progress": {
        +      "maximum": 100,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "prompt": {
        +      "type": "string"
        +    },
        +    "result_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "enum": [
        +        "queued",
        +        "in_progress",
        +        "succeeded",
        +        "failed",
        +        "canceled",
        +        "submit_unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "take": {
        +      "type": "integer"
        +    },
        +    "take_group": {
        +      "type": "string"
        +    },
        +    "takes": {
        +      "type": "integer"
        +    },
        +    "thumb_url": {
        +      "type": "string"
        +    },
        +    "width": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "kind"
        +  ],
        +  "type": "object"
        +}
  2. 4 tool updates
    • Changedapp_generate2 fields changed
      • changedInput schema / properties / reference_video / description
        Previous value: -"video: a hosted video URL to take motion or style from — only for models with max_reference_videos above 0"New value: +"video: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0"
      • changedInput schema / properties / video_task / description
        Previous value: -"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip"New value: +"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip"
    • Changedapp_quote2 fields changed
      • changedInput schema / properties / reference_video / description
        Previous value: -"video: a hosted video URL to take motion or style from — only for models with max_reference_videos above 0"New value: +"video: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0"
      • changedInput schema / properties / video_task / description
        Previous value: -"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip"New value: +"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip"
    • Changedestimate_generation2 fields changed
      • changedInput schema / properties / reference_video / description
        Previous value: -"video: a hosted video URL to take motion or style from — only for models with max_reference_videos above 0"New value: +"video: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0"
      • changedInput schema / properties / video_task / description
        Previous value: -"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip"New value: +"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip"
    • Changedgenerate2 fields changed
      • changedInput schema / properties / reference_video / description
        Previous value: -"video: a hosted video URL to take motion or style from — only for models with max_reference_videos above 0"New value: +"video: a hosted video URL to take motion or style from, or on a model with clip_is_source the clip to edit or extend (video_task is then required) — only for models with max_reference_videos above 0"
      • changedInput schema / properties / video_task / description
        Previous value: -"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip"New value: +"video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference; on a model with clip_is_source it is required, and images are refused either way (there a clip is never a reference, an edit runs the clip's length, and an extension answers the clip plus the new part and takes up to 10 seconds). Only for models with video_tasks; needs a prompt and exactly one clip"
  3. 4 tool updates
    • Changedapp_generate1 field changed
      • addedInput schema / properties / video_task
        Added value: +{
        +  "description": "video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip",
        +  "type": "string"
        +}
    • Changedapp_quote1 field changed
      • addedInput schema / properties / video_task
        Added value: +{
        +  "description": "video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip",
        +  "type": "string"
        +}
    • Changedestimate_generation1 field changed
      • addedInput schema / properties / video_task
        Added value: +{
        +  "description": "video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip",
        +  "type": "string"
        +}
    • Changedgenerate1 field changed
      • addedInput schema / properties / video_task
        Added value: +{
        +  "description": "video: what reference_video is for — edit (change that one clip; images are references, and with no duration the answer runs the clip's length) or extend (add new footage to it; duration is the new part's length, the answer is that part alone, and images are refused). Omitted, it is a reference. Only for models with video_tasks; needs a prompt and exactly one clip",
        +  "type": "string"
        +}
  4. 4 tool updates
    • Changedapp_generate5 fields changed
      • addedInput schema / properties / filler_words
        Added value: +{
        +  "description": "speech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / lines / description
        Previous value: -"speech: the script, in order — each line is {speaker, text}"New value: +"speech: the script, in order — each line is {speaker, text, style}"
      • addedInput schema / properties / lines / items / properties / style
        Added value: +{
        +  "description": "how this line is said, in your own words (tone, emotion, pace) — only for models with line_style, at most max_line_style_chars",
        +  "type": "string"
        +}
      • changedInput schema / properties / lines / items / properties / text / description
        Previous value: -"what they say"New value: +"what they say — on a model with tags, a sound tag from its list may sit inside the words (e.g. <laugh>)"
      • changedInput schema / properties / speakers / description
        Previous value: -"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker"New value: +"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead"
    • Changedapp_quote5 fields changed
      • addedInput schema / properties / filler_words
        Added value: +{
        +  "description": "speech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / lines / description
        Previous value: -"speech: the script, in order — each line is {speaker, text}"New value: +"speech: the script, in order — each line is {speaker, text, style}"
      • addedInput schema / properties / lines / items / properties / style
        Added value: +{
        +  "description": "how this line is said, in your own words (tone, emotion, pace) — only for models with line_style, at most max_line_style_chars",
        +  "type": "string"
        +}
      • changedInput schema / properties / lines / items / properties / text / description
        Previous value: -"what they say"New value: +"what they say — on a model with tags, a sound tag from its list may sit inside the words (e.g. <laugh>)"
      • changedInput schema / properties / speakers / description
        Previous value: -"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker"New value: +"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead"
    • Changedestimate_generation5 fields changed
      • addedInput schema / properties / filler_words
        Added value: +{
        +  "description": "speech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / lines / description
        Previous value: -"speech: the script, in order — each line is {speaker, text}"New value: +"speech: the script, in order — each line is {speaker, text, style}"
      • addedInput schema / properties / lines / items / properties / style
        Added value: +{
        +  "description": "how this line is said, in your own words (tone, emotion, pace) — only for models with line_style, at most max_line_style_chars",
        +  "type": "string"
        +}
      • changedInput schema / properties / lines / items / properties / text / description
        Previous value: -"what they say"New value: +"what they say — on a model with tags, a sound tag from its list may sit inside the words (e.g. <laugh>)"
      • changedInput schema / properties / speakers / description
        Previous value: -"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker"New value: +"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead"
    • Changedgenerate5 fields changed
      • addedInput schema / properties / filler_words
        Added value: +{
        +  "description": "speech: add filler words and natural interjections to a TWO-speaker dialogue — only for models with filler_words",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / lines / description
        Previous value: -"speech: the script, in order — each line is {speaker, text}"New value: +"speech: the script, in order — each line is {speaker, text, style}"
      • addedInput schema / properties / lines / items / properties / style
        Added value: +{
        +  "description": "how this line is said, in your own words (tone, emotion, pace) — only for models with line_style, at most max_line_style_chars",
        +  "type": "string"
        +}
      • changedInput schema / properties / lines / items / properties / text / description
        Previous value: -"what they say"New value: +"what they say — on a model with tags, a sound tag from its list may sit inside the words (e.g. <laugh>)"
      • changedInput schema / properties / speakers / description
        Previous value: -"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker"New value: +"speech: the voices, in order (list_models has the voices, accents, styles and paces). Each is {name, voice, accent, style, pace, profile}, all optional except that a script needs at least one speaker. A model with line_style lists no accents, styles or paces: direct each line with its own style instead"
  5. 40 tool updates
    • First observedapp_generate
    • First observedapp_home
    • First observedapp_import_file
    • First observedapp_library
    • First observedapp_models
    • First observedapp_quote
    • First observedapp_spend_status
    • First observedapp_upscale
    • First observedapp_upscale_quote
    • First observedapply_turn
    • First observedcancel_generation
    • First observedcreate_project
    • First observedestimate_generation
    • First observedestimate_run
    • First observedestimate_upscale
    • First observedexport_cut
    • First observedgenerate
    • First observedget_chat
    • First observedget_cut
    • First observedget_export
    • First observedget_generation
    • First observedget_project
    • First observedget_run
    • First observedget_turn
    • First observedimport_media
    • First observedinterject_turn
    • First observedlist_chats
    • First observedlist_cuts
    • First observedlist_generations
    • First observedlist_models
    • First observedlist_projects
    • First observedopen_generation_tray
    • First observedopen_veltake
    • First observedretry_turn
    • First observedsend_message
    • First observedstart_chat
    • First observedstart_run
    • First observedstop_turn
    • First observedundo_turn
    • First observedupscale

Publisher details

Operator
Rolio Intelligence LLC · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Unknown
Restrictions
Unknown

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    23 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources