Animate your character
Connect your coding agent to turn a character image into a sprite animation.
View usageTechnical details
Input and output
Exactly what the MCP accepts and what a successful job returns.
https://mable-dev-service.mable.gg/mcpOne character image, with an optional motion description.
A motion description, plus optional state, loop, perspective, emphasis, background key, quality, and idempotency settings.
One transparent row-major WebP atlas with frame and playback metadata.
Frames, rows, columns, frame and atlas dimensions, FPS, loop, layout, checksum, MIME type, and download expiry.
start_sprite_animationQueues an asynchronous image-to-sprite-atlas job, with an optional motion description.
get_sprite_animation_jobPolls an owner-bound job and returns the atlas after success.
retry_sprite_animation_atlasRetries atlas processing from a retained source video without generating another video.
This MCP does not create games, drafts, music, voice, backgrounds, or general image assets.
Sprite MCP tool reference
The complete callable surface: accepted parameters, example arguments, and response fields.
start_sprite_animation
Queues an asynchronous image-to-sprite-atlas job, with an optional motion description.
start_sprite_animation
Queues an asynchronous image-to-sprite-atlas job, with an optional motion description.
Parameters
imageDataUrlrequired · PNG, JPEG, or WebP data URL- A required PNG, JPEG, or WebP character image data URL; decoded size up to 20 MiB.
motionoptional · string · max 500- An optional description of the movement to animate.
stateIdoptional · string · default: idle- A lowercase state name using letters, numbers, underscores, or hyphens.
loopoptional · boolean · default: true- Whether playback should loop.
perspectiveoptional · enum · default: sideView- Camera direction: sideView, frontView, topDown, or isometric.
motionEmphasisoptional · active | calm- Whether the motion should feel active or calm.
backgroundoptional · auto | white | black- Internal key color for generated frames; it does not describe the source-image background.
qualityProfileoptional · standard- The processing profile. Currently standard.
idempotencyKeyoptional · string · max 160- A caller-chosen key that prevents accidental duplicate jobs.
Example arguments
{
"imageDataUrl": "data:image/png;base64,iVBORw0KGgo...",
"motion": "A fire imp throws a fireball",
"stateId": "run",
"loop": true,
"perspective": "sideView",
"motionEmphasis": "active",
"background": "auto",
"qualityProfile": "standard",
"idempotencyKey": "run-v1"
}Returns
Returns the durable job ID, initial status, polling delay, quota reservation, and whether the request replayed an existing job.
{
"jobId": "uuid",
"status": "queued",
"pollAfterMs": 3000,
"quota": {
"enforced": true,
"reservedUnits": 1,
"remainingUnits": null,
"resetAt": null
},
"idempotentReplay": false
}get_sprite_animation_job
Polls an owner-bound job and returns the atlas after success.
get_sprite_animation_job
Polls an owner-bound job and returns the atlas after success.
Parameters
jobIdrequired · UUID- The job ID returned by start_sprite_animation.
Example arguments
{
"jobId": "uuid"
}Returns
While running, status includes stage, progress, and polling delay. Success includes every atlas and playback field shown below plus usage. Failure returns error.code and optional retryable/requestId fields; an expired result returns available: false and errorCode.
{
"jobId": "uuid",
"status": "succeeded",
"stage": "complete",
"progress": 100,
"pollAfterMs": 5000,
"result": {
"available": true,
"atlasUrl": "https://...",
"expiresAt": "ISO-8601 timestamp",
"mimeType": "image/webp",
"sha256": "...",
"stateId": "run",
"qualityProfile": "standard",
"profileVersion": "...",
"frames": 24,
"rows": 5,
"columns": 5,
"frameWidth": 512,
"frameHeight": 512,
"atlasWidth": 2560,
"atlasHeight": 2560,
"atlasBytes": 123456,
"fps": 24,
"loop": true,
"layout": "rowMajor"
},
"usage": {
"providerSubmitAttempts": 1,
"providerAcceptedGenerations": 1,
"providerPollRequests": 4,
"chargedUnits": 1
}
}retry_sprite_animation_atlas
Retries atlas processing from a retained source video without generating another video.
retry_sprite_animation_atlas
Retries atlas processing from a retained source video without generating another video.
Parameters
jobIdrequired · UUID- A failed postprocessing job ID whose source video is still retained.
Example arguments
{
"jobId": "failed-job-uuid"
}Returns
Returns a new job ID linked to the source job and confirms that the retained video was reused without a new provider generation.
{
"jobId": "new-retry-job-uuid",
"sourceJobId": "failed-job-uuid",
"status": "queued",
"stage": "queued",
"pollAfterMs": 3000,
"reusedVideo": true,
"providerGenerationCreated": false,
"idempotentReplay": false
}