ludo-ai avatar

Ludo AI Game Assets

ludo-ai/ludo-mcp

Connects Claude to Ludo AI's asset generation API for creating game content without leaving your workflow. You get tools for generating sprites, icons, backgrounds, and textures with style and perspective controls, plus 3D model conversion from 2D images, animated spritesheets with frame count options, motion transfer from video or presets, and audio generation for sound effects and music. The edit and style transfer operations let you iterate on existing assets. Requires a Ludo AI API key and costs 0.5 credits per image, 3 per 3D model, and 5 per animation. Useful when prototyping game concepts or building asset pipelines where you want AI generation directly accessible to your LLM.

GitHub stars
8
tools
48
auth
Secret needed
transport
HTTP
last updated
Nov 5, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.ludo.ai/mcp --name game-assets --header 'Authorization: Bearer ${API_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http game-assets https://mcp.ludo.ai/mcp --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 48 tools

Verified live against the running server on Nov 6, 2026.

validateApiKeyEndpointValidates an API key. Returns 200 if valid, 403 if invalid.

Validates an API key. Returns 200 if valid, 403 if invalid.

No parameters. Call it with no arguments.

createImageGenerate game-art images from a text prompt alone, selecting an image_type (e.g. sprite) and optionally art_style, perspective, and aspect_ratio. The job result is an array of image results, each with a url; request n (1-8) to control how many variations come back. Because it...1 params

Generate game-art images from a text prompt alone, selecting an image_type (e.g. sprite) and optionally art_style, perspective, and aspect_ratio. The job result is an array of image results, each with a url; request n (1-8) to control how many variations come back. Because it...

