Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Ludo AI Game Assets

REMOTE · MCP.LUDO.AI · SCANNED SEP 27

Generate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices.

Available components

0 this week 72 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 10925 tokens (~303/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management84
  • Stability check failed: schema churn in the 30 days we've observed: 5 tool removals, 0 breaking changes, 0 auth/transport breaks, 9 additions. See how to fix → Fail
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 86% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "transferMotion" implies "transfer" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Ludo AI Game Assets MCP server?

Ludo AI Game Assets is a hosted endpoint at https://mcp.ludo.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.ludo.ai

# add to Claude Code
claude mcp add --transport http ai-ludo-game-assets 'https://mcp.ludo.ai/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "ai-ludo-game-assets": {
      "url": "https://mcp.ludo.ai/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "ai-ludo-game-assets": {
      "type": "http",
      "url": "https://mcp.ludo.ai/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.ai-ludo-game-assets]
url = "https://mcp.ludo.ai/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-ludo-game-assets": {
      "type": "remote",
      "url": "https://mcp.ludo.ai/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add ai-ludo-game-assets --url 'https://mcp.ludo.ai/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  ai-ludo-game-assets:
    url: "https://mcp.ludo.ai/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "ai-ludo-game-assets": {
      "Transport": "http",
      "Url": "https://mcp.ludo.ai/mcp"
    }
  }
}
# add to Vellum
assistant mcp add ai-ludo-game-assets -t streamable-http -u 'https://mcp.ludo.ai/mcp'
// mcp.json
{
  "mcpServers": {
    "ai-ludo-game-assets": {
      "type": "http",
      "url": "https://mcp.ludo.ai/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 27 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “submitApiFeedback” functional
  • 26 Sept 26 0
    • Tool “animateSprite” rewrote its description, which is the text the model reads security
    • Tool “animateSpriteKeyframes” rewrote its description, which is the text the model reads security
    • Tool “cancelApiJob” rewrote its description, which is the text the model reads security
    • Tool “createSpriteAudio” rewrote its description, which is the text the model reads security
    • Tool “editSpritesheet” rewrote its description, which is the text the model reads security
    • Tool “listApiJobs” rewrote its description, which is the text the model reads security
    • Tool “transferMotion” rewrote its description, which is the text the model reads security
    • New tool “getAccount” functional
    • “listGenerations” reworded the description of “source” cosmetic
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 22 Sept 26 0
    • Tool “animateSprite” rewrote its description, which is the text the model reads security
  • 19 Sept 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “animate3DModel” rewrote its description, which is the text the model reads security
    • Tool “animate3DModelPreset” rewrote its description, which is the text the model reads security
    • Tool “animateSprite” rewrote its description, which is the text the model reads security
    • Tool “animateSpriteKeyframes” rewrote its description, which is the text the model reads security
    • Tool “cancelApiJob” rewrote its description, which is the text the model reads security
    • Tool “create3DModel” rewrote its description, which is the text the model reads security
    • Tool “createAmbiance” rewrote its description, which is the text the model reads security
    • Tool “createAudioTransform” rewrote its description, which is the text the model reads security
    • Tool “createImage” rewrote its description, which is the text the model reads security
    • Tool “createMusic” rewrote its description, which is the text the model reads security
    • Tool “createSoundEffect” rewrote its description, which is the text the model reads security
    • Tool “createSpeech” rewrote its description, which is the text the model reads security
    • Tool “createSpeechPreset” rewrote its description, which is the text the model reads security
    • Tool “createSpriteAudio” rewrote its description, which is the text the model reads security
    • Tool “createVideo” rewrote its description, which is the text the model reads security
    • Tool “createVideoFromReferences” rewrote its description, which is the text the model reads security
    • Tool “createVoice” rewrote its description, which is the text the model reads security
    • Tool “editImage” rewrote its description, which is the text the model reads security
    • Tool “editSpritesheet” rewrote its description, which is the text the model reads security
    • Tool “editVideo” rewrote its description, which is the text the model reads security
    • Tool “generatePose” rewrote its description, which is the text the model reads security
    • Tool “generateWithStyle” rewrote its description, which is the text the model reads security
    • Tool “getApiJob” rewrote its description, which is the text the model reads security
    • Tool “getDocs” rewrote its description, which is the text the model reads security
    • Tool “listAnimationPresets” rewrote its description, which is the text the model reads security
    • Tool “listApiJobs” rewrote its description, which is the text the model reads security
    • Tool “removeBackground” rewrote its description, which is the text the model reads security
    • Tool “rigModel” rewrote its description, which is the text the model reads security
    • Tool “rotateSprite” rewrote its description, which is the text the model reads security
    • Tool “searchDocs” rewrote its description, which is the text the model reads security
    • Tool “transferMotion” rewrote its description, which is the text the model reads security
    • Tool “upscaleVideo” rewrote its description, which is the text the model reads security
    • “animateSpriteKeyframes” reworded the description of “requestBody” cosmetic
    • “getApiJob” reworded the description of “id” cosmetic
  • 18 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “animateSprite” rewrote its description, which is the text the model reads security
    • Tool “createVideo” rewrote its description, which is the text the model reads security
    • Tool “createVideoFromReferences” rewrote its description, which is the text the model reads security
    • Tool “editSpritesheet” rewrote its description, which is the text the model reads security
    • Tool “editVideo” rewrote its description, which is the text the model reads security
    • Tool “getDocs” rewrote its description, which is the text the model reads security
    • Tool “transferMotion” rewrote its description, which is the text the model reads security
    • Server version: 0.9.9 → 0.9.10 functional
    • New tool “createSpriteAudio” functional
    • New tool “searchDocs” functional
  • 15 Sept 26 0
    • Tool “createVideo” rewrote its description, which is the text the model reads security
    • Tool “createVideoFromReferences” rewrote its description, which is the text the model reads security
    • Tool “editVideo” rewrote its description, which is the text the model reads security
    • Tool “getDocs” rewrote its description, which is the text the model reads security
    • “getDocs” reworded the description of “sections” cosmetic
  • 11 Sept 26 0
    • Tool “animateSprite” rewrote its description, which is the text the model reads security
    • Tool “animateSpriteKeyframes” rewrote its description, which is the text the model reads security
    • Tool “createAmbiance” rewrote its description, which is the text the model reads security
    • Tool “createAudioTransform” rewrote its description, which is the text the model reads security
    • Tool “createMusic” rewrote its description, which is the text the model reads security
    • Tool “createSoundEffect” rewrote its description, which is the text the model reads security
    • Tool “createSpeech” rewrote its description, which is the text the model reads security
    • Tool “createSpeechPreset” rewrote its description, which is the text the model reads security
    • Tool “createVideo” rewrote its description, which is the text the model reads security
    • Tool “createVoice” rewrote its description, which is the text the model reads security
    • Tool “transferMotion” rewrote its description, which is the text the model reads security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 27 Sept 2026 · Probed https://mcp.ludo.ai/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.ludo.ai CN=WR3,O=Google Trust Services,C=US 1 Sept 2026 30 Nov 2026 RSA 2048 SHA256-RSA 4c1d9440002000fe0a33c4257d5ecf0b
SANs: mcp.ludo.ai
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.ludo.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
ludo.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.ludo.ai/mcp Verified 200
http (plaintext) http://mcp.ludo.ai/mcp HTTPS enforced
MCP tools · 36 exposed · ~10,222 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
animate3DModel ~280

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 with rigModel if not. The job result is num_variants candidate animations (default 4), each a standalone animation-only GLB (skeleton + one clip, no mesh) in `glb_url` plus an mp4 `preview_url`, so you can pick the best one and fuse it with your model in a game engine or three.js. mode selects the representation - rot_trans (default, rotation plus translation per bone, most faithful) or rot_only (rotation only, easier to retarget onto another skeleton in an engine). Animation quality is hit-or-miss, which is why multiple candidates are returned. Credits are held once per call regardless of variant count and refunded if the job fails or is cancelled. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.2 credits per call.

NameTypeReqDescription
requestBodyobjectyes–

No output schema declared.

No examples provided.

animate3DModelPreset ~283

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) - only presets that expose a `clip_url` can be applied to a 3D model. The model must have a humanoid-template rig (rig it with rig_type humanoid_template or humanoid_template_hands). The job result is one retargeted animation - a standalone animation-only GLB in `glb_url` plus an mp4 `preview_url` - in the same `animations` envelope as the animate endpoint. crop_loop trims the clip to its seamlessly-looping span (omit to follow the preset's own loop flag); in_place removes net travel so the character moves on the spot, as game-engine locomotion expects (omit to keep the preset's own travel). Credits are held when the job is accepted and refunded if it fails or is cancelled. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.2 credits per call.

NameTypeReqDescription
requestBodyobjectyes–

No output schema declared.

No examples provided.

animateSprite ~724

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 the motion exactly and unambiguously, but do not over-describe it: an action the model already knows is one phrase, not a sequence of steps, and the character, art style, background and camera come from the image, not the prompt. For animations driven by up to three keyframes (including a middle frame), use animateSpriteKeyframes instead. The job result is a single sprite result: `spritesheet_url` (the sheet image), `video_url` (an mp4 of the animation - pass it as `video` to transferMotion or as `spritesheet_video_url` to createSpriteAudio; editSpritesheet takes `spritesheet_url`), `num_frames`/`num_cols`/`num_rows` (the grid layout), and, when requested, `gif_url`, `individual_frame_urls` and `spritesheet_with_background_url`. The hydra model also returns `audio_url`, a sound effect for the animation - there is no need to call createSpriteAudio afterwards; forge and forge-pixel produce no audio. The chosen model must support sprite animation and the duration must be valid for it; incompatible model/duration combinations return HTTP 400. Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Choosing a tool: animateSprite (this one) when you can describe the motion in text; transferMotion when you want an exact motion copied from a reference video or one of the named presets from listAnimationPresets (e.g. a standard walk or attack cycle); generatePose first when the source image is not yet in the pose the animation should start from. Omit `model` to run on hydra (the default) - see the `model` field…

NameTypeReqDescription
requestBodyobjectyesPayload 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 t…

No output schema declared.

No examples provided.

animateSpriteKeyframes ~463

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. At least one of initial_image or middle_image is required (a final_image alone has nothing to anchor the animation); any keyframe may be omitted. The motion_prompt is optional here - when omitted, the motion is derived purely from the keyframes. Runs on hydra (default; also returns `audio_url`), forge, or forge-pixel for pixel-art sprites - the models that support a middle keyframe; any other model returns HTTP 400. For just a start and end frame, animateSprite with `final_image` does the same job. The job result is the same sprite result as animateSprite (`spritesheet_url`, `video_url`, grid fields, optional GIF and frame URLs, `audio_url` on hydra). Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Use animateSprite instead for the classic single-image + text-prompt animation. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type spritesheet). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: credits/s × seconds, per model: Hydra 3/s (shortest duration 3s, so 9 credits minimum), Forge 1.5/s (min charge 4 credits), Forge Pixel 1.5/s (min charge 4 credits); see this endpoint's full pricing table in the API docs.

NameTypeReqDescription
requestBodyobjectyesPayload for generating an animated spritesheet that interpolates through up to three fixed keyframes (initial / middle / final). Runs on hydra (default), forge or forge-pixel - the models supporting…

No output schema declared.

No examples provided.

cancelApiJob ~59

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

NameTypeReqDescription
idstringyes–

No output schema declared.

No examples provided.

create3DModel ~205

Convert a single 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). Accepts optional mesh controls: target_num_faces (max triangle count, 1000-200000, default 50000), texture_size (1024 or 2048, default 2048), and texture_type ("pbr", "simple", or "none", default "pbr"). Credits are held when the job is accepted and refunded if it fails or is cancelled. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type 3d). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 3 credits per call.

