@pixeldojo/mcp 0.4.0 → 0.5.0

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 CHANGED
@@ -3,7 +3,13 @@
3
3
  PixelDojo MCP server. One install for Claude Code, Cursor, OpenClaw, and any
4
4
  other [Model Context Protocol](https://modelcontextprotocol.io) host.
5
5
 
6
- Five named tools, 130+ models, async by default.
6
+ 16 named tools, 140+ models, async by default.
7
+
8
+ **Prefer zero install?** PixelDojo also runs a hosted MCP server with OAuth
9
+ sign-in (no API key): point any remote-capable client at
10
+ `https://pixeldojo.ai/api/mcp` and approve in your browser. Setup guides for
11
+ every platform: [pixeldojo.ai/skills](https://pixeldojo.ai/skills). This npm
12
+ package is the local (stdio) twin — same skills, plus local-file uploads.
7
13
 
8
14
  ## Quick start
9
15
 
@@ -34,24 +40,32 @@ Add to your editor's MCP config (e.g. `~/.config/claude-code/mcp.json`):
34
40
  }
35
41
  ```
36
42
 
37
- Restart your agent. You'll see five new tools.
43
+ Restart your agent. You'll see 16 new tools.
38
44
 
39
45
  ## Named skills
40
46
 
41
- | Skill | What it does | Default model |
42
- |---|---|---|
43
- | `pixeldojo:generate` | Any prompt → image or video | `google-nano-banana` |
44
- | `pixeldojo:character` | Consistent characters across shots | `ideogram-character` |
45
- | `pixeldojo:storyboard` | Multi-shot scenes from one brief | `veo-3.1` |
46
- | `pixeldojo:upscale` | Enhance any image | `magnific-upscaler` |
47
- | `pixeldojo:status` | Poll long-running jobs after a 30s sync handoff | — |
48
-
49
- Each skill takes a `model` field for whitelist-checked overrides. Pass any
50
- apiId from the [API Platform catalog](https://pixeldojo.ai/api-platform).
47
+ | Skill | What it does |
48
+ |---|---|
49
+ | `pixeldojo:generate` | Any prompt → image or video. Picks the best model, or pass any apiId. |
50
+ | `pixeldojo:edit` | Change an existing image with a text instruction (multi-image capable). |
51
+ | `pixeldojo:character` | Consistent characters across shots. |
52
+ | `pixeldojo:storyboard` | Multi-shot scenes from one brief. |
53
+ | `pixeldojo:upscale` | Enhance any image, up to 16×. |
54
+ | `pixeldojo:audio` | Full audio scenes: dialogue + effects + music in one clip (Seed Audio 1.0). |
55
+ | `pixeldojo:library` | Search your media library: saved My Media + recent generations. |
56
+ | `pixeldojo:save` | Save a result to My Media permanently (outputs otherwise expire in 24h). |
57
+ | `pixeldojo:save_workflow` / `run_workflow` / `list_workflows` | Save a multi-step chain once, run it by name from any chat. |
58
+ | `pixeldojo:upload` | Local file → 24h temp URL, for reference inputs. |
59
+ | `pixeldojo:from_url` | Product page URL → structured product info. Free. |
60
+ | `pixeldojo:campaign` / `campaign_status` | One product URL → hero + lifestyle set + optional video. |
61
+ | `pixeldojo:status` | Poll long-running jobs after a 30s sync handoff. |
62
+
63
+ Generation skills take a `model` field for whitelist-checked overrides. Pass
64
+ any apiId from the [API Platform catalog](https://pixeldojo.ai/api-platform).
51
65
 
52
66
  ## How long jobs work
53
67
 
54
- The four generation skills wait synchronously for up to 30 seconds. If the
68
+ Generation skills wait synchronously for up to 30 seconds. If the
55
69
  job is still running, they return `{ jobId, statusUrl }` and the LLM follows
56
70
  up by calling `pixeldojo:status` with the same `jobId`. Polling uses
57
71
  exponential backoff (1s → 2s → 4s → 8s, capped) to keep load low on long
package/dist/cli.cjs CHANGED
@@ -1147,7 +1147,7 @@ var init_library = __esm({
1147
1147
  };
1148
1148
  librarySkill = {
1149
1149
  name: "pixeldojo:library",
1150
- description: "Search your own generation history (API/MCP outputs + results kept in the web app). Returns asset URLs to reuse as reference inputs.",
1150
+ description: "Search your media library: saved My Media items (permanent) and recent API/MCP generations (expire after 24h), newest first. Returns asset URLs to reuse as reference inputs. Keep a result forever with pixeldojo:save.",
1151
1151
  inputZod: InputSchema12,
1152
1152
  inputJsonSchema: InputJsonSchema12,
1153
1153
  allowedModels: [],
@@ -1156,6 +1156,52 @@ var init_library = __esm({
1156
1156
  };
1157
1157
  }
1158
1158
  });
1159
+ async function run13(input, ctx) {
1160
+ const res = await ctx.client.saveMedia({
1161
+ url: input.url,
1162
+ prompt: input.prompt,
1163
+ tool_name: input.tool_name,
1164
+ modality: input.modality,
1165
+ job_id: input.job_id
1166
+ });
1167
+ return {
1168
+ kind: "text",
1169
+ text: `Saved to My Media (permanent): ${res.url}
1170
+ It will appear at https://pixeldojo.ai/my-images and in pixeldojo:library searches.`
1171
+ };
1172
+ }
1173
+ var InputSchema13, InputJsonSchema13, saveSkill;
1174
+ var init_save = __esm({
1175
+ "src/skills/save.ts"() {
1176
+ InputSchema13 = zod.z.object({
1177
+ url: zod.z.string().url().describe("The asset URL to save (image or video)."),
1178
+ prompt: zod.z.string().optional().describe("The prompt that produced it \u2014 makes it findable in the library later."),
1179
+ tool_name: zod.z.string().optional().describe("Tool/model slug that produced it."),
1180
+ modality: zod.z.enum(["image", "video", "audio"]).optional(),
1181
+ job_id: zod.z.string().optional().describe("The jobId that produced this asset, when known.")
1182
+ });
1183
+ InputJsonSchema13 = {
1184
+ type: "object",
1185
+ properties: {
1186
+ url: { type: "string", format: "uri" },
1187
+ prompt: { type: "string" },
1188
+ tool_name: { type: "string" },
1189
+ modality: { type: "string", enum: ["image", "video", "audio"] },
1190
+ job_id: { type: "string" }
1191
+ },
1192
+ required: ["url"]
1193
+ };
1194
+ saveSkill = {
1195
+ name: "pixeldojo:save",
1196
+ description: "Save a generated image or video into the user's My Media library permanently. Generation outputs otherwise expire after 24 hours \u2014 call this when the user wants to keep a result.",
1197
+ inputZod: InputSchema13,
1198
+ inputJsonSchema: InputJsonSchema13,
1199
+ allowedModels: [],
1200
+ defaultModel: "",
1201
+ run: run13
1202
+ };
1203
+ }
1204
+ });
1159
1205
  function substitutePlaceholders(args, inputs, prevUrl) {
1160
1206
  const missing = [];
1161
1207
  const fill = (value) => {
@@ -1350,6 +1396,7 @@ __export(skills_exports, {
1350
1396
  librarySkill: () => librarySkill,
1351
1397
  listWorkflowsSkill: () => listWorkflowsSkill,
1352
1398
  runWorkflowSkill: () => runWorkflowSkill,
1399
+ saveSkill: () => saveSkill,
1353
1400
  saveWorkflowSkill: () => saveWorkflowSkill,
1354
1401
  statusSkill: () => statusSkill,
1355
1402
  storyboardSkill: () => storyboardSkill,
@@ -1374,6 +1421,7 @@ var init_skills = __esm({
1374
1421
  init_upload();
1375
1422
  init_audio();
1376
1423
  init_library();
1424
+ init_save();
1377
1425
  init_workflows();
1378
1426
  ALL_SKILLS = [
1379
1427
  generateSkill,
@@ -1383,6 +1431,7 @@ var init_skills = __esm({
1383
1431
  upscaleSkill,
1384
1432
  audioSkill,
1385
1433
  librarySkill,
1434
+ saveSkill,
1386
1435
  saveWorkflowSkill,
1387
1436
  runWorkflowSkill,
1388
1437
  listWorkflowsSkill,
@@ -1610,11 +1659,19 @@ function printInit() {
1610
1659
  `# Same shape as above.`,
1611
1660
  ``,
1612
1661
  `# 3. Restart your agent. You'll see these tools:`,
1613
- `# pixeldojo:generate Any prompt \u2192 image or video.`,
1614
- `# pixeldojo:character Consistent characters across shots.`,
1615
- `# pixeldojo:storyboard Multi-shot scenes from one brief.`,
1616
- `# pixeldojo:upscale Enhance any image.`,
1617
- `# pixeldojo:status Poll long-running jobs.`,
1662
+ `# pixeldojo:generate Any prompt \u2192 image or video.`,
1663
+ `# pixeldojo:edit Change an image with a text instruction.`,
1664
+ `# pixeldojo:character Consistent characters across shots.`,
1665
+ `# pixeldojo:storyboard Multi-shot scenes from one brief.`,
1666
+ `# pixeldojo:upscale Enhance any image.`,
1667
+ `# pixeldojo:audio Voices + effects + music in one clip.`,
1668
+ `# pixeldojo:library Search your saved media + generations.`,
1669
+ `# pixeldojo:save Keep a result in My Media permanently.`,
1670
+ `# pixeldojo:*_workflow Save / run / list multi-step chains.`,
1671
+ `# pixeldojo:upload Local file \u2192 temp URL for references.`,
1672
+ `# pixeldojo:from_url Product URL \u2192 structured product info.`,
1673
+ `# pixeldojo:campaign* Product URL \u2192 full launch pack.`,
1674
+ `# pixeldojo:status Poll long-running jobs.`,
1618
1675
  ``
1619
1676
  ].join("\n")
1620
1677
  );