voidless-mcp 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/package.json +1 -1
- package/tools.js +11 -6
package/README.md
CHANGED
|
@@ -118,7 +118,9 @@ Or just the hosted connector, no key: `claude mcp add --transport http voidless
|
|
|
118
118
|
|
|
119
119
|
**Free game-dev tools** (no credits)
|
|
120
120
|
|
|
121
|
-
The same tools as [voidless.dev/tools](https://voidless.dev/tools), for any image, not just your library. Inputs are image URLs (a `cdn.voidless.dev` link from `get_asset` works) or base64/data URIs, PNG or GIF, up to 2048x2048, 256 frames and 32 MB per call. Results come back in the chat: images as PNG/GIF, the `.tres` and atlas `.json` as text.
|
|
121
|
+
The same tools as [voidless.dev/tools](https://voidless.dev/tools), for any image, not just your library. Inputs are image URLs (a `cdn.voidless.dev` link from `get_asset` or a saved result works), image keys from your library (`assets/…png`, as `get_asset` lists them), or base64/data URIs, PNG or GIF, up to 2048x2048, 256 frames and 32 MB per call. Results come back in the chat: images as PNG/GIF, the `.tres` and atlas `.json` as text.
|
|
122
|
+
|
|
123
|
+
Results can also be saved to your library (free, private, counts toward your storage), which gives them an asset id and `cdn.voidless.dev` URLs to pass to the next tool instead of base64 (for example `generate_vfx` → `palette_swap` → `add_outline` → `animate_sprite`). `generate_vfx` saves its effect by default (with its recipe, so it can be rendered again; `save: false` skips it); `palette_swap`, `add_outline`, `pack_sprite_sheet`, `slice_sprite_sheet` and `make_gif` save only when you pass `save: true`. They run on Voidless's server: the hosted connector serves them, and the npm package forwards them there with your key (so they need a connection).
|
|
122
124
|
|
|
123
125
|
| Tool | What it does |
|
|
124
126
|
| --- | --- |
|
|
@@ -142,7 +144,7 @@ Generation tools create new content in your library; none deletes or overwrites
|
|
|
142
144
|
|
|
143
145
|
## Privacy Policy
|
|
144
146
|
|
|
145
|
-
This server sends your prompts, any images you pass in, and your API key to the Voidless API (api.voidless.dev) to run generations; results are stored in your Voidless account. The free tools send their inputs to mcp.voidless.dev, which processes them in memory and stores nothing; each call is logged against your account (tool, time taken, success, result size) for usage statistics. It collects nothing else and keeps no local data. See the [Voidless Privacy Policy](https://voidless.dev/privacy-policy) for how Voidless collects, uses, stores, shares and retains data, and the [Terms of Service](https://voidless.dev/terms-of-service).
|
|
147
|
+
This server sends your prompts, any images you pass in, and your API key to the Voidless API (api.voidless.dev) to run generations; results are stored in your Voidless account. The free tools send their inputs to mcp.voidless.dev, which processes them in memory and stores nothing unless a result is saved to your library (`generate_vfx` by default, the others with `save: true`), where it is kept like any other asset of yours; each call is logged against your account (tool, time taken, success, result size) for usage statistics. It collects nothing else and keeps no local data. See the [Voidless Privacy Policy](https://voidless.dev/privacy-policy) for how Voidless collects, uses, stores, shares and retains data, and the [Terms of Service](https://voidless.dev/terms-of-service).
|
|
146
148
|
|
|
147
149
|
## Support
|
|
148
150
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "voidless-mcp",
|
|
3
3
|
"mcpName": "dev.voidless/voidless",
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.1",
|
|
5
5
|
"description": "MCP server for Voidless: generate game sprites, animations, sound, music, video and 3D models",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Voidless Dev Inc. <contact@voidless.dev>",
|
package/tools.js
CHANGED
|
@@ -286,7 +286,8 @@ export function createVoidlessServer(API_KEY, transport = "stdio") {
|
|
|
286
286
|
const content = [
|
|
287
287
|
{
|
|
288
288
|
type: "text",
|
|
289
|
-
|
|
289
|
+
// note: e.g. an end frame of another size was scaled to the start image's.
|
|
290
|
+
text: [`${label} added to asset ${assetId} (${APP_URL}/asset/${assetId}).`, data.note, money(data)]
|
|
290
291
|
.filter(Boolean)
|
|
291
292
|
.join("\n"),
|
|
292
293
|
},
|
|
@@ -425,8 +426,8 @@ export function createVoidlessServer(API_KEY, transport = "stdio") {
|
|
|
425
426
|
.string()
|
|
426
427
|
.default("")
|
|
427
428
|
.describe(
|
|
428
|
-
"Work from one image
|
|
429
|
-
"
|
|
429
|
+
"Work from one image instead of the asset's base: an image key from any of your assets (as get_asset " +
|
|
430
|
+
"lists it), or its cdn.voidless.dev URL. Empty = the asset's current base image."
|
|
430
431
|
);
|
|
431
432
|
const frameId = z
|
|
432
433
|
.number()
|
|
@@ -628,7 +629,7 @@ export function createVoidlessServer(API_KEY, transport = "stdio") {
|
|
|
628
629
|
"get_asset",
|
|
629
630
|
"Show one asset with every frame: frame ids, types (animation, rotations - 8-way, edit - text, layer…), " +
|
|
630
631
|
"names, facings and image keys. Frame ids are what frameIndex/items/frameId take elsewhere; image keys " +
|
|
631
|
-
"are what referenceFile and end_frame take. Free.",
|
|
632
|
+
"are what referenceFile and end_frame take, on this asset or any other of yours. Free.",
|
|
632
633
|
{ id: assetId, preview: z.boolean().default(true).describe("Include the base image inline") },
|
|
633
634
|
readTool("Get asset"),
|
|
634
635
|
tool(async ({ id, preview }) => {
|
|
@@ -838,7 +839,7 @@ export function createVoidlessServer(API_KEY, transport = "stdio") {
|
|
|
838
839
|
prompt: z.string().describe("What to change"),
|
|
839
840
|
referenceFile,
|
|
840
841
|
frameId,
|
|
841
|
-
images: z.array(z.string()).max(4).default([]).describe("Optional extra reference images: image keys from get_asset or
|
|
842
|
+
images: z.array(z.string()).max(4).default([]).describe("Optional extra reference images: image keys from any of your assets (get_asset lists them), or their cdn.voidless.dev URLs. Other links are refused: upload the picture first"),
|
|
842
843
|
remove_bg: z.boolean().default(true).describe("Remove the background from the result, as the app's editor does. Set false for artwork or a scene that should keep its background"),
|
|
843
844
|
},
|
|
844
845
|
writeTool("Edit image"),
|
|
@@ -1043,7 +1044,11 @@ export function createVoidlessServer(API_KEY, transport = "stdio") {
|
|
|
1043
1044
|
id: assetId,
|
|
1044
1045
|
prompt: z.string().describe("The motion, e.g. 'walk cycle', 'swings sword overhead'"),
|
|
1045
1046
|
referenceFile,
|
|
1046
|
-
end_frame: z.string().default("").describe(
|
|
1047
|
+
end_frame: z.string().default("").describe(
|
|
1048
|
+
"Optional image for the clip to end on: an image key from any of your assets (get_asset lists them), or its " +
|
|
1049
|
+
"cdn.voidless.dev URL, e.g. the start image to loop, or another sprite's pose. Empty = free ending. An end " +
|
|
1050
|
+
"image of another size is scaled to the start image's; one of a very different shape is refused (nothing charged)"
|
|
1051
|
+
),
|
|
1047
1052
|
frameId,
|
|
1048
1053
|
},
|
|
1049
1054
|
writeTool("Animate sprite"),
|