NameTypeReqDescription
requestBodyobjectyes–

No output schema declared.

No examples provided.

createAmbiance ~209

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 a URL. The description field is required and duration is capped at 10 seconds (0 means auto-pick based on the description). Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this for continuous, atmospheric background loops; use createSoundEffect for short discrete sound effects, createMusic for musical pieces, and createAudioTransform to remix an existing audio sample. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 2 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a seamless looping ambiance soundscape from a text description

No output schema declared.

No examples provided.

createAudioTransform ~290

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 and must be at most 15MB or the call returns HTTP 400, and duration must be one of the allowed values (0 means match the source, otherwise multiples of 10 up to 180 seconds). The job result is a single audio result containing a URL. The optional modification_strength (0 to 1, default 0.6) controls how far the result departs from the original. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this to transform existing audio you already have; use createSoundEffect, createAmbiance, or createMusic to generate audio from scratch. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 3 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for remixing an audio sample (sound effect, ambiance or music) into a variation guided by a text prompt

No output schema declared.

No examples provided.

createImage ~238

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 generates purely from text it takes no source image, so there is no upload size limit to trip. Credits are held when the job is accepted and refunded if it fails or is cancelled; the charge scales with the number of images produced. Use createImage to make new images from scratch; use generateWithStyle to match a reference image's art style, editImage to modify an existing image, and removeBackground to cut out a subject. Pass an optional request_id to tag the results so you can retrieve them later via listGenerations (type image). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for generating an image from text prompt

