Developer tools

Animate your character

Connect your coding agent to turn a character image into a sprite animation.

View usage
Loading
Technical details

Input and output

Exactly what the MCP accepts and what a successful job returns.

Mable tools URLhttps://mable-dev-service.mable.gg/mcp
Input
Character image

One character image, with an optional motion description.

Animation instructions

A motion description, plus optional state, loop, perspective, emphasis, background key, quality, and idempotency settings.

Output
Sprite atlas

One transparent row-major WebP atlas with frame and playback metadata.

Playback metadata

Frames, rows, columns, frame and atlas dimensions, FPS, loop, layout, checksum, MIME type, and download expiry.

start_sprite_animation

Queues an asynchronous image-to-sprite-atlas job, with an optional motion description.

get_sprite_animation_job

Polls an owner-bound job and returns the atlas after success.

retry_sprite_animation_atlas

Retries 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.

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.

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.

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
}
Manage agent keys
Loading