Skip to main content
Glama

Adjust spritesheet export

adjustSpritesheet

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 animateSprite, animateSpriteKeyframes, transferMotion, editSpritesheet, rotateSpritesheet or an earlier adjust - it must be a spritesheet you generated through the API within the last 7 days; arbitrary external images are not accepted. Omit a setting to keep the source's value. The animation itself is unchanged: this only re-cuts the same video into a new sheet, so use it to fix framing (for example an effect clipped by True Size: re-export with a fixed frame_size or 0), to change the frame count or size for your engine, to upscale it 1.5x (frame_size -1), to turn loop trimming on or off, or to pack it as ordinary art when its detected pixel grid is wrong for the asset (use_pixel_grid false). It cannot change the motion, margins or content - use editSpritesheet for that. The source is left as it is and the result is a new spritesheet with its own spritesheet_url. The job result is the same sprite result as animateSprite (spritesheet_url, video_url, grid fields, optional GIF and frame URLs, and the source's audio_url when it has one). Limited to 20 calls per 5 minutes, 120 an hour and 1000 a day. 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).

Input Schema

NameRequiredDescriptionDefault
requestBodyYesPayload for re-exporting a previously generated sprite animation with different sheet settings (Adjust Sprite Sheet in the web app).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / requestBody / properties / use_pixel_grid
      Added value: +{
      +  "description": "Use the animation's pixel grid if one is detected. true: when Ludo detects a pixel grid with confidence, the sheet is packed on it (logical pixels, scaled up by whole blocks); when none is detected, this has no effect. false: always pack as ordinary art, for when the detected grid is wrong for your asset (for example a smooth sprite coming back as coarse blocks). Ignored for forge-pixel animations, which are always packed on their grid. Unset keeps the source spritesheet's setting (true unless it was made with false). Re-cutting with false fixes a sheet whose detected grid is wrong without generating it again.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of the sprite in pixels, not of the frame: it sets how big the character is drawn, and each frame also holds the space around it, so frames come out larger than this value. Omit to keep the source's setting. 0 is maximum resolution. -9 is True Size: frames keep the size and position of the source's input image, so anything the animation adds beyond its edges is cut off - pick a fixed size or 0 to get it back. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -9."New value: +"Size of the sprite in pixels, not of the frame: it sets how big the character is drawn, and each frame also holds the space around it, so frames come out larger than this value. Omit to keep the source's setting. 0 is maximum resolution. -1 is AI 1.5x upscaling, which gains nothing on sources under 512 px. -9 is True Size: frames keep the size and position of the source's input image, so anything the animation adds beyond its edges is cut off - pick a fixed size or 0 to get it back. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -1, -9."
  3. Changed1 schema field changed
    • changedInput schema / properties / requestBody / properties / frame_size / description
      Previous value: -"Size of each frame in pixels (width and height). Omit to keep the source's frame size. 0 is maximum resolution. -9 is True Size: frames keep the size and position of the source's input image, so anything the animation adds beyond its edges is cut off - pick a fixed size or 0 to get it back. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -9."New value: +"Size of the sprite in pixels, not of the frame: it sets how big the character is drawn, and each frame also holds the space around it, so frames come out larger than this value. Omit to keep the source's setting. 0 is maximum resolution. -9 is True Size: frames keep the size and position of the source's input image, so anything the animation adds beyond its edges is cut off - pick a fixed size or 0 to get it back. Accepted values: 32, 64, 96, 128, 192, 256, 384, 0, -9."
  4. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety quartet (non-read-only, non-destructive, non-idempotent, closed-world); the description adds substantial context beyond that: the call is free/no credits, explicit rate limits (20/5min, 120/hr, 1000/day), the source sheet is left untouched and a new sheet with its own spritesheet_url is produced, and it is an async job returning {id, status} that must be polled via getApiJob. That is the exact information an agent needs before spending a call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly: purpose, then source-URL requirement, then the settings rationale, then job/rate-limit mechanics. It is a single dense ~250-word paragraph with no formatting breaks, so the operational details (rate limits, polling contract) are buried mid-block rather than scannable; still, essentially every sentence carries new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers everything an agent needs for a nested-payload, no-output-schema async tool: the full result shape (same sprite result as animateSprite — spritesheet_url, video_url, grid fields, optional GIF/frame URLs, audio_url), the async poll contract, credit cost, rate limits, and request_id tagging plus listGenerations retrieval. Nothing material is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already documents each field thoroughly. The description nevertheless adds usage-level meaning the schema fields don't carry on their own — linking 'frame_size' 0 or a fixed value to recovering content clipped by True Size, and 'use_pixel_grid' false to fixing a wrongly detected grid on a smooth sprite — which is scenario guidance rather than field restatement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource — re-export a previously generated sprite animation with new sheet settings without regenerating — and explicitly distinguishes itself from editSpritesheet ('cannot change the motion, margins or content - use editSpritesheet for that'), so an agent can route between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both when-to-use (fix True Size clipping, change frame count/size, 1.5x upscale, toggle loop trimming, correct a bad pixel grid) and when-not-to-use (motion/margin/content changes go to editSpritesheet). It also states the eligibility precondition for spritesheet_url: must come from animateSprite, animateSpriteKeyframes, transferMotion, editSpritesheet, rotateSpritesheet or a prior adjust, within 7 days; external images rejected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.