Game assets in. Engine-ready files out.
33 tools for your own game files, used from Claude while you make a game: cut out sprites, light them, slice video into sheets, build tiles, materials, LODs, colliders and store art.












Before
After
After
In Claude
- Add a custom connector in Claude with this address:
https://rengi.dev/app/mcp - Sign in with Google when Claude asks. Every account gets 300 free credits a day; failed calls cost nothing.
- Attach a file and ask in plain words, for example "cut this character out and make a normal map". In claude.ai, allow
rengi.devonce under Settings → Capabilities so attached files go through by themselves (how); otherwise you drop the file into the upload panel Claude shows.
Only need part of it? There are smaller sets for 2D, 3D, Audio and Release: addresses in the docs.
Files you send and results are deleted after 7 days. Privacy
From an agent
No account and no key: each call is paid on the spot in USDC on Base with x402, and only when it succeeds. MCP at https://rengi.dev/mcp, HTTP described in llms.txt and openapi.json.
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, ... }
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())