No output schema declared.

No examples provided.

createMusic ~224

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 a URL. The description field is required; duration must be one of the allowed values (0 means auto, otherwise multiples of 10 up to 180 seconds) and out-of-range values return HTTP 400. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this for songs and musical scores; use createSoundEffect for short sound effects, createAmbiance for looping background soundscapes, and createAudioTransform to remix an existing audio sample. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 3 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for generating music from a text description

No output schema declared.

No examples provided.

createSoundEffect ~220

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 a URL. The description field is required, duration is capped at 10 seconds (0 means auto-pick based on the description), and you may set loop to true for a seamlessly looping effect. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this for short, discrete sounds; use createAmbiance for a continuous looping background soundscape, createMusic for musical pieces, and createAudioTransform to remix an existing audio sample. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 2 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a sound effect from a text description

No output schema declared.

No examples provided.

createSpeech ~229

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 1000 characters and the sample is supplied as a URL or base64 audio that must be at most 15MB, with violations returning HTTP 400. The job result is a single audio result containing a URL. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this when you have a reference voice sample to clone; use createSpeechPreset to speak with a built-in named preset voice instead, and createVoice to design a brand-new voice from a text description rather than cloning one. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 1 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for text-to-speech generation using voice cloning

No output schema declared.

No examples provided.

