tools/list; clients should not
assume a fixed tool count. New REST endpoints do not become MCP tools automatically.
Legacy /open and /open/v1 operations are not exposed.
Tool groups
Tool names and input JSON Schemas come from the JoggAI OpenAPI v2 contract. The
agent should use the schema returned by
tools/list instead of inventing REST
paths or fields.
Paid tools
Generation tools can consume the selected Space’s existing JoggAI credits. There is no separate MCP balance or MCP surcharge. Every credit-consuming tool includes a billing warning in its description and is marked with a destructive hint so compatible clients can request confirmation. Examples include:- AI scripts and avatar images
- Speech synthesis
- Avatar motion and lip sync
- Avatar, product, preview, and template video generation
- Video translation
Speech model selection
Thejogg_post_audio_tts_synthesize tool accepts optional body.model_id for
ElevenLabs voices. Select eleven_flash_v2_5 or eleven_v4_turbo; omitting the
field uses eleven_flash_v2_5. Empty strings, whitespace, null, non-string
values, and other model IDs are rejected.
For a voice from another provider, omit model_id to preserve its existing
behavior. Explicitly selecting either ElevenLabs model for that voice is rejected.
The default in tools/list describes ElevenLabs behavior; clients should not add
the field automatically when the user has not selected a model.
Jogg adapts pause controls in a copy when sending the synthesis request and keeps
the original text. For eleven_v4_turbo, timed breaks greater than 0 and up to
0.5 seconds become [short pause]; breaks over 0.5 and up to 1 second become
[pause]; longer breaks, including those over 2 seconds, become [long pause].
Zero-second breaks are removed, and supported millisecond values are converted
to seconds first. For Flash, [short pause], [pause], and [long pause] become
SSML breaks of 0.3, 0.75, and 1.5 seconds respectively. These are Jogg compatibility
rules, not exact duration equivalents specified by ElevenLabs. Flash preserves
other bracketed text; delivery tags such as [whispers] need v4 Turbo.
New v4 Turbo subtitles omit complete square-bracket audio tags and break tags.
When adapting v4 pause tags for Flash, subtitles omit those controls and their
converted breaks while retaining other bracketed text. These v4 compatibility
paths split words at explicit pauses and preserve the returned timing gap.
Native Flash breaks continue to use the existing subtitle processing. The input-text fallback
uses the same model-specific filtering when word timestamps are unavailable;
control-only text has no subtitle content. Existing subtitles are not rewritten.
To select v4 Turbo, pass these tools/call parameters:
model_id. Keep a stable idempotency_key
when retrying the unchanged request. Changing an explicit model with the same key
causes a conflict; use a new key for a new synthesis. When the task ID is known,
use jogg_get_audio_tts_tasks_task_id to check its status without another paid
submission. See Synthesize Speech
for the REST API request.
Native text controls also depend on the model: Flash v2.5 accepts SSML
<break time="1.5s" /> (up to 3 seconds), while v4 Turbo uses square-bracket audio
tags such as [whispers] or [short pause] and does not support SSML breaks.
Flash does not support those audio tags. Put the instructions in body.text;
pause tags have no fixed duration in seconds. See the
model comparison, examples, and official ElevenLabs sources
before switching text controls between models.
Asynchronous jobs
Generation submissions normally return a task or resource ID. A robust agent workflow is:1
Review inputs and billing warning
Confirm the selected Space and cost-driving parameters before submission.
2
Submit once
Store the returned task, video, generation, or preview ID.
3
Poll the matching status tool
Continue until the job completes or returns a terminal failure.
4
Reuse the existing result
Do not create a duplicate because a client connection or polling request
timed out.

