@pixeldojo/mcp 0.13.0 → 0.14.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/dist/cli.cjs CHANGED
@@ -542,7 +542,7 @@ var init_generate = __esm({
542
542
  InputSchema = zod.z.object({
543
543
  prompt: zod.z.string().min(1).max(8e3).describe("Prompt describing what to generate."),
544
544
  model: zod.z.string().optional().describe(
545
- `Model apiId, e.g. "flux", "google-nano-banana", "veo-3.1-fast", "kling-video-v3-standard-text". Full catalog: https://pixeldojo.ai/api/v1/models; one model's fields: https://pixeldojo.ai/llm/{apiId}.txt. Omit for google-nano-banana, which makes still images only; name a video model to get a video.`
545
+ `Model apiId. Recommended: "seedream-5" (images, the default) or "xai-image"; "seedance-2-5" or "xai-video" for video (prompt only or a starting image); "wan-3-0-video" for video the others refuse. Use another model only when the user names one. Full catalog: https://pixeldojo.ai/api/v1/models; one model's fields: https://pixeldojo.ai/llm/{apiId}.txt. Omit for seedream-5, which makes still images only; name a video model to get a video.`
546
546
  ),
547
547
  preset: zod.z.string().optional().describe(
548
548
  "Preset slug that seeds the running model's settings; explicit fields and params override it. Each preset belongs to one model (browse them by model at https://pixeldojo.ai/presets), so set `model` to that preset's model: a slug the running model has no preset for is rejected with a 400 before any charge."
@@ -567,7 +567,7 @@ var init_generate = __esm({
567
567
  "Multiple absolute local file paths. Each is uploaded to PixelDojo (24h temp storage) and used as a reference, same rules as image_urls."
568
568
  )
569
569
  });
570
- DEFAULT_MODEL = "google-nano-banana";
570
+ DEFAULT_MODEL = "seedream-5";
571
571
  VIDEO_REFERENCE_MODEL = "seedance-2-reference";
572
572
  VIDEO_REFERENCE_SLOTS = {
573
573
  image: { name: "reference_images", isArray: true },
@@ -581,7 +581,7 @@ var init_generate = __esm({
581
581
  prompt: { type: "string", description: "Prompt describing what to generate." },
582
582
  model: {
583
583
  type: "string",
584
- description: `Model apiId, e.g. "flux", "google-nano-banana", "veo-3.1-fast", "kling-video-v3-standard-text". Full catalog: https://pixeldojo.ai/api/v1/models; one model's fields: https://pixeldojo.ai/llm/{apiId}.txt. Omit for google-nano-banana, which makes still images only; name a video model to get a video.`
584
+ description: `Model apiId. Recommended: "seedream-5" (images, the default) or "xai-image"; "seedance-2-5" or "xai-video" for video (prompt only or a starting image); "wan-3-0-video" for video the others refuse. Use another model only when the user names one. Full catalog: https://pixeldojo.ai/api/v1/models; one model's fields: https://pixeldojo.ai/llm/{apiId}.txt. Omit for seedream-5, which makes still images only; name a video model to get a video.`
585
585
  },
586
586
  preset: {
587
587
  type: "string",
@@ -629,8 +629,8 @@ var init_generate = __esm({
629
629
  };
630
630
  generateSkill = {
631
631
  name: "pixeldojo_generate",
632
- description: "Generate an image or video from a prompt with any model in the PixelDojo catalog. With no `model`, a text prompt runs on google-nano-banana, which makes still images only; for a video, name a video model such as veo-3.1-fast. References: `image_url`/`image_urls` for stills, `video_url` for a source clip, `image_path`/`image_paths` for absolute local files (uploaded to 24h temp storage first). A clip or an audio track URL with no `model` runs on seedance-2-reference; a named model that cannot read a clip is swapped for it and the result says so, while a named model with no audio input drops the track. Model-specific settings go in `params` alongside an explicit `model`. Returns asset URLs, or a jobId for pixeldojo_status when the job outlasts the 30s wait.",
633
- hostedDescription: "Generate an image or video from a prompt with any model in the PixelDojo catalog. With no `model`, a text prompt runs on google-nano-banana, which makes still images only; for a video, name a video model such as veo-3.1-fast. References: `image_url`/`image_urls` for stills and `video_url` for a source clip, all public http(s) URLs. A clip or an audio track URL with no `model` runs on seedance-2-reference; a named model that cannot read a clip is swapped for it and the result says so, while a named model with no audio input drops the track. Model-specific settings go in `params` alongside an explicit `model`. Returns asset URLs, or a jobId for pixeldojo_status when the job outlasts the 30s wait.",
632
+ description: "Generate an image or video from a prompt with any model in the PixelDojo catalog. With no `model`, a prompt runs on seedream-5, which makes still images only. For a video, name seedance-2-5 (best) or xai-video; both work from a prompt alone or a starting image. If a provider refuses the content, retry once on wan-3-0-video (video) or seedream-5 (images), the least-restricted models. Name another model only when the user asks for it. References: `image_url`/`image_urls` for stills, `video_url` for a source clip, `image_path`/`image_paths` for absolute local files (uploaded to 24h temp storage first). A clip or an audio track URL with no `model` runs on seedance-2-reference; a named model that cannot read a clip is swapped for it and the result says so, while a named model with no audio input drops the track. Model-specific settings go in `params` alongside an explicit `model`. Returns asset URLs, or a jobId for pixeldojo_status when the job outlasts the 30s wait.",
633
+ hostedDescription: "Generate an image or video from a prompt with any model in the PixelDojo catalog. With no `model`, a prompt runs on seedream-5, which makes still images only. For a video, name seedance-2-5 (best) or xai-video; both work from a prompt alone or a starting image. If a provider refuses the content, retry once on wan-3-0-video (video) or seedream-5 (images), the least-restricted models. Name another model only when the user asks for it. References: `image_url`/`image_urls` for stills and `video_url` for a source clip, all public http(s) URLs. A clip or an audio track URL with no `model` runs on seedance-2-reference; a named model that cannot read a clip is swapped for it and the result says so, while a named model with no audio input drops the track. Model-specific settings go in `params` alongside an explicit `model`. Returns asset URLs, or a jobId for pixeldojo_status when the job outlasts the 30s wait.",
634
634
  inputZod: InputSchema,
635
635
  inputJsonSchema: InputJsonSchema,
636
636
  allowedModels: null,
@@ -1180,7 +1180,7 @@ var init_upscale = __esm({
1180
1180
  scale_factor: zod.z.number().min(1).max(16).optional().describe(
1181
1181
  "Image models only. Magnific snaps to the nearest of 2/4/8/16 (default 2); creative-upscale accepts 1-10 (default 2); face-enhance accepts 1-8 (default 4)."
1182
1182
  ),
1183
- creativity: zod.z.number().min(0).max(1).optional().describe("Magnific only: 0 (preserve) \u2192 1 (creative). Defaults to 0."),
1183
+ creativity: zod.z.number().int().min(-10).max(10).optional().describe("Magnific only: integer -10 (preserve) \u2192 10 (creative). Defaults to 0."),
1184
1184
  video_duration: zod.z.number().positive().optional().describe("video-upscaler only, REQUIRED there: source clip length in seconds (its credit meter)."),
1185
1185
  target_resolution: zod.z.enum(VIDEO_RESOLUTIONS).optional().describe("video-upscaler only: target output resolution. Defaults to 1080p.")
1186
1186
  });
@@ -1209,10 +1209,10 @@ var init_upscale = __esm({
1209
1209
  description: "Image models only. magnific-upscaler snaps to the nearest of 2/4/8/16 (default 2); creative-upscale clamps to 1-10 (default 2); face-enhance clamps to 1-8 (default 4)."
1210
1210
  },
1211
1211
  creativity: {
1212
- type: "number",
1213
- minimum: 0,
1214
- maximum: 1,
1215
- description: "magnific-upscaler only: sent unchanged as its creativity setting (default 0 = preserve the source; higher invents more detail). This tool accepts 0-1."
1212
+ type: "integer",
1213
+ minimum: -10,
1214
+ maximum: 10,
1215
+ description: "magnific-upscaler only: sent unchanged as its creativity setting, an integer from -10 to 10 (default 0; lower preserves the source, higher invents more detail)."
1216
1216
  },
1217
1217
  video_duration: {
1218
1218
  type: "number",
@@ -1428,7 +1428,7 @@ async function plan(input, ctx) {
1428
1428
  `Planned "${film.title}" (film_id: ${film.id}) \u2014 ${film.scenes.length} scenes, ${total} shots, ${input.look}, ${input.aspect}.`,
1429
1429
  ...sceneLines,
1430
1430
  "",
1431
- `Nothing has been charged yet. Producing renders every shot (roughly 20-25 credits per shot at default engines, charged as each renders) plus a few credits for the soundtrack.`,
1431
+ `Nothing has been charged yet. Producing renders every shot (roughly 35-40 credits per 5-second shot at default engines, charged as each renders) plus a few credits for the soundtrack.`,
1432
1432
  `Review or edit at ${ctx.baseUrl}/film-studio/${film.id} \u2014 or call pixeldojo_film with {"film_id": "${film.id}", "action": "produce"} to start production.`
1433
1433
  ].join("\n")
1434
1434
  };
@@ -1717,7 +1717,7 @@ var init_ad = __esm({
1717
1717
  },
1718
1718
  product_name: {
1719
1719
  type: "string",
1720
- description: "Product name. Required with product_image_urls / product_image_paths when there is no product_url."
1720
+ description: "Product name. Required with product images when there is no product_url."
1721
1721
  },
1722
1722
  product_description: { type: "string", description: "Optional product description (no product_url case)." },
1723
1723
  product_image_urls: {
@@ -1789,6 +1789,7 @@ var init_ad = __esm({
1789
1789
  adSkill = {
1790
1790
  name: "pixeldojo_ad",
1791
1791
  description: "Marketing Studio: turn a product into a rendered video ad with voiceover. Requires `product_url` (name, description and images are extracted), or `product_name` plus product_image_urls / product_image_paths. Pick a `style` slug (default ugc-testimonial; full catalog at GET https://pixeldojo.ai/api/v1/marketing/presets), and optionally add presenter reference images, a location, a hook, and the exact spoken script. Returns the video URL, or a jobId to check with pixeldojo_status.",
1792
+ hostedDescription: "Marketing Studio: turn a product into a rendered video ad with voiceover. Requires `product_url` (name, description and images are extracted), or `product_name` plus product_image_urls (public http(s) URLs). Pick a `style` slug (default ugc-testimonial; full catalog at GET https://pixeldojo.ai/api/v1/marketing/presets), and optionally add presenter reference images, a location, a hook, and the exact spoken script. Returns the video URL, or a jobId to check with pixeldojo_status.",
1792
1793
  inputZod: InputSchema9,
1793
1794
  inputJsonSchema: InputJsonSchema9,
1794
1795
  // Composition skill — the server routes to the ad engine internally.
@@ -2549,7 +2550,7 @@ function makeRedactedLogger(target = console) {
2549
2550
  }
2550
2551
 
2551
2552
  // src/server.ts
2552
- var PACKAGE_VERSION = "0.13.0" ;
2553
+ var PACKAGE_VERSION = "0.14.0" ;
2553
2554
  var SERVER_INSTRUCTIONS = "PixelDojo generates images, video, audio and short films across 100+ models, billed in credits from the connected PixelDojo account. A job that runs past the 30-second wait returns a jobId to check later; check it rather than submitting again, since every new submission is charged. Generated asset URLs are deleted one hour after they are created, so download anything the user wants to keep. Finished films are the exception and stay in the account library.";
2554
2555
  function buildServer(options) {
2555
2556
  if (!options.apiKey) {