createSpeechPreset ~211

Convert text to speech using a named built-in preset voice, with optional emotion and language settings. Both text and voice_preset_id are required and the text is limited to 1000 characters; invalid input returns HTTP 400. The job result is a single audio result containing a URL. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this when you want a ready-made catalog voice and do not need to supply your own sample; use createSpeech to clone a voice from an audio sample instead, and createVoice to design a new voice from a text description. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 1 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for text-to-speech generation using a voice preset

No output schema declared.

No examples provided.

createSpriteAudio ~281

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 within the last 7 days; arbitrary external videos are not accepted. Spritesheets generated with the hydra model already come with `audio_url`, so only call this for forge / forge-pixel output or to replace hydra's sound. Optionally add a `prompt` describing the sound you want. The job result is the URL of the generated audio file only; no video is returned. The audio is also attached to the spritesheet, so it appears as `audio_url` in listGenerations (type spritesheet), where the spritesheet keeps the `request_id` it was generated with. Pass an optional `request_id` to make this call idempotent and to find its job again; it must not be one you already used for another generation. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 3 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for generating audio for a previously generated spritesheet animation.

No output schema declared.

No examples provided.

createVideo ~441

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, 480p) and Griffin HD (720p) both generate a soundtrack; no separate audio step is needed. The job result is the video URL and its actual duration in seconds. Optionally pass `final_image` to interpolate between a start and end frame. The chosen `model` and `duration` must be compatible (incompatible combinations return HTTP 400); see the `model` and `duration` fields for the values each model accepts. Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Pass an optional `request_id` to tag the result so you can locate it later via listGenerations (type video). Related tools: use `createImage` for static images, `animateSprite` for sprite-sheet animation, and listGenerations (type video) to list videos you generated earlier. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: credits/s × seconds, per model: Griffin 1.5/s (shortest duration 5s, so 7.5 credits minimum), Griffin HD 2/s (shortest duration 5s, so 10 credits minimum), Blitz 1/s (shortest duration 2s, so 2 credits minimum) [LEGACY], Eagle 1.3/s [LEGACY], Eagle with Audio 1.8/s [LEGACY]; [LEGACY] models are scheduled for removal - do not use them for new work; see this endpoint's full pricing table in the API docs.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a video from a source image and motion prompt

