@wavespeed/mcp 1.2.10 → 1.2.12
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 +2 -2
- package/dist/lib/media-models.js +10 -1
- package/dist/lib/media-plan.js +9 -1
- package/dist/server.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,9 +34,9 @@ Built on the same design as the open-source [`@wavespeed/cli`](https://github.co
|
|
|
34
34
|
| `list_models` | Search the live catalog by text or modality type |
|
|
35
35
|
| `get_model_schema` | A model's real input schema (required, properties, defaults), with a link to the model's playground page |
|
|
36
36
|
| `run_model` | Submit + wait; rejects input keys the model doesn't accept; `@path` inputs upload automatically; returns output URLs |
|
|
37
|
-
| `generate_image` | Image from a prompt with the /chat image models (default Seedream 5
|
|
37
|
+
| `generate_image` | Image from a prompt with the /chat image models (default Seedream 5.5); reference images use the model's edit endpoint |
|
|
38
38
|
| `edit_image` | Edit, restyle or combine existing images with the same models |
|
|
39
|
-
| `generate_video` | Video from a prompt, a first/last frame or reference images/videos/audio, with the /chat video models (default Seedance 2.5); the mode (text, image, reference) is picked from the inputs |
|
|
39
|
+
| `generate_video` | Video from a prompt, a first/last frame or reference images/videos/audio, with the /chat video models (default Seedance 2.5 Flash); the mode (text, image, reference) is picked from the inputs |
|
|
40
40
|
| `edit_video` | Edit an existing video, optionally with reference images/audio |
|
|
41
41
|
| `extend_video` | Continue an existing video with new footage |
|
|
42
42
|
| `get_price` | Cost estimate for the inputs you pass (no charge), with a link to the model's playground page |
|
package/dist/lib/media-models.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The image and video models the dedicated generate/edit tools offer: the
|
|
2
2
|
// same list, in the same order, as the WaveSpeed /chat page (api-dashboard
|
|
3
|
-
// lib/media-models.ts, checked 2026-11-
|
|
3
|
+
// lib/media-models.ts, checked 2026-11-15). The first of each is the default.
|
|
4
4
|
// This is a vendored copy: when /chat changes its models, change this file and
|
|
5
5
|
// its test (src/lib/media-models.test.ts) with it. Capabilities mirror the
|
|
6
6
|
// endpoints' input schemas; the tools still fit every request to the live
|
|
@@ -14,6 +14,7 @@ const image = (id, label, base, generate, resolutions, aspectRatios, maxImages)
|
|
|
14
14
|
});
|
|
15
15
|
/** In menu order; the first is the default. */
|
|
16
16
|
export const IMAGE_MODELS = {
|
|
17
|
+
'seedream-5-5': image('seedream-5-5', 'Seedream 5.5', 'bytedance/seedream-v5.5', '', ['1k', '1.5k', '2k'], WIDE_RATIOS, 10),
|
|
17
18
|
'seedream-5-pro': image('seedream-5-pro', 'Seedream 5 Pro', 'bytedance/seedream-v5.0-pro', '', ['1k', '1.5k', '2k'], WIDE_RATIOS, 10),
|
|
18
19
|
'nano-banana-2.1': image('nano-banana-2.1', 'Nano Banana 2.1', 'google/nano-banana-2.1', 'text-to-image', ['1k', '2k', '4k'], NANO_BANANA_2_RATIOS, 14),
|
|
19
20
|
'nano-banana-2': image('nano-banana-2', 'Nano Banana 2', 'google/nano-banana-2', 'text-to-image', ['0.5k', '1k', '2k', '4k'], NANO_BANANA_2_RATIOS, 14),
|
|
@@ -38,6 +39,13 @@ const seedance = (id, label, base, turbo, v25) => ({
|
|
|
38
39
|
durations: v25 ? [4, 30] : [4, 15], aspectRatios: SEEDANCE_ASPECTS, audio: true,
|
|
39
40
|
maxRefs: v25 ? { images: 30, videos: 10, audios: 10 } : { images: 9, videos: 3, audios: 3 },
|
|
40
41
|
});
|
|
42
|
+
// Flash: 480p / 720p only, at most 10 images, 5 videos and 5 audios; no turbo tier and no extend endpoint.
|
|
43
|
+
const seedanceFlash = (id, label, base) => ({
|
|
44
|
+
id, label, family: 'seedance-2.5', base, turbo: false, modes: ['generate', 'edit'],
|
|
45
|
+
resolutions: ['480p', '720p'], defaultResolution: '720p',
|
|
46
|
+
durations: [4, 30], aspectRatios: SEEDANCE_ASPECTS, audio: true,
|
|
47
|
+
maxRefs: { images: 10, videos: 5, audios: 5 },
|
|
48
|
+
});
|
|
41
49
|
const wan = (id, label, base) => ({
|
|
42
50
|
id, label, family: 'wan-3.0', base, turbo: false, modes: ['generate', 'edit', 'extend'],
|
|
43
51
|
resolutions: ['480p', '720p', '1080p'], defaultResolution: '720p', durations: [2, 30],
|
|
@@ -45,6 +53,7 @@ const wan = (id, label, base) => ({
|
|
|
45
53
|
});
|
|
46
54
|
/** In menu order; the first is the default. */
|
|
47
55
|
export const VIDEO_MODELS = {
|
|
56
|
+
'seedance-2.5-flash': seedanceFlash('seedance-2.5-flash', 'Seedance 2.5 Flash', 'bytedance/seedance-2.5-flash'),
|
|
48
57
|
'seedance-2.5': seedance('seedance-2.5', 'Seedance 2.5', 'bytedance/seedance-2.5', false, true),
|
|
49
58
|
'seedance-2.5-turbo': seedance('seedance-2.5-turbo', 'Seedance 2.5 Turbo', 'bytedance/seedance-2.5', true, true),
|
|
50
59
|
'seedance-2.0': seedance('seedance-2.0', 'Seedance 2.0', 'bytedance/seedance-2.0', false, false),
|
package/dist/lib/media-plan.js
CHANGED
|
@@ -187,7 +187,15 @@ export async function planVideo(args, action, propsOf) {
|
|
|
187
187
|
const refAudios = args.reference_audios?.length ? args.reference_audios : undefined;
|
|
188
188
|
const pinned = args.model !== undefined && args.model !== '';
|
|
189
189
|
const first = videoModelKey(args.model);
|
|
190
|
-
|
|
190
|
+
// The default is the cheapest tier and takes the fewest inputs (Seedance 2.5 Flash: 480p / 720p, 10 images). When the
|
|
191
|
+
// caller asked for more than it offers, move on to the next model instead of trimming the request to fit.
|
|
192
|
+
const limits = VIDEO_MODELS[first];
|
|
193
|
+
const exceeds = (args.resolution != null && args.resolution !== '' && !limits.resolutions.includes(args.resolution)) ||
|
|
194
|
+
(args.reference_images?.length ?? 0) > limits.maxRefs.images ||
|
|
195
|
+
(args.reference_videos?.length ?? 0) > limits.maxRefs.videos ||
|
|
196
|
+
(args.reference_audios?.length ?? 0) > limits.maxRefs.audios;
|
|
197
|
+
const ordered = pinned ? [first] : [first, ...VIDEO_MODEL_KEYS.filter((k) => k !== first)];
|
|
198
|
+
const keys = !pinned && first === DEFAULT_VIDEO_MODEL && exceeds ? ordered.slice(1) : ordered;
|
|
191
199
|
const candidates = [];
|
|
192
200
|
for (const key of keys) {
|
|
193
201
|
// H3's native 768p tier is the counterpart of other models' 720p default.
|
package/dist/server.js
CHANGED
|
@@ -366,7 +366,7 @@ export function createServer() {
|
|
|
366
366
|
const IMAGE_RESOLUTIONS = ['0.5k', '1k', '1.5k', '2k', '4k'];
|
|
367
367
|
const imageShape = {
|
|
368
368
|
prompt: z.string().min(1).describe('Complete visual prompt: subject, composition, style, lighting, mood.'),
|
|
369
|
-
model: z.enum(IMAGE_MODEL_KEYS).optional().describe('Only when the user names a model; default is the first (Seedream 5
|
|
369
|
+
model: z.enum(IMAGE_MODEL_KEYS).optional().describe('Only when the user names a model; default is the first (Seedream 5.5).'),
|
|
370
370
|
aspect_ratio: z.string().optional().describe('e.g. 1:1, 16:9, 9:16, 4:3, 3:4, 21:9, 9:21. The closest ratio the model supports is used; a note says when. If omitted: text-to-image is 1:1; with input images it is determined automatically from the input image.'),
|
|
371
371
|
resolution: z
|
|
372
372
|
.enum(IMAGE_RESOLUTIONS)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavespeed/mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.12",
|
|
4
4
|
"description": "WaveSpeed MCP server — run any model on the live WaveSpeed catalog (image, video, audio, 3D) with schema introspection, local-file upload, and price quotes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|