Rengi Forge docs
Rengi Forge is a set of gamedev tools for Claude. It takes assets you already have, from your own work or from an image, video or sound generator, and makes them game-ready: sprites cut from their background, animation videos turned into sprite sheets, autotile sets, seamless PBR textures, clean loops and voice lines, 3D files converted to GLB with LODs and collision, store art for Steam, itch.io, Epic, Google Play and the App Store, app icons, bitmap fonts, and dressed levels. Results open in an interactive viewer right in the chat, with download links.
Connect in Claude
- Open Settings → Connectors and choose Add custom connector (or find Rengi Forge in the directory).
- Paste
https://rengi.dev/app/mcpand press Add. - Press Connect and sign in with Google. That is the only setup.
Claude Code: claude mcp add --transport http rengi-forge https://rengi.dev/app/mcp, then run /mcp to sign in.
Only the tools you need
If you work on one kind of asset, add a smaller set instead of all 33 tools. Claude picks tools better from a short list. Same account, same allowance.
| 2D, 15 tools sprites, sheets, normal maps, autotiles, textures, bitmap fonts, 2D tile maps, sprites rendered from 3D models | https://rengi.dev/app/mcp/2d |
| 3D, 16 tools model conversion, optimization, LODs, colliders, renders, PBR materials, 3D level layout | https://rengi.dev/app/mcp/3d |
| Audio, 4 tools sound cleanup, loops, variations, voice takes | https://rengi.dev/app/mcp/audio |
| Release, 3 tools store pages for Steam, itch.io, Google Play, Epic and the App Store, app icons | https://rengi.dev/app/mcp/release |
Free allowance
Every account gets 300 free credits a day, reset at 00:00 UTC. A call costs 5 to 100 credits (listed per tool below), and failed calls cost nothing. Ask Claude "how many Forge credits do I have left?" or open your account.
Try it
- "Make this stone photo a seamless texture and give me PBR maps for Unity URP."
- "Cut this character out of its background and make a normal map for 2D lights."
- "Turn this jump animation video into a sprite sheet for Godot."
- "Make an autotile set from this grass and this dirt texture for Tiled."
- "Convert this FBX to GLB, make 4 LODs and collision for Unity."
- "Clean up this voice take and split it into one file per line."
- "Here is my key art and logo: make every Steam, itch.io and Epic size."
- "Make a pixel bitmap font from this TTF with Cyrillic."
Files
Attach a file in the chat or give a link (PNG, JPG, WebP, MP4, WebM, MOV, GIF, WAV, MP3, OGG, FLAC, FBX, OBJ, glTF/GLB, STL, PLY, DAE, 3DS, TTF/OTF, or a ZIP with a model and its textures, up to 200 MB). For an attached file Claude asks Rengi Forge for a one-time upload link and sends the file there from its code sandbox.
Attached files in claude.ai: one setting
Claude's code sandbox only reaches domains you allow, and connectors are not added for you. Allow Rengi Forge once and attached files go through by themselves:
- In claude.ai open Settings → Capabilities.
- Under Code execution and file creation, turn on network egress.
- In Additional allowed domains, add
rengi.dev.
On Team and Enterprise plans an admin sets this. Without it, an upload panel appears in the chat instead: drop the file there and press Enter on the message it fills in. Claude Code and ChatGPT need nothing: files go through as is. Links to files that are already online always work.
Files you send and results are kept for 7 days behind unguessable links, then deleted.
All tools
Every tool only creates new files; none changes or deletes anything of yours.
Level design
Read a prop cataloglevel_design_catalog | Ingest your prop catalog: footprint, height, pivot and category computed from each GLB. Returns a catalogId for place. | 50 credits |
Dress a 3D levellevel_design_place | Dress a level: placements for every zone, previews and a 3D viewer link. | 100 credits |
Revise a 3D levellevel_design_revise | Change a placed level by instruction or structured zone edits: denser or sparser, other assets, remove a kind of prop; untouched zones keep their exact transforms. It cannot cut an empty area inside a zone or move one object: for that, add a keep-clear zone to the layout and place again. | 50 credits |
Fill a 2D tilemaplevel_design_place_2d | Fill a 2D tilemap: terrain with proper corner transitions, decorations, obstacles and multi-tile stamps; Tiled .tmj, Unity Tilemap JSON and a preview. | 100 credits |
Revise a 2D tilemaplevel_design_revise_2d | Change a 2D map by instruction or zone edits; untouched zones keep their tiles. | 30 credits |
Asset previews
Render model viewsasset_render_views | Render a GLB model to four PNG views (three-quarter, front, side, top) for thumbnails and previews, plus mesh stats and size. | 10 credits |
Render a turntable GIFasset_render_turntable | Render a GLB model as a looping turntable GIF, one full revolution, plus mesh stats. | 25 credits |
Render iso sprite sheetasset_render_sprites | Transparent isometric sprite sheet, 4 or 8 directions in one row (south first, clockwise), with frame JSON. | 40 credits |
Sprites
Slice a sprite sheetsprite_tools_slice | Cut a sprite sheet into frames by grid or by transparent gaps; frame PNGs plus a ZIP. | 5 credits |
Pack a sprite atlassprite_tools_pack | Pack frames into one atlas (MaxRects) with padding and edge extrusion; TexturePacker JSON and Unity JSON. | 5 credits |
Clean up pixel artsprite_tools_pixelate | Clean pixel art: find the true pixel grid, downscale to it, snap to a palette, hard alpha. | 10 credits |
Remove a backgroundsprite_tools_remove_bg | Cut a sprite, prop or character out of its background: exact keying for one-color backgrounds (text and holes too), AI segmentation for busy ones; clean edges with no halo, trimmed, with a pivot. AI mode handles one main subject, not text on photos. | 5 credits |
Turn a video into a sprite sheetsprite_tools_video_to_sheet | Turn an animation video or GIF (from Kling, Veo, Sora or a capture) into a sprite sheet: frames at your fps, background removed, every frame aligned to one box and pivot so it does not jitter, the best loop point, TexturePacker JSON, Godot SpriteFrames and a GIF preview. | 15 credits |
Make a sprite normal mapsprite_tools_normal_map | Normal map for a sprite or sprite sheet, for 2D lights in Unity URP 2D and Godot: a rounded bevel from the silhouette plus surface detail, alpha kept, OpenGL or DirectX; a height map and a preview lit by a moving light. | 5 credits |
Make an autotile setsprite_tools_autotile | Two terrain textures (grass over dirt, sand over water) to a full 47-tile autotile set with natural, seamless edges, outer and inner corners, plus ready rules: Tiled wang set, Godot 4 TileSet terrains, Unity Rule Tile (editor script), JSON, and a painted preview map. | 15 credits |
3D models
Optimize a GLBglb_optimizer_optimize | Shrink a GLB (up to 10 MB) for web or mobile: dedup, join draw calls, gentle simplify, textures to WebP at a max size, meshopt or Draco compression; before/after renders, size report and loader notes for three.js and Unity. | 20 credits |
Optimize a large GLBglb_optimizer_optimize_large | Shrink a large GLB (up to 50 MB) for web or mobile, same pipeline as optimize: dedup, join, simplify, WebP textures, meshopt or Draco. | 50 credits |
Inspect a GLBglb_optimizer_inspect | Inspect a GLB without changing it: triangles, draw calls, materials, texture memory, animations, glTF validator errors, and concrete suggestions to make it lighter. | 5 credits |
Convert a model to GLBglb_optimizer_convert | Convert FBX, OBJ (zip with .mtl and textures), glTF (zip), STL, PLY, DAE or 3DS to one GLB: Y-up, in meters, materials and FBX animations kept. Returns the GLB, a report, a validator pass and a preview render. | 15 credits |
Make LODsglb_optimizer_lod | Generate a LOD chain from a GLB (default 100/50/25/10% of triangles) with locked borders so UV seams and silhouettes hold; one GLB per level, a side-by-side render and Unity LODGroup transition heights. | 20 credits |
Make 3D collisionglb_optimizer_colliders | Collision for a model: a set of convex hulls that hug the shape (V-HACD), ready for Godot (-convcolonly nodes), Unreal (UCX_ names) and Unity (convex MeshColliders via an editor script), plus hulls.json for any engine and a see-through overlay to check. | 15 credits |
Textures
Make a texture seamlesstexture_tools_seamless | Make a texture tile without visible seams: removes baked lighting, hides the seam along the path where the image already matches. Returns the tile and a 2x2 preview. | 10 credits |
Make PBR mapstexture_tools_pbr | PBR maps from one albedo image: normal (OpenGL for Unity/three.js and DirectX for Unreal), 16-bit height, roughness and ambient occlusion, plus a lit preview. | 15 credits |
Pack texture channelstexture_tools_pack | Pack grayscale maps into one texture for an engine preset: Unreal ORM, Unity URP metallic/smoothness, Unity HDRP mask map. Missing maps get sensible constants. | 5 credits |
Build a texture atlastexture_tools_atlas | Pack textures into one atlas with edge-filled gutters so mipmaps do not bleed; UV rects for bottom-left (Unity, OpenGL) and top-left (DirectX, Unreal) origins. | 5 credits |
Audio
Clean up a soundaudio_tools_clean | Trim silence, normalize loudness to a LUFS target with a -1 dBTP ceiling, add anti-click fades and convert (ogg, wav, mp3; mono for SFX). Returns the file, a waveform and measured stats. | 5 credits |
Make a seamless loopaudio_tools_loop | Turn music or ambience into a seamless loop: cuts at zero crossings and crossfades the end into the start with an equal-power curve. Returns the loop, a 3x preview and loop points in samples. | 10 credits |
Make SFX variationsaudio_tools_variations | Make 2-12 variations of one sound effect with small pitch and volume changes, so repeated footsteps or hits do not sound copy-pasted. Returns each file and a ZIP. | 10 credits |
Clean up voice linesaudio_tools_voice | Make a voice recording or TTS take game-ready: rumble high-passed, noise reduced against the measured floor, sibilance tamed, dialogue loudness (-18 LUFS) with a -1 dBTP ceiling, and a long take split into one file per phrase with a CSV cue sheet. | 10 credits |
Store art and icons
Make Steam store artstore_assets_steam | Every Steam store and library capsule from one key art at the exact required sizes: logo composited per Steam rules, Library Hero without logo, separate transparent Library Logo, page background, a contact sheet and a ZIP. | 20 credits |
Make app icon setsstore_assets_icons | App icons from one square art: iOS 1024 with Contents.json, Android adaptive icon layers at every density plus legacy and Play Store 512, and web favicons with a manifest snippet. Preview with the masks launchers apply. | 10 credits |
Make store art for itch.io, Google Play, Epic and the App Storestore_assets_stores | One key art and logo to the store images beyond Steam: itch.io cover 630x500, Google Play feature graphic 1024x500, Epic landscape 2560x1440 and portrait 1200x1600; gameplay screenshots fitted to Google Play 1920x1080 and App Store iPhone 6.9", 6.3" and iPad 13" sizes without stretching, no alpha where stores reject it. | 20 credits |
Fonts
Make a bitmap fontfont_tools_bitmap | Bitmap font from a TTF/OTF: atlas PNG, BMFont .fnt with kerning, JSON and a preview of a sample line. Pixel mode snaps glyphs to whole pixels with no antialiasing. | 10 credits |
For agents with a wallet
The same tools are also open without an account, paid per call in USDC through x402: MCP at https://rengi.dev/mcp, HTTP described in llms.txt and openapi.json.
TypeScript (npm i @x402/fetch @x402/evm viem), with PRIVATE_KEY a wallet holding a little USDC on Base:
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const pay = wrapFetchWithPaymentFromConfig(fetch, { schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }] });
const res = await pay("https://rengi.dev/v1/sprite-tools/remove-bg", {
method: "POST", headers: { "content-type": "application/json" },
body: JSON.stringify({ imageUrl: "https://rengi.dev/samples/prop-on-white.png" }),
});
console.log(await res.json()); // { image: <link to the cut-out PNG>, mode, ... }
Python (pip install "x402[httpx,evm]"):
import asyncio, os
from eth_account import Account
from x402 import SchemeRegistration, x402ClientConfig
from x402.http.clients import wrapHttpxWithPaymentFromConfig
from x402.mechanisms.evm.exact import ExactEvmScheme
signer = Account.from_key(os.environ["PRIVATE_KEY"])
config = x402ClientConfig(schemes=[SchemeRegistration(network="eip155:8453", client=ExactEvmScheme(signer=signer))])
async def main():
async with wrapHttpxWithPaymentFromConfig(config, timeout=180) as http:
r = await http.post("https://rengi.dev/v1/sprite-tools/remove-bg", json={"imageUrl": "https://rengi.dev/samples/prop-on-white.png"})
print(r.json())
asyncio.run(main())
You pay only when the call succeeds. Any paid tool works the same way; see llms.txt for the inputs.
Help
Email support@rengi.dev. Include the tool name and roughly when you called it.