No output schema declared.

No examples provided.

createVideoFromReferences ~411

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. Griffin (default, 480p) and Griffin HD (720p) generate a soundtrack; note the per-second rate here is higher than createVideo's for the same model. The job result is the video URL and its actual duration in seconds. Choose the output shape with `aspect_ratio` ("default" lets the model decide). The chosen `model` and `duration` must be compatible (incompatible combinations return HTTP 400). Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Pass an optional `request_id` to tag the result so you can locate it later via listGenerations (type video). Related tools: `createVideo` for image-to-video, `editVideo` to modify a generated video. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: credits/s × seconds, per model: Griffin 2.5/s (shortest duration 5s, so 12.5 credits minimum), Griffin HD 4/s (shortest duration 5s, so 20 credits minimum), Eagle 1.5/s [LEGACY], Eagle with Audio 2/s [LEGACY]; [LEGACY] models are scheduled for removal - do not use them for new work; see this endpoint's full pricing table in the API docs.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a video from 1-5 reference images and a text prompt.

No output schema declared.

No examples provided.

createVoice ~245

Design a new voice from a character description (such as "deep-voiced warrior" or "cheerful young girl") and have it speak a short line of text, returning a sample of that newly created voice. Both voice_description and text are required, the spoken text is limited to 200 characters or the call returns HTTP 400, and type selects "human" or "non-human" voices. The job result is a single audio result containing a URL. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use this to invent and audition a voice from a description; use createSpeech for text-to-speech that clones a specific voice from an audio sample, and createSpeechPreset for text-to-speech using a named preset voice. Pass an optional request_id to tag the result so you can locate it later via listGenerations (type audio). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 1 credits per call.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a voice sample from a character description

No output schema declared.

No examples provided.

editImage ~261

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. The job result is an array of image results, each with a url; request n (1-4) to control the number of edited variations. Provided images are uploaded and validated, and any image larger than 15MB is rejected with HTTP 400. Credits are held when the job is accepted and refunded if it fails or is cancelled; the charge scales with the number of images produced. Use editImage to transform a specific existing image; use createImage to generate from text alone, generateWithStyle to borrow a reference's art style, and removeBackground for the dedicated background-removal case. Pass an optional request_id to tag the results so you can retrieve them later via listGenerations (type image). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for editing an existing image based on text instructions

No output schema declared.

No examples provided.

editSpritesheet ~556

Edit a previously generated spritesheet: re-prompt its underlying animation (edit_mode "prompt"), extend the frame beyond its borders ("outpaint"), or repair a bad loop ("fix_loop"). Pass the `spritesheet_url` you received from `animateSprite`, `animateSpriteKeyframes`, `transferMotion`, or an earlier edit - it must be a spritesheet you generated within the last 7 days; arbitrary external images are not accepted. Omit `duration`, `frames`, `frame_size`, `crop` and `model` to keep the source spritesheet's values. A `prompt` is required for edit_mode "prompt", optional for "outpaint", and not accepted for "fix_loop"; optionally add up to 5 reference `images` (URL or base64) to guide the edit. The job result is the same result shape as animateSprite (spritesheet URL, frame layout, optional GIF or individual frames). Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Prompt edits are priced per model (credits/second × duration); "outpaint" and "fix_loop" run a lighter pipeline in which `model` is ignored and are billed at a flat 1 credit per second of the output duration (the source spritesheet's duration unless you pass one). Outpaint decides the extra margin itself - there is no amount parameter. The result carries the same fields as animateSprite (`spritesheet_url`, `video_url`, grid fields); audio is generated only by prompt edits on hydra, so a fix on a hydra sheet comes back without `audio_url`. Pass an optional `request_id` to tag the result for later retrieval via listGenerations (type spritesheet). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: edit_mode "fix_loop" / "outpaint": flat 1 credit per second of output, no minimum, model ignored; edit_mode "prompt": per model as listed -…