Parameters* required
requestBody*object
Payload for generating an image from text prompt
generateWithStyleGenerate new images that match the visual style of a reference image: supply a style_image (URL or base64) plus a text prompt describing what to create and an optional image_type (defaults to sprite). The job result is an array of image results, each with a url; request n (1-4...1 params

Generate new images that match the visual style of a reference image: supply a style_image (URL or base64) plus a text prompt describing what to create and an optional image_type (defaults to sprite). The job result is an array of image results, each with a url; request n (1-4...

Parameters* required
requestBody*object
Payload for generating new content while maintaining the visual style of a reference image
editImageModify an existing image according to text instructions: supply a source image (URL or base64) and a prompt describing the changes (e.g. "add clouds", "warmer color scheme"), with an optional reference_image for extra style or content guidance. To change only one area, pass a...1 params

Modify an existing image according to text instructions: supply a source image (URL or base64) and a prompt describing the changes (e.g. "add clouds", "warmer color scheme"), with an optional reference_image for extra style or content guidance. To change only one area, pass a...

Parameters* required
requestBody*object
Payload for editing an existing image based on text instructions
animateSpriteAnimate a static sprite into a spritesheet driven by a motion text prompt (image-to-spritesheet): supply an initial_image (URL or base64) plus a motion_prompt like "walking" or "attack slash", and optionally a final_image to interpolate between a start and end frame. Describe...1 params

Animate a static sprite into a spritesheet driven by a motion text prompt (image-to-spritesheet): supply an initial_image (URL or base64) plus a motion_prompt like "walking" or "attack slash", and optionally a final_image to interpolate between a start and end frame. Describe...

Parameters* required
requestBody*object
Payload for generating an animated spritesheet from a static image. Input images can either be provided in base64 or URL. If the image was generated using Ludo, ideally it should be generated using...
animateSpriteKeyframesAnimate a sprite through up to three fixed keyframes - initial_image, middle_image and final_image (each a URL or base64) - producing a spritesheet that interpolates through the provided frames in order. initial_image is required: the animation starts from it, and middle_image...1 params

Animate a sprite through up to three fixed keyframes - initial_image, middle_image and final_image (each a URL or base64) - producing a spritesheet that interpolates through the provided frames in order. initial_image is required: the animation starts from it, and middle_image...

Parameters* required
requestBody*object
Payload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on hydra (default), hydra-plus, forge or forge-pixel - the mode...
generatePoseRe-pose an existing sprite into a new target pose while preserving the character, taking a source image (URL or base64), a pose name (or "Other" with a free-text description), and an optional n (1-4) for how many variations to produce. Only works with sprite image types (not i...1 params

Re-pose an existing sprite into a new target pose while preserving the character, taking a source image (URL or base64), a pose name (or "Other" with a free-text description), and an optional n (1-4) for how many variations to produce. Only works with sprite image types (not i...

Parameters* required
requestBody*object
Payload for generating a new pose for an existing sprite
rotateSpriteRe-render an existing sprite from a different camera viewpoint while keeping the same character and pose, taking a source image (URL or base64), a required camera_rotation azimuth (one of 0, 45, 90, 135, 180, -135, -90, -45 degrees), an optional camera_elevation (0, 30, or 60...1 params

Re-render an existing sprite from a different camera viewpoint while keeping the same character and pose, taking a source image (URL or base64), a required camera_rotation azimuth (one of 0, 45, 90, 135, 180, -135, -90, -45 degrees), an optional camera_elevation (0, 30, or 60...

Parameters* required
requestBody*object
Payload for rotating the camera view of an existing sprite
transferMotionTransfer motion from a reference video or a named animation preset onto a static sprite image, producing an animated spritesheet that mimics the reference movement. Provide the sprite as image (URL or base64) plus either a video URL or a preset_id together with perspective and...1 params

Transfer motion from a reference video or a named animation preset onto a static sprite image, producing an animated spritesheet that mimics the reference movement. Provide the sprite as image (URL or base64) plus either a video URL or a preset_id together with perspective and...

Parameters* required
requestBody*object
Payload for transferring motion from a video onto a static sprite image, producing an animated spritesheet.
getDocsBrowse or read Ludo's own documentation in full - how to choose a sprite animation mode, when to use Generate Before / Generate After, how margins behave, which model suits a job, and each generator's known limitations. To answer a specific question, call searchDocs first: it...2 params

Browse or read Ludo's own documentation in full - how to choose a sprite animation mode, when to use Generate Before / Generate After, how margins behave, which model suits a job, and each generator's known limitations. To answer a specific question, call searchDocs first: it...

Parameters* required
docstring
Which document to read, by id (the table of contents returned by the no-parameter call lists them). Omit to receive the table of contents.one of assistant · game-ideator · image-generator · project · account · faq
sectionsarray
Section titles to return from `doc`, copied from the table of contents (an array of titles; over plain REST, a comma-separated string, where a title that itself contains a comma is still matched wh...
searchDocsSearch Ludo's own documentation with a plain-language question and get back only the few sections that answer it - the fastest way to learn how a feature is meant to be used before you generate with it (how to pick a sprite animation mode or model, how margins behave, what som...2 params

Search Ludo's own documentation with a plain-language question and get back only the few sections that answer it - the fastest way to learn how a feature is meant to be used before you generate with it (how to pick a sprite animation mode or model, how margins behave, what som...

Parameters* required
ninteger
Maximum number of sections to return. Defaults to 3.
query*string
What you want to know, in plain language, e.g. "how do I keep a sprite animation's colors consistent" or "what does a 3D model cost".
listAnimationPresetsList the available animation presets along with their perspectives and the eight supported compass directions (N, NE, E, SE, S, SW, W, NW). Synchronous GET with no request body: it returns an animations array (each with id, name, category, description, duration, and preview_ur...

List the available animation presets along with their perspectives and the eight supported compass directions (N, NE, E, SE, S, SW, W, NW). Synchronous GET with no request body: it returns an animations array (each with id, name, category, description, duration, and preview_ur...

No parameters. Call it with no arguments.

editSpritesheetEdit a previously generated spritesheet: re-prompt its underlying animation (edit_mode "prompt"), extend the frame beyond its borders ("outpaint"), repair a bad loop ("fix_loop"), or re-render it with finer detail ("improve": the extra pass hydra-plus runs when it generates, o...1 params

Edit a previously generated spritesheet: re-prompt its underlying animation (edit_mode "prompt"), extend the frame beyond its borders ("outpaint"), repair a bad loop ("fix_loop"), or re-render it with finer detail ("improve": the extra pass hydra-plus runs when it generates, o...

Parameters* required
requestBody*object
Payload for editing a previously generated spritesheet. edit_mode selects the operation - prompt-driven edit (default), outpaint, loop fixing, or improve (finer detail, on hydra spritesheets only).
rotateSpritesheetRe-render a previously generated sprite animation from a new view: the same motion and timing, seen from a different angle (e.g. a front-facing walk cycle turned into the same walk seen from the back). Pass the `spritesheet_url` you received from `animateSprite`, `animateSprit...1 params

Re-render a previously generated sprite animation from a new view: the same motion and timing, seen from a different angle (e.g. a front-facing walk cycle turned into the same walk seen from the back). Pass the `spritesheet_url` you received from `animateSprite`, `animateSprit...

Parameters* required
requestBody*object
Payload for re-rendering a previously generated sprite animation from a new view.
adjustSpritesheetAdjust Sprite Sheet: re-export a previously generated sprite animation with different sheet settings - frame count, frame size, loop trimming or whitespace cropping - without generating the animation again. Free (no credits). Pass the `spritesheet_url` you received from `anima...1 params

Adjust Sprite Sheet: re-export a previously generated sprite animation with different sheet settings - frame count, frame size, loop trimming or whitespace cropping - without generating the animation again. Free (no credits). Pass the `spritesheet_url` you received from `anima...

Parameters* required
requestBody*object
Payload for re-exporting a previously generated sprite animation with different sheet settings (Adjust Sprite Sheet in the web app).
createSpriteAudioGenerate a sound effect for a previously generated spritesheet animation. Pass, as `spritesheet_video_url`, the `video_url` you received from `animateSprite`, `animateSpriteKeyframes`, `transferMotion`, or `editSpritesheet` - it must belong to a spritesheet you generated withi...1 params

Generate a sound effect for a previously generated spritesheet animation. Pass, as `spritesheet_video_url`, the `video_url` you received from `animateSprite`, `animateSpriteKeyframes`, `transferMotion`, or `editSpritesheet` - it must belong to a spritesheet you generated withi...

Parameters* required
requestBody*object
Payload for generating audio for a previously generated spritesheet animation.
listDirectionalSpriteStylesList the styles Directional Sprites can render a 3D model in, with the perspectives (camera heights) and the eight directions they render from. Each style has an id (pass it as style_id), a label, a description, a family, whether it is pixel art, a thumbnail_url of the style a...

List the styles Directional Sprites can render a 3D model in, with the perspectives (camera heights) and the eight directions they render from. Each style has an id (pass it as style_id), a label, a description, a family, whether it is pixel art, a thumbnail_url of the style a...

No parameters. Call it with no arguments.

previewDirectionalSpritesPreview Directional Sprites: a few frames of a 3D model in a style, from each direction asked for, to check a style before rendering. Takes the same model, animation, camera and style fields as createDirectionalSprites. The response (synchronous, not a job) has one preview per...1 params

Preview Directional Sprites: a few frames of a 3D model in a style, from each direction asked for, to check a style before rendering. Takes the same model, animation, camera and style fields as createDirectionalSprites. The response (synchronous, not a job) has one preview per...

Parameters* required
requestBody*object
Payload for previewing directional sprite frames of a 3D model
createDirectionalSpritesDirectional Sprites: render a 3D model into one spritesheet per direction, in a style. Pass the GLB in `model` (URL or base64; rigged, to animate it - see create3DModel with rig, or rigModel) and at most one animation: `animation_url` (the `glb_url` of an animation from animat...1 params

Directional Sprites: render a 3D model into one spritesheet per direction, in a style. Pass the GLB in `model` (URL or base64; rigged, to animate it - see create3DModel with rig, or rigModel) and at most one animation: `animation_url` (the `glb_url` of an animation from animat...

Parameters* required
requestBody*object
Payload for rendering a 3D model as directional sprite sheets
createDirectionalStillsDirectional Sprites stills: render a 3D model as it is (no animation) into one large image per direction, in a style, on a transparent background. Pass the GLB in `model` (URL or base64), the `directions` (up to 8, rendered together so they line up) and the style (listDirectio...1 params

Directional Sprites stills: render a 3D model as it is (no animation) into one large image per direction, in a style, on a transparent background. Pass the GLB in `model` (URL or base64), the `directions` (up to 8, rendered together so they line up) and the style (listDirectio...

Parameters* required
requestBody*object
Payload for rendering a 3D model as one still image per direction
fitDirectionalAccessoryFit an accessory to a rigged 3D model for Directional Sprites: an item GLB (a sword, a gun, a staff, a bow, a shield, a helmet, a hat, a backpack...) held by one bone of the model - a hand, the head, the back or the hips. Nothing is saved. The item is first placed automaticall...1 params

Fit an accessory to a rigged 3D model for Directional Sprites: an item GLB (a sword, a gun, a staff, a bow, a shield, a helmet, a hat, a backpack...) held by one bone of the model - a hand, the head, the back or the hips. Nothing is saved. The item is first placed automaticall...

Parameters* required
requestBody*value
Payload for fitting an accessory to a rigged 3D model
attachDirectionalAccessoriesPut accessories on a rigged 3D model for Directional Sprites: up to 8 items, each at the `placement` fitDirectionalAccessory returned (or, without one, at the automatic fit plus the same size/move/turn adjustments). Returns `model_url`, one GLB of the model holding them all (k...1 params

Put accessories on a rigged 3D model for Directional Sprites: up to 8 items, each at the `placement` fitDirectionalAccessory returned (or, without one, at the automatic fit plus the same size/move/turn adjustments). Returns `model_url`, one GLB of the model holding them all (k...

Parameters* required
requestBody*value
Payload for putting accessories on a rigged 3D model
createVideoGenerate a short video clip from a source image and a motion text prompt (image-to-video); a source `image` is required - to make a video from text alone, first createImage and animate that, or use createVideoFromReferences with reference images. Griffin (default, 768p) genera...1 params

Generate a short video clip from a source image and a motion text prompt (image-to-video); a source `image` is required - to make a video from text alone, first createImage and animate that, or use createVideoFromReferences with reference images. Griffin (default, 768p) genera...

Parameters* required
requestBody*object
Payload for generating a video from a source image and motion prompt
createVideoFromReferencesGenerate a video from 1-5 reference images and a text prompt (references-to-video). Unlike createVideo, which animates a single source image, this composes a new scene that borrows characters, objects, and style from the reference images. Each image can be a URL or base64. Gri...1 params

Generate a video from 1-5 reference images and a text prompt (references-to-video). Unlike createVideo, which animates a single source image, this composes a new scene that borrows characters, objects, and style from the reference images. Each image can be a URL or base64. Gri...

Parameters* required
requestBody*object
Payload for generating a video from 1-5 reference images and a text prompt.
editVideoEdit a previously generated video with a text prompt and optional reference images (video-to-video); runs on griffin-hd (768p, with soundtrack) and the output keeps the source video's duration unless you pass one. Pass the video `url` you received from `createVideo`, `createVi...1 params

Edit a previously generated video with a text prompt and optional reference images (video-to-video); runs on griffin-hd (768p, with soundtrack) and the output keeps the source video's duration unless you pass one. Pass the video `url` you received from `createVideo`, `createVi...

Parameters* required
requestBody*object
Payload for editing a previously generated video with a text prompt and optional reference images.
upscaleVideoUpscale a previously generated video to twice its resolution (2x). Pass the video `url` you received from `createVideo`, `createVideoFromReferences`, or `editVideo` - it must be a video you generated within the last 7 days; arbitrary external videos are not accepted. Both dime...1 params

Upscale a previously generated video to twice its resolution (2x). Pass the video `url` you received from `createVideo`, `createVideoFromReferences`, or `editVideo` - it must be a video you generated within the last 7 days; arbitrary external videos are not accepted. Both dime...

Parameters* required
requestBody*object
Payload for upscaling a previously generated video to twice its resolution.
removeBackgroundRemove the background from a single image, returning the subject isolated on a transparent background. Supply the source image (URL or base64); optionally set crop to trim the result to the content, and creative_edit (default true) for higher-quality output that may not match...1 params

Remove the background from a single image, returning the subject isolated on a transparent background. Supply the source image (URL or base64); optionally set crop to trim the result to the content, and creative_edit (default true) for higher-quality output that may not match...

Parameters* required
requestBody*object
Payload for removing the background of an image
upscaleImageUpscale an image: the same picture at a higher resolution, up to 4x, with the result capped at 2048px on its longest side. The source image (URL or base64) must be below 2048px on its longest side; a larger one is rejected with HTTP 400. The job result is a single image result...1 params

Upscale an image: the same picture at a higher resolution, up to 4x, with the result capped at 2048px on its longest side. The source image (URL or base64) must be below 2048px on its longest side; a larger one is rejected with HTTP 400. The job result is a single image result...

Parameters* required
requestBody*object
Payload for upscaling an image
convertToPixelArtConvert an image to pixel art: any art, broken AI pixel art or pixel art comes back as pixel art at about the input's own size. Free (no credits) and synchronous: the call answers with the result directly, with no job to poll. `pixel_size` is the size of one pixel-art pixel, i...1 params

Convert an image to pixel art: any art, broken AI pixel art or pixel art comes back as pixel art at about the input's own size. Free (no credits) and synchronous: the call answers with the result directly, with no job to poll. `pixel_size` is the size of one pixel-art pixel, i...

Parameters* required
requestBody*object
Payload for converting an image to pixel art
create3DModelConvert a source image into a textured 3D model (image-to-3D). The job result is a downloadable GLB model_url plus an array of snapshot image URLs rendered from different angles (handy for previews). model picks the generator: prop (default) is low-cost and suits everyday prop...1 params

Convert a source image into a textured 3D model (image-to-3D). The job result is a downloadable GLB model_url plus an array of snapshot image URLs rendered from different angles (handy for previews). model picks the generator: prop (default) is low-cost and suits everyday prop...

Parameters* required
requestBody*object
Payload for generating a 3D model from an image
create3DModelImageMake a character image ready to turn into a 3D model, the first step of Directional Sprites on the web. Pass a prompt describing the character, your own image (URL or base64), or both. With an image, it is redrawn as a 3D render, and the prompt becomes the changes to make (e.g...1 params

Make a character image ready to turn into a 3D model, the first step of Directional Sprites on the web. Pass a prompt describing the character, your own image (URL or base64), or both. With an image, it is redrawn as a 3D render, and the prompt becomes the changes to make (e.g...

Parameters* required
requestBody*object
Payload for making a character image ready for create3DModel. Pass a prompt, an image, or both.
rigModelRig a 3D model: generate a skeleton and skin weights for an existing GLB so it can be animated. Accepts a URL or base64-encoded GLB in `model` (here `model` is the 3D asset file, not an AI model name - rigging has no model choice). The job result is a downloadable `model_url`...1 params

Rig a 3D model: generate a skeleton and skin weights for an existing GLB so it can be animated. Accepts a URL or base64-encoded GLB in `model` (here `model` is the 3D asset file, not an AI model name - rigging has no model choice). The job result is a downloadable `model_url`...

Parameters* required
requestBody*object
Payload for rigging a 3D model with a skeleton
animate3DModelGenerate text-driven skeletal animations for an already-rigged 3D model. Pass the rigged GLB in `model` (URL or base64; the 3D asset file, not an AI model name) and a motion `prompt` (e.g. "walking", "swinging its axe"). The model must already have a skeleton - rig it first wi...1 params

Generate text-driven skeletal animations for an already-rigged 3D model. Pass the rigged GLB in `model` (URL or base64; the 3D asset file, not an AI model name) and a motion `prompt` (e.g. "walking", "swinging its axe"). The model must already have a skeleton - rig it first wi...

Parameters* required
requestBody*object
Payload for animating a rigged 3D model from a text prompt
animate3DModelPresetApply a curated animation preset to an already-rigged 3D model (retargeting). Pass the rigged GLB in `model` (URL or base64; the 3D asset file, not an AI model name) and a `preset_id` from the animation presets list (from listAnimationPresets; any preset id works). Any rig typ...1 params

Apply a curated animation preset to an already-rigged 3D model (retargeting). Pass the rigged GLB in `model` (URL or base64; the 3D asset file, not an AI model name) and a `preset_id` from the animation presets list (from listAnimationPresets; any preset id works). Any rig typ...

Parameters* required
requestBody*object
Payload for animating a rigged 3D model with a preset animation
createSoundEffectProduce a short sound effect (SFX) from a text description, such as "laser gun firing" or "footsteps on gravel". The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The description field is required,...1 params

Produce a short sound effect (SFX) from a text description, such as "laser gun firing" or "footsteps on gravel". The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The description field is required,...

Parameters* required
requestBody*object
Payload for generating a sound effect from a text description
createAmbianceProduce a looping background ambiance soundscape from a text description, such as "windy forest at dusk" or "busy tavern interior". The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The description...1 params

Produce a looping background ambiance soundscape from a text description, such as "windy forest at dusk" or "busy tavern interior". The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The description...

Parameters* required
requestBody*object
Payload for generating a seamless looping ambiance soundscape from a text description
createMusicProduce a piece of music from a text description, such as "epic orchestral battle theme" or "calm piano melody", with optional lyrics. The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The descript...1 params

Produce a piece of music from a text description, such as "epic orchestral battle theme" or "calm piano melody", with optional lyrics. The job result is a single audio result containing the URL of an MP3 or WAV file (the URL's extension, .mp3 or .wav, says which). The descript...

Parameters* required
requestBody*object
Payload for generating music from a text description
createAudioTransformRemix an existing audio sample (a sound effect, ambiance, or music clip) into a variation guided by a text prompt, for example turning a track into an 80s synthwave or metal version. Both the sample and the prompt are required; the sample is uploaded as a URL or base64 audio a...1 params

Remix an existing audio sample (a sound effect, ambiance, or music clip) into a variation guided by a text prompt, for example turning a track into an 80s synthwave or metal version. Both the sample and the prompt are required; the sample is uploaded as a URL or base64 audio a...

Parameters* required
requestBody*object
Payload for remixing an audio sample (sound effect, ambiance or music) into a variation guided by a text prompt
createVoiceDesign a new voice from a character description (such as "deep-voiced warrior" or "cheerful young girl"), a character image, or both, and have it speak a short line of text, returning a sample of that newly created voice. text is required, plus voice_description or image (an i...1 params

Design a new voice from a character description (such as "deep-voiced warrior" or "cheerful young girl"), a character image, or both, and have it speak a short line of text, returning a sample of that newly created voice. text is required, plus voice_description or image (an i...

Parameters* required
requestBody*object
Payload for generating a voice sample from a character description and/or a character image
createSpeechConvert text to speech by cloning the voice from an audio sample you provide (voice-cloning text-to-speech). Both text and sample are required; the text is limited to 250 characters and the sample is supplied as a URL or base64 audio that must be at most 15MB, with violations...1 params

Convert text to speech by cloning the voice from an audio sample you provide (voice-cloning text-to-speech). Both text and sample are required; the text is limited to 250 characters and the sample is supplied as a URL or base64 audio that must be at most 15MB, with violations...

Parameters* required
requestBody*object
Payload for text-to-speech generation using voice cloning
createSpeechPresetConvert text to speech using a named built-in preset voice, with optional language and either an emotion or a delivery note, depending on the voice. Both text and voice_preset_id are required and the text is limited to 250 characters. The voices named by a first name (e.g. "Ra...1 params

Convert text to speech using a named built-in preset voice, with optional language and either an emotion or a delivery note, depending on the voice. Both text and voice_preset_id are required and the text is limited to 250 characters. The voices named by a first name (e.g. "Ra...

Parameters* required
requestBody*object
Payload for text-to-speech generation using a voice preset
listGenerationsList your generation history across the API and the web app - filter by type, source (api|web|all), text search, and date range. Returns {items, page, page_size, has_more}; keep paging while has_more is true. API-originated results expire after 7 days - download anything you w...8 params

List your generation history across the API and the web app - filter by type, source (api|web|all), text search, and date range. Returns {items, page, page_size, has_more}; keep paging while has_more is true. API-originated results expire after 7 days - download anything you w...

Parameters* required
date_frominteger
Only return items generated at or after this time (unix seconds)
date_tointeger
Only return items generated at or before this time (unix seconds)
page_numberinteger
1-based page number Default: 1.
page_sizeinteger
Items per page (1-100) Default: 20.
request_idstring
Only return items tagged with this request_id when you generated them
searchstring
Free-text search. Every whitespace-separated term must match (case-insensitive substring) the item's tags or one of its text fields (prompt, hints, style, label, ...), so "dwarf axe" narrows to ite...
sourcestring
Which surface the items were generated from: api (your API/MCP generations, last 7 days only), web (your Ludo web studio generations, no time limit), or all (default, both) Default: "all".one of api · web · all
type*string
Which kind of generation to listone of image · spritesheet · video · audio · 3d
listApiJobsList the generation jobs you started through the API or MCP, most recent first. Web-app jobs are not included. This is a free read-only lookup (no credits, no generation). Filter with a comma-separated status list; limit defaults to 50 and is capped at 100.2 params

List the generation jobs you started through the API or MCP, most recent first. Web-app jobs are not included. This is a free read-only lookup (no credits, no generation). Filter with a comma-separated status list; limit defaults to 50 and is capped at 100.

Parameters* required
limitinteger
Maximum number of jobs to return. Defaults to 50, capped at 100.
statusstring
Comma-separated statuses to include (queued, running, succeeded, failed, canceled). Defaults to all.
getApiJobPoll the status of a generation job started by any tool. Every generation tool returns `{id, status}`; call getApiJob with that id until status is `succeeded` (then read `result`, shaped exactly like the tool's documented output) or `failed` (read `error`). Poll every few seco...2 params

Poll the status of a generation job started by any tool. Every generation tool returns `{id, status}`; call getApiJob with that id until status is `succeeded` (then read `result`, shaped exactly like the tool's documented output) or `failed` (read `error`). Poll every few seco...

Parameters* required
id*string
The job id returned by a generation call (its `id` in the 202 response).
waitinteger
Seconds to long-poll for a terminal state (0-60). Defaults to 0 (return immediately).
cancelApiJobCancel a queued job you started through the API or MCP; the credits held for it are refunded. Jobs that are already running cannot be canceled (409). Returns the canceled job. This is free (no credits).1 params

Cancel a queued job you started through the API or MCP; the credits held for it are refunded. Jobs that are already running cannot be canceled (409). Returns the canceled job. This is free (no credits).

Parameters* required
id*string
The job id returned by a generation call (its `id` in the 202 response).
getPricingWhat Ludo's paid service costs and includes, for an agent advising a user: every plan with its monthly and annual price, credits, seats, queue concurrency and what it includes or lacks; credit top-ups and their price brackets; what each API call costs; and the rules to know be...

What Ludo's paid service costs and includes, for an agent advising a user: every plan with its monthly and annual price, credits, seats, queue concurrency and what it includes or lacks; credit top-ups and their price brackets; what each API call costs; and the rules to know be...

No parameters. Call it with no arguments.

getAccountShow your account's credit balance, plan and auto top-up settings. `credits.available` is what generations can spend right now (plan_credits + extra - used); `resets_at` is when the plan's monthly credits refill (unix seconds). When `team_pool` is true the balance is your team...

Show your account's credit balance, plan and auto top-up settings. `credits.available` is what generations can spend right now (plan_credits + extra - used); `resets_at` is when the plan's monthly credits refill (unix seconds). When `team_pool` is true the balance is your team...

No parameters. Call it with no arguments.

submitApiFeedbackReport a problem with the Ludo API itself to the Ludo team. Use it ONLY for API bugs (an error, a failed or stuck job, a crash, a response that does not match this documentation) and API limitations (a parameter, operation or format you needed that the API does not support, an...1 params

Report a problem with the Ludo API itself to the Ludo team. Use it ONLY for API bugs (an error, a failed or stuck job, a crash, a response that does not match this documentation) and API limitations (a parameter, operation or format you needed that the API does not support, an...

Parameters* required
requestBody*object
Payload for reporting a bug, limitation or missing capability to Ludo

Sponsors

Readme

Ludo AI MCP Server

Generate game assets using AI through the Model Context Protocol (MCP).

Features


View the full README on GitHub

Details

Repository
github.com/ludo-ai/ludo-mcp
Website
ludo.ai
Categories
Design & Creative, Media & Entertainment
Transport
HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Design & Creative MCP servers

View all
1compassalessandrolorenz avatarFigma Context Mcp Aircompassalessandrolorenz/figma-context-mcp-airFigma MCP server for AI agents. 9 tools: design context, variables, screenshots, and FigJam.1stars
2coding-solo avatarGodotcoding-solo/godot-mcpMCP server for interfacing with Godot game engine. Provides tools for launching the editor, running projects, and capturing debug output.3.7Kstars
3tomyud1 avatarGodot Mcptomyud1/godot-mcpMCP server for Godot game engine integration — control the Godot editor with AI451stars
4nirholas avatar3D AI Agent Avatarnirholas/three.ws3D AI Agent Avatar — render any GLB, give it a Solana wallet, a voice, and pump.fun powers.269stars
5loonghao avatarPhotoshoploonghao/photoshop-python-api-mcp-serverProvides a bridge between MCP and Adobe Photoshop to create documents, manage layers, apply effects, and fetch session information on Windows.223stars
6creativeclawco avatarCreative Clawcreativeclawco/creative-claw-marketplaceOn-brand creative studio for AI agents: images, video, audio, and 3D.0stars