NameTypeReqDescription
requestBodyobjectyesPayload for editing a previously generated spritesheet. edit_mode selects the operation - prompt-driven edit (default), outpaint, or loop fixing.

No output schema declared.

No examples provided.

editVideo ~353

Edit a previously generated video with a text prompt and optional reference images (video-to-video); runs on griffin-hd (720p, with soundtrack) and the output keeps the source video's duration unless you pass one. Pass the video `url` you received from `createVideo`, `createVideoFromReferences`, or an earlier edit - it must be a video you generated within the last 7 days; arbitrary external videos are not accepted. Optionally add up to 5 reference `images` (URL or base64) to guide the edit. The job result is the new video URL and its actual duration in seconds. Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge), never more than for the duration you requested, and the difference (or everything, if the job fails or is cancelled) is refunded. Pass an optional `request_id` to tag the result so you can locate it later via listGenerations (type video). Related tools: `createVideo` to generate the source clip, `createVideoFromReferences` for reference-driven generation. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: credits/s × seconds, per model: Griffin HD 2/s (shortest duration 5s, so 10 credits minimum), Eagle 2/s [LEGACY]; [LEGACY] models are scheduled for removal - do not use them for new work; see this endpoint's full pricing table in the API docs.

NameTypeReqDescription
requestBodyobjectyesPayload for editing a previously generated video with a text prompt and optional reference images.

No output schema declared.

No examples provided.

generatePose ~278

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 icons, screenshots, etc.). The job result is an array of pose results, each containing the generated image url, the pose and description used, and a suggested motion_prompt tuned for that pose. Credits are held when the job is accepted and refunded if it fails or is cancelled; the charge scales with the number of images generated. This is typically the first step before animating: call generatePose to set the character's pose, then feed the result (and its suggested motion_prompt) into animateSprite for the best animation quality; use rotateSprite instead when you want to change the camera angle rather than the pose. Pass an optional request_id to tag the results so you can locate them later via listGenerations (type spritesheet). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for generating a new pose for an existing sprite

No output schema declared.

No examples provided.

generateWithStyle ~255

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) to control the number of variations. The style_image is uploaded and validated, and an image larger than 15MB is rejected with HTTP 400. Credits are held when the job is accepted and refunded if it fails or is cancelled; the charge scales with the number of images produced. Use this instead of createImage when style consistency with an existing asset matters; use editImage to alter the content of a specific image rather than borrow its style, and removeBackground to isolate a subject. Pass an optional request_id to tag the results so you can retrieve them later via listGenerations (type image). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for generating new content while maintaining the visual style of a reference image

No output schema declared.

No examples provided.

getAccount ~134

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's shared pool, and `auto_topup` is null because the team owner manages it. Check this before an expensive generation instead of waiting for a 402. Buying credits and changing auto top-up happen in the web app at `billing_url`. This is a free read-only lookup (no credits, no generation).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

getApiJob ~163

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 seconds, or pass `wait: 30` to long-poll - the call is held up to 30 seconds (max 60) and returns as soon as the job finishes.

NameTypeReqDescription
idstringyesThe 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).

No output schema declared.

No examples provided.

getDocs ~411

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 returns just the sections that match. Use getDocs to see what documentation exists, or to read a whole document or named sections. This is the same documentation the Ludo web app shows its users, so it occasionally describes buttons rather than parameters; the substance applies to the API and MCP surfaces just the same. To browse, call it with NO parameters to get a table of contents - every document with its id, label and section titles, and no bodies - then call it again with `doc` (and optionally `sections`) to read only what you need. Fetching a whole document can return tens of thousands of characters, so prefer naming the sections, using titles copied from the table of contents. Section titles match ignoring case, spacing and punctuation: when only some requested titles exist you receive those sections plus `unmatched_sections` and `available_sections`, and when none exist (or `doc` is unknown) the call returns 400 listing the valid values so you can retry once. This is a free discovery endpoint: it does not charge credits and does not queue a job.

NameTypeReqDescription
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.
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 whol…

No output schema declared.

No examples provided.

listAnimationPresets ~192

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, preview_url, and - when the preset can be retargeted onto a rigged 3D model - clip_url), a deduplicated perspectives array, and the directions list. This is a free discovery endpoint and does not charge credits. Use it to obtain the preset_id, perspective, and direction values that transferMotion needs, and to find motion preset names you can reference when animating; pair it with transferMotion (to apply a preset onto a sprite), animateSprite (text-prompt animation), or animate3DModelPreset (apply a clip_url-backed preset to a rigged 3D model).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

listApiJobs ~116

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.

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

No output schema declared.

No examples provided.

listGenerations ~308

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 want to retain. For an in-flight job's status use getApiJob instead.

NameTypeReqDescription
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 items…
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".
typestringyesWhich kind of generation to list

No output schema declared.

No examples provided.

removeBackground ~268

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 the input pixel-for-pixel - set it false when the subject must stay pixel-identical, e.g. an existing sprite you will animate. The job result is a single image result with a url (not an array). The image is uploaded and validated, and an image larger than 15MB is rejected with HTTP 400. Credits are held when the job is accepted and refunded if it fails or is cancelled. Use removeBackground for this dedicated cutout task; editImage can also remove backgrounds via a prompt but is better for broader edits, while createImage and generateWithStyle produce new images rather than process an existing one. Pass an optional request_id to tag the result so you can retrieve it later via listGenerations (type image). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for removing the background of an image

No output schema declared.

No examples provided.

rigModel ~306

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 - there is no model choice on the 3D tools). The job result is a downloadable `model_url` for the rigged GLB. rig_type selects the skeleton prior - general (default, any asset), humanoid (anime-style characters), game (classic game-character rigs), or the pinned humanoid templates for two-armed, two-legged characters: humanoid_template (standard 22-joint skeleton with named joints, required for animating from the preset library) and humanoid_template_hands (52 joints, five fingers per hand). joint_naming relabels the identified joints to a convention - smpl (default), mixamo, humanik, unreal, godot, rigify, or vroid - without changing the skeleton. Credits are held when the job is accepted and refunded if it fails or is cancelled. Rigging is non-destructive to geometry but replaces any prior skeleton, so animations made against an old rig no longer apply. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 1 credits per call.

NameTypeReqDescription
requestBodyobjectyes–

No output schema declared.

No examples provided.

rotateSprite ~301

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 degrees; omit to keep the current elevation), and an optional n (1-4) for the number of variations. Only works with sprite image types (not icons, screenshots, etc.). The job result is an array of rotate-sprite results, each with the generated image url and the camera_rotation and camera_elevation that were applied. Credits are held when the job is accepted and refunded if it fails or is cancelled; the charge scales with the number of images generated. Use this to produce alternate view angles of a character; use generatePose instead to change the character's pose rather than the camera, and animateSprite or transferMotion to bring a sprite to life. Pass an optional request_id to tag the results so you can retrieve them later via listGenerations (type spritesheet). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: This endpoint consumes 0.5 credits per result.

NameTypeReqDescription
requestBodyobjectyesPayload for rotating the camera view of an existing sprite

No output schema declared.

No examples provided.

searchDocs ~311

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 something costs, known limitations). Start here rather than reading whole documents. Each result carries `doc` and `section`, which you can pass straight to getDocs to re-read that section, and the section's full markdown `content`. Results are best first; weak matches are left out, so an empty `results` list means the documentation does not cover the question - rephrase it, or call getDocs with no parameters to browse the table of contents. This is the same documentation the Ludo web app shows its users, so it occasionally describes buttons rather than parameters; the substance applies to the API and MCP surfaces just the same. Returns up to `n` sections (default 3, max 10). If it answers 503 the search backend is briefly unavailable: call getDocs instead rather than retrying in a loop. This is a free discovery endpoint: it does not charge credits and does not queue a job.

NameTypeReqDescription
ninteger–Maximum number of sections to return. Defaults to 3.
querystringyesWhat 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".

No output schema declared.

No examples provided.

submitApiFeedback ~131

Send feedback to the Ludo team: a limitation you could not work around, a bug, a result that did not match the documentation, a capability you needed that Ludo does not offer yet, or praise for something that worked well. Describe what you were trying to do and what was missing, and name the operation (and job_id, when there is one) it relates to. Do not include personal data, secrets or file contents. Send one report per issue, and if you are an agent, tell the user what you sent. Free (no credits).

NameTypeReqDescription
requestBodyobjectyes–

No output schema declared.

No examples provided.

transferMotion ~541

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 direction (all three from listAnimationPresets; if both video and preset_id are sent the video wins). The job result is the same sprite result as animateSprite: `spritesheet_url`, `video_url`, grid fields, optional GIF / frame / with-background URLs, and `audio_url` when the model is hydra. `duration` defaults to 1.5s where the chosen model offers it, otherwise to that model's shortest (hydra, the default, starts at 3s) - and a longer reference clip or preset is compressed to fit, so pass the preset's own `duration` (returned by listAnimationPresets) to keep its timing. It returns HTTP 400 if neither a video nor a complete preset_id/perspective/direction triple is supplied, if the named preset, perspective, or direction cannot be resolved, or if the model/duration combination is invalid. Credits are held when the job is accepted; the final charge is max(rate × produced seconds, the model's minimum charge) - the produced length follows the reference clip - and the difference (or everything, if the job fails or is cancelled) is refunded. Use this when you have an existing motion clip or preset to copy; prefer animateSprite to generate animation purely from a text prompt. Omit `model` to run on hydra (the default - most capable, and returns audio); pick forge for a cheaper run on simple motion, presets and matching poses; the `model` field lists rates. Pass an optional request_id to tag the result so you can retrieve it later via listGenerations (type spritesheet). Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: credits/s × seconds, per model: Hydra 3/s (shortest duration 3s, so 9 credits minimum), Forge 2/s (min c…

NameTypeReqDescription
requestBodyobjectyesPayload for transferring motion from a video onto a static sprite image, producing an animated spritesheet.

No output schema declared.

No examples provided.

upscaleVideo ~297

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 dimensions of the source must be under 960 pixels: griffin (480p) output qualifies; griffin-hd (720p) output does not, landscape or portrait (only a square 720x720 would) - generate on griffin if you intend to upscale. A too-large source fails the job and the held credits are refunded. The job result is the new video URL (2x width and height, same duration) and its duration in seconds. Billed per second of video, independent of model; held when the job is accepted and refunded if it fails or is cancelled. Pass an optional `request_id` to tag the result so you can locate it later via listGenerations (type video). Related tools: `createVideo` for image-to-video, `editVideo` to modify a generated video. Async generation job: returns `{id, status}` - poll `getApiJob` (job and credit contract: see the server instructions). Credits: 0.2 credits per second of video.

NameTypeReqDescription
requestBodyobjectyesPayload for upscaling a previously generated video to twice its resolution.

No output schema declared.

No examples provided.

validateApiKeyEndpoint ~27

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the Ludo AI Game Assets MCP server?

Ludo AI Game Assets is an MCP server listed in the public MCP registry as ai.ludo/game-assets. Generate game assets with AI: sprites, 3D models, animations, sound effects, music, and voices. This page covers its hosted endpoint (https://mcp.ludo.ai/mcp).

Is the Ludo AI Game Assets MCP server safe to use?

Ludo AI Game Assets scores 72 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Ludo AI Game Assets MCP server expose?

Ludo AI Game Assets exposes 36 tools: validateApiKeyEndpoint, createImage, generateWithStyle, editImage, animateSprite, and 31 more. Their descriptions and schemas cost roughly 10,222 tokens of context every time the server is loaded.

Does the Ludo AI Game Assets MCP server require authentication?

No. We connected to Ludo AI Game Assets without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Ludo AI Game Assets MCP server still maintained?

Ludo AI Game Assets is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.