@runapi.ai/suno-mcp 0.1.1 → 0.1.3
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 +123 -25
- package/data/contract.json +123 -738
- package/dist/src/meta.d.ts +1 -1
- package/dist/src/meta.js +1 -1
- package/dist/src/server.js +2 -30
- package/dist/src/server.js.map +1 -1
- package/package.json +18 -4
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -1,40 +1,52 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">Suno MCP Server</h1>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Create Suno AI tasks through RunAPI — 6 endpoints, 6 models — then poll status and check pricing. One MCP server, one API key.</strong>
|
|
5
|
+
</p>
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<sub>Works with Claude Code, Codex, Cursor, Windsurf, VS Code, Roo Code, and any MCP-compatible host.</sub>
|
|
9
|
+
</p>
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- `check_pricing` — look up pricing for a model in this line.
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/@runapi.ai/suno-mcp"><img src="https://img.shields.io/npm/v/%40runapi.ai/suno-mcp?style=flat-square&color=blue" alt="npm version"></a>
|
|
13
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=flat-square" alt="Apache-2.0 license"></a>
|
|
14
|
+
<img src="https://img.shields.io/badge/Type-MCP_Server-blue?style=flat-square" alt="MCP Server">
|
|
15
|
+
<img src="https://img.shields.io/badge/Models-6-green?style=flat-square" alt="6 models">
|
|
16
|
+
</p>
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="#quick-start">Quick Start</a> |
|
|
20
|
+
<a href="#tools">Tools</a> |
|
|
21
|
+
<a href="#models">Models</a> |
|
|
22
|
+
<a href="#examples">Examples</a> |
|
|
23
|
+
<a href="#configuration">Configuration</a>
|
|
24
|
+
</p>
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
it to `~/.config/runapi/config.json`:
|
|
26
|
+
---
|
|
20
27
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
## What Is This?
|
|
29
|
+
|
|
30
|
+
`@runapi.ai/suno-mcp` is a focused MCP server for the **Suno** model line on RunAPI.
|
|
31
|
+
It lets an MCP-compatible assistant create Suno tasks, poll their status, and check current pricing — all through a single RunAPI API key.
|
|
32
|
+
|
|
33
|
+
`check_pricing` works without a key. Task creation and status polling require `RUNAPI_API_KEY`.
|
|
34
|
+
This package is a pure client; it does not run a local generation backend.
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
https://runapi.ai/pricing.
|
|
36
|
+
---
|
|
28
37
|
|
|
29
|
-
##
|
|
38
|
+
## Quick Start
|
|
30
39
|
|
|
31
|
-
|
|
40
|
+
Add it to Claude Code:
|
|
32
41
|
|
|
33
42
|
```bash
|
|
34
|
-
npx -y @runapi.ai/suno-mcp
|
|
43
|
+
claude mcp add suno -s user -- npx -y @runapi.ai/suno-mcp
|
|
35
44
|
```
|
|
36
45
|
|
|
37
|
-
|
|
46
|
+
- `-s user`: global, available in all of your projects.
|
|
47
|
+
- `-s project`: team-shared, written to `.mcp.json` in the current repo so it can be committed.
|
|
48
|
+
|
|
49
|
+
For other hosts, or for manual configuration, use this JSON:
|
|
38
50
|
|
|
39
51
|
```json
|
|
40
52
|
{
|
|
@@ -48,6 +60,92 @@ Add it to an MCP client (see `examples/` for per-client configs):
|
|
|
48
60
|
}
|
|
49
61
|
```
|
|
50
62
|
|
|
63
|
+
Create an API key at [runapi.ai](https://runapi.ai) and expose it as `RUNAPI_API_KEY`.
|
|
64
|
+
See `examples/` for ready-made config files for Claude, Cursor, Windsurf, VS Code, and Roo.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Tools
|
|
69
|
+
|
|
70
|
+
| Tool | Auth | Purpose |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| `cover_audio` | Yes | Create a Suno task (cover audio) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
73
|
+
| `create_mashup` | Yes | Create a Suno task (create mashup) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
74
|
+
| `extend_music` | Yes | Create a Suno task (extend music) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
75
|
+
| `generate_lyrics` | Yes | Create a Suno task (generate lyrics) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
76
|
+
| `text_to_music` | Yes | Create a Suno task (text to music) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
77
|
+
| `text_to_sound` | Yes | Create a Suno task (text to sound) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
|
|
78
|
+
| `get_task` | Yes | Fetch the current status and latest payload for an existing task. |
|
|
79
|
+
| `check_pricing` | No | Look up the current price for a Suno model and endpoint. |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Models
|
|
84
|
+
|
|
85
|
+
Suno covers 6 models across 6 endpoints. Each tool accepts the models listed for it:
|
|
86
|
+
|
|
87
|
+
| Tool | Models |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `cover_audio` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
|
|
90
|
+
| `create_mashup` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
|
|
91
|
+
| `extend_music` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
|
|
92
|
+
| `generate_lyrics` | _no model parameter_ |
|
|
93
|
+
| `text_to_music` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
|
|
94
|
+
| `text_to_sound` | `suno-v5`, `suno-v5.5` |
|
|
95
|
+
|
|
96
|
+
Call `check_pricing` for the current price of any model. Model availability can change between releases.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
Ask your assistant in natural language; it uses the tools to confirm pricing and run the task.
|
|
103
|
+
|
|
104
|
+
### Create a task
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
Run a Suno cover audio task with RunAPI.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The assistant calls `check_pricing` to confirm the cost, then `cover_audio`, and returns the task id, status, and output URLs.
|
|
111
|
+
|
|
112
|
+
### Submit without waiting
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
Create the task but don't wait for it to finish.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The assistant calls the create tool with `wait: false` and returns the task id. Check on it later with `get_task`.
|
|
119
|
+
|
|
120
|
+
### Check pricing
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
What does Suno cost?
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The assistant calls `check_pricing` and shows the current snapshot, or links to [runapi.ai/pricing](https://runapi.ai/pricing).
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Configuration
|
|
131
|
+
|
|
132
|
+
The server reads the API key in this order:
|
|
133
|
+
|
|
134
|
+
1. `RUNAPI_API_KEY` environment variable
|
|
135
|
+
2. `~/.config/runapi/config.json`
|
|
136
|
+
|
|
137
|
+
Example config file:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"apiKey": "your_runapi_key"
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Do not commit real API keys. Get one at [runapi.ai](https://runapi.ai); pricing is listed at [runapi.ai/pricing](https://runapi.ai/pricing).
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
51
149
|
## License
|
|
52
150
|
|
|
53
|
-
Apache
|
|
151
|
+
Licensed under the [Apache License, Version 2.0](LICENSE).
|
package/data/contract.json
CHANGED
|
@@ -19,6 +19,47 @@
|
|
|
19
19
|
"suno-v5",
|
|
20
20
|
"suno-v5.5"
|
|
21
21
|
],
|
|
22
|
+
"rules": [
|
|
23
|
+
{
|
|
24
|
+
"when": {
|
|
25
|
+
"vocal_mode": "auto_lyrics"
|
|
26
|
+
},
|
|
27
|
+
"required": [
|
|
28
|
+
"prompt"
|
|
29
|
+
],
|
|
30
|
+
"forbidden": [
|
|
31
|
+
"lyrics",
|
|
32
|
+
"style",
|
|
33
|
+
"title"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"when": {
|
|
38
|
+
"vocal_mode": "exact_lyrics"
|
|
39
|
+
},
|
|
40
|
+
"required": [
|
|
41
|
+
"lyrics",
|
|
42
|
+
"style",
|
|
43
|
+
"title"
|
|
44
|
+
],
|
|
45
|
+
"forbidden": [
|
|
46
|
+
"prompt"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"when": {
|
|
51
|
+
"vocal_mode": "instrumental"
|
|
52
|
+
},
|
|
53
|
+
"required": [
|
|
54
|
+
"style",
|
|
55
|
+
"title"
|
|
56
|
+
],
|
|
57
|
+
"forbidden": [
|
|
58
|
+
"prompt",
|
|
59
|
+
"lyrics"
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
],
|
|
22
63
|
"fields_by_model": {
|
|
23
64
|
"suno-v4": {
|
|
24
65
|
"model": {
|
|
@@ -26,47 +67,6 @@
|
|
|
26
67
|
"required": true,
|
|
27
68
|
"description": "Model slug."
|
|
28
69
|
},
|
|
29
|
-
"rules": [
|
|
30
|
-
{
|
|
31
|
-
"when": {
|
|
32
|
-
"vocal_mode": "auto_lyrics"
|
|
33
|
-
},
|
|
34
|
-
"required": [
|
|
35
|
-
"prompt"
|
|
36
|
-
],
|
|
37
|
-
"forbidden": [
|
|
38
|
-
"lyrics",
|
|
39
|
-
"style",
|
|
40
|
-
"title"
|
|
41
|
-
]
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"when": {
|
|
45
|
-
"vocal_mode": "exact_lyrics"
|
|
46
|
-
},
|
|
47
|
-
"required": [
|
|
48
|
-
"lyrics",
|
|
49
|
-
"style",
|
|
50
|
-
"title"
|
|
51
|
-
],
|
|
52
|
-
"forbidden": [
|
|
53
|
-
"prompt"
|
|
54
|
-
]
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"when": {
|
|
58
|
-
"vocal_mode": "instrumental"
|
|
59
|
-
},
|
|
60
|
-
"required": [
|
|
61
|
-
"style",
|
|
62
|
-
"title"
|
|
63
|
-
],
|
|
64
|
-
"forbidden": [
|
|
65
|
-
"prompt",
|
|
66
|
-
"lyrics"
|
|
67
|
-
]
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
70
|
"style": {
|
|
71
71
|
"type": "string",
|
|
72
72
|
"description": "Music style."
|
|
@@ -145,47 +145,6 @@
|
|
|
145
145
|
"required": true,
|
|
146
146
|
"description": "Model slug."
|
|
147
147
|
},
|
|
148
|
-
"rules": [
|
|
149
|
-
{
|
|
150
|
-
"when": {
|
|
151
|
-
"vocal_mode": "auto_lyrics"
|
|
152
|
-
},
|
|
153
|
-
"required": [
|
|
154
|
-
"prompt"
|
|
155
|
-
],
|
|
156
|
-
"forbidden": [
|
|
157
|
-
"lyrics",
|
|
158
|
-
"style",
|
|
159
|
-
"title"
|
|
160
|
-
]
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"when": {
|
|
164
|
-
"vocal_mode": "exact_lyrics"
|
|
165
|
-
},
|
|
166
|
-
"required": [
|
|
167
|
-
"lyrics",
|
|
168
|
-
"style",
|
|
169
|
-
"title"
|
|
170
|
-
],
|
|
171
|
-
"forbidden": [
|
|
172
|
-
"prompt"
|
|
173
|
-
]
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
"when": {
|
|
177
|
-
"vocal_mode": "instrumental"
|
|
178
|
-
},
|
|
179
|
-
"required": [
|
|
180
|
-
"style",
|
|
181
|
-
"title"
|
|
182
|
-
],
|
|
183
|
-
"forbidden": [
|
|
184
|
-
"prompt",
|
|
185
|
-
"lyrics"
|
|
186
|
-
]
|
|
187
|
-
}
|
|
188
|
-
],
|
|
189
148
|
"style": {
|
|
190
149
|
"type": "string",
|
|
191
150
|
"description": "Music style."
|
|
@@ -264,47 +223,6 @@
|
|
|
264
223
|
"required": true,
|
|
265
224
|
"description": "Model slug."
|
|
266
225
|
},
|
|
267
|
-
"rules": [
|
|
268
|
-
{
|
|
269
|
-
"when": {
|
|
270
|
-
"vocal_mode": "auto_lyrics"
|
|
271
|
-
},
|
|
272
|
-
"required": [
|
|
273
|
-
"prompt"
|
|
274
|
-
],
|
|
275
|
-
"forbidden": [
|
|
276
|
-
"lyrics",
|
|
277
|
-
"style",
|
|
278
|
-
"title"
|
|
279
|
-
]
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
"when": {
|
|
283
|
-
"vocal_mode": "exact_lyrics"
|
|
284
|
-
},
|
|
285
|
-
"required": [
|
|
286
|
-
"lyrics",
|
|
287
|
-
"style",
|
|
288
|
-
"title"
|
|
289
|
-
],
|
|
290
|
-
"forbidden": [
|
|
291
|
-
"prompt"
|
|
292
|
-
]
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
"when": {
|
|
296
|
-
"vocal_mode": "instrumental"
|
|
297
|
-
},
|
|
298
|
-
"required": [
|
|
299
|
-
"style",
|
|
300
|
-
"title"
|
|
301
|
-
],
|
|
302
|
-
"forbidden": [
|
|
303
|
-
"prompt",
|
|
304
|
-
"lyrics"
|
|
305
|
-
]
|
|
306
|
-
}
|
|
307
|
-
],
|
|
308
226
|
"style": {
|
|
309
227
|
"type": "string",
|
|
310
228
|
"description": "Music style."
|
|
@@ -383,47 +301,6 @@
|
|
|
383
301
|
"required": true,
|
|
384
302
|
"description": "Model slug."
|
|
385
303
|
},
|
|
386
|
-
"rules": [
|
|
387
|
-
{
|
|
388
|
-
"when": {
|
|
389
|
-
"vocal_mode": "auto_lyrics"
|
|
390
|
-
},
|
|
391
|
-
"required": [
|
|
392
|
-
"prompt"
|
|
393
|
-
],
|
|
394
|
-
"forbidden": [
|
|
395
|
-
"lyrics",
|
|
396
|
-
"style",
|
|
397
|
-
"title"
|
|
398
|
-
]
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
"when": {
|
|
402
|
-
"vocal_mode": "exact_lyrics"
|
|
403
|
-
},
|
|
404
|
-
"required": [
|
|
405
|
-
"lyrics",
|
|
406
|
-
"style",
|
|
407
|
-
"title"
|
|
408
|
-
],
|
|
409
|
-
"forbidden": [
|
|
410
|
-
"prompt"
|
|
411
|
-
]
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
"when": {
|
|
415
|
-
"vocal_mode": "instrumental"
|
|
416
|
-
},
|
|
417
|
-
"required": [
|
|
418
|
-
"style",
|
|
419
|
-
"title"
|
|
420
|
-
],
|
|
421
|
-
"forbidden": [
|
|
422
|
-
"prompt",
|
|
423
|
-
"lyrics"
|
|
424
|
-
]
|
|
425
|
-
}
|
|
426
|
-
],
|
|
427
304
|
"style": {
|
|
428
305
|
"type": "string",
|
|
429
306
|
"description": "Music style."
|
|
@@ -502,47 +379,6 @@
|
|
|
502
379
|
"required": true,
|
|
503
380
|
"description": "Model slug."
|
|
504
381
|
},
|
|
505
|
-
"rules": [
|
|
506
|
-
{
|
|
507
|
-
"when": {
|
|
508
|
-
"vocal_mode": "auto_lyrics"
|
|
509
|
-
},
|
|
510
|
-
"required": [
|
|
511
|
-
"prompt"
|
|
512
|
-
],
|
|
513
|
-
"forbidden": [
|
|
514
|
-
"lyrics",
|
|
515
|
-
"style",
|
|
516
|
-
"title"
|
|
517
|
-
]
|
|
518
|
-
},
|
|
519
|
-
{
|
|
520
|
-
"when": {
|
|
521
|
-
"vocal_mode": "exact_lyrics"
|
|
522
|
-
},
|
|
523
|
-
"required": [
|
|
524
|
-
"lyrics",
|
|
525
|
-
"style",
|
|
526
|
-
"title"
|
|
527
|
-
],
|
|
528
|
-
"forbidden": [
|
|
529
|
-
"prompt"
|
|
530
|
-
]
|
|
531
|
-
},
|
|
532
|
-
{
|
|
533
|
-
"when": {
|
|
534
|
-
"vocal_mode": "instrumental"
|
|
535
|
-
},
|
|
536
|
-
"required": [
|
|
537
|
-
"style",
|
|
538
|
-
"title"
|
|
539
|
-
],
|
|
540
|
-
"forbidden": [
|
|
541
|
-
"prompt",
|
|
542
|
-
"lyrics"
|
|
543
|
-
]
|
|
544
|
-
}
|
|
545
|
-
],
|
|
546
382
|
"style": {
|
|
547
383
|
"type": "string",
|
|
548
384
|
"description": "Music style."
|
|
@@ -621,47 +457,6 @@
|
|
|
621
457
|
"required": true,
|
|
622
458
|
"description": "Model slug."
|
|
623
459
|
},
|
|
624
|
-
"rules": [
|
|
625
|
-
{
|
|
626
|
-
"when": {
|
|
627
|
-
"vocal_mode": "auto_lyrics"
|
|
628
|
-
},
|
|
629
|
-
"required": [
|
|
630
|
-
"prompt"
|
|
631
|
-
],
|
|
632
|
-
"forbidden": [
|
|
633
|
-
"lyrics",
|
|
634
|
-
"style",
|
|
635
|
-
"title"
|
|
636
|
-
]
|
|
637
|
-
},
|
|
638
|
-
{
|
|
639
|
-
"when": {
|
|
640
|
-
"vocal_mode": "exact_lyrics"
|
|
641
|
-
},
|
|
642
|
-
"required": [
|
|
643
|
-
"lyrics",
|
|
644
|
-
"style",
|
|
645
|
-
"title"
|
|
646
|
-
],
|
|
647
|
-
"forbidden": [
|
|
648
|
-
"prompt"
|
|
649
|
-
]
|
|
650
|
-
},
|
|
651
|
-
{
|
|
652
|
-
"when": {
|
|
653
|
-
"vocal_mode": "instrumental"
|
|
654
|
-
},
|
|
655
|
-
"required": [
|
|
656
|
-
"style",
|
|
657
|
-
"title"
|
|
658
|
-
],
|
|
659
|
-
"forbidden": [
|
|
660
|
-
"prompt",
|
|
661
|
-
"lyrics"
|
|
662
|
-
]
|
|
663
|
-
}
|
|
664
|
-
],
|
|
665
460
|
"style": {
|
|
666
461
|
"type": "string",
|
|
667
462
|
"description": "Music style."
|
|
@@ -747,6 +542,47 @@
|
|
|
747
542
|
"suno-v5",
|
|
748
543
|
"suno-v5.5"
|
|
749
544
|
],
|
|
545
|
+
"rules": [
|
|
546
|
+
{
|
|
547
|
+
"when": {
|
|
548
|
+
"vocal_mode": "auto_lyrics"
|
|
549
|
+
},
|
|
550
|
+
"required": [
|
|
551
|
+
"prompt"
|
|
552
|
+
],
|
|
553
|
+
"forbidden": [
|
|
554
|
+
"lyrics",
|
|
555
|
+
"style",
|
|
556
|
+
"title"
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"when": {
|
|
561
|
+
"vocal_mode": "exact_lyrics"
|
|
562
|
+
},
|
|
563
|
+
"required": [
|
|
564
|
+
"lyrics",
|
|
565
|
+
"style",
|
|
566
|
+
"title"
|
|
567
|
+
],
|
|
568
|
+
"forbidden": [
|
|
569
|
+
"prompt"
|
|
570
|
+
]
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"when": {
|
|
574
|
+
"vocal_mode": "instrumental"
|
|
575
|
+
},
|
|
576
|
+
"required": [
|
|
577
|
+
"style",
|
|
578
|
+
"title"
|
|
579
|
+
],
|
|
580
|
+
"forbidden": [
|
|
581
|
+
"prompt",
|
|
582
|
+
"lyrics"
|
|
583
|
+
]
|
|
584
|
+
}
|
|
585
|
+
],
|
|
750
586
|
"fields_by_model": {
|
|
751
587
|
"suno-v4": {
|
|
752
588
|
"model": {
|
|
@@ -754,47 +590,6 @@
|
|
|
754
590
|
"required": true,
|
|
755
591
|
"description": "Model slug."
|
|
756
592
|
},
|
|
757
|
-
"rules": [
|
|
758
|
-
{
|
|
759
|
-
"when": {
|
|
760
|
-
"vocal_mode": "auto_lyrics"
|
|
761
|
-
},
|
|
762
|
-
"required": [
|
|
763
|
-
"prompt"
|
|
764
|
-
],
|
|
765
|
-
"forbidden": [
|
|
766
|
-
"lyrics",
|
|
767
|
-
"style",
|
|
768
|
-
"title"
|
|
769
|
-
]
|
|
770
|
-
},
|
|
771
|
-
{
|
|
772
|
-
"when": {
|
|
773
|
-
"vocal_mode": "exact_lyrics"
|
|
774
|
-
},
|
|
775
|
-
"required": [
|
|
776
|
-
"lyrics",
|
|
777
|
-
"style",
|
|
778
|
-
"title"
|
|
779
|
-
],
|
|
780
|
-
"forbidden": [
|
|
781
|
-
"prompt"
|
|
782
|
-
]
|
|
783
|
-
},
|
|
784
|
-
{
|
|
785
|
-
"when": {
|
|
786
|
-
"vocal_mode": "instrumental"
|
|
787
|
-
},
|
|
788
|
-
"required": [
|
|
789
|
-
"style",
|
|
790
|
-
"title"
|
|
791
|
-
],
|
|
792
|
-
"forbidden": [
|
|
793
|
-
"prompt",
|
|
794
|
-
"lyrics"
|
|
795
|
-
]
|
|
796
|
-
}
|
|
797
|
-
],
|
|
798
593
|
"style": {
|
|
799
594
|
"type": "string",
|
|
800
595
|
"description": "Music style."
|
|
@@ -869,47 +664,6 @@
|
|
|
869
664
|
"required": true,
|
|
870
665
|
"description": "Model slug."
|
|
871
666
|
},
|
|
872
|
-
"rules": [
|
|
873
|
-
{
|
|
874
|
-
"when": {
|
|
875
|
-
"vocal_mode": "auto_lyrics"
|
|
876
|
-
},
|
|
877
|
-
"required": [
|
|
878
|
-
"prompt"
|
|
879
|
-
],
|
|
880
|
-
"forbidden": [
|
|
881
|
-
"lyrics",
|
|
882
|
-
"style",
|
|
883
|
-
"title"
|
|
884
|
-
]
|
|
885
|
-
},
|
|
886
|
-
{
|
|
887
|
-
"when": {
|
|
888
|
-
"vocal_mode": "exact_lyrics"
|
|
889
|
-
},
|
|
890
|
-
"required": [
|
|
891
|
-
"lyrics",
|
|
892
|
-
"style",
|
|
893
|
-
"title"
|
|
894
|
-
],
|
|
895
|
-
"forbidden": [
|
|
896
|
-
"prompt"
|
|
897
|
-
]
|
|
898
|
-
},
|
|
899
|
-
{
|
|
900
|
-
"when": {
|
|
901
|
-
"vocal_mode": "instrumental"
|
|
902
|
-
},
|
|
903
|
-
"required": [
|
|
904
|
-
"style",
|
|
905
|
-
"title"
|
|
906
|
-
],
|
|
907
|
-
"forbidden": [
|
|
908
|
-
"prompt",
|
|
909
|
-
"lyrics"
|
|
910
|
-
]
|
|
911
|
-
}
|
|
912
|
-
],
|
|
913
667
|
"style": {
|
|
914
668
|
"type": "string",
|
|
915
669
|
"description": "Music style."
|
|
@@ -984,47 +738,6 @@
|
|
|
984
738
|
"required": true,
|
|
985
739
|
"description": "Model slug."
|
|
986
740
|
},
|
|
987
|
-
"rules": [
|
|
988
|
-
{
|
|
989
|
-
"when": {
|
|
990
|
-
"vocal_mode": "auto_lyrics"
|
|
991
|
-
},
|
|
992
|
-
"required": [
|
|
993
|
-
"prompt"
|
|
994
|
-
],
|
|
995
|
-
"forbidden": [
|
|
996
|
-
"lyrics",
|
|
997
|
-
"style",
|
|
998
|
-
"title"
|
|
999
|
-
]
|
|
1000
|
-
},
|
|
1001
|
-
{
|
|
1002
|
-
"when": {
|
|
1003
|
-
"vocal_mode": "exact_lyrics"
|
|
1004
|
-
},
|
|
1005
|
-
"required": [
|
|
1006
|
-
"lyrics",
|
|
1007
|
-
"style",
|
|
1008
|
-
"title"
|
|
1009
|
-
],
|
|
1010
|
-
"forbidden": [
|
|
1011
|
-
"prompt"
|
|
1012
|
-
]
|
|
1013
|
-
},
|
|
1014
|
-
{
|
|
1015
|
-
"when": {
|
|
1016
|
-
"vocal_mode": "instrumental"
|
|
1017
|
-
},
|
|
1018
|
-
"required": [
|
|
1019
|
-
"style",
|
|
1020
|
-
"title"
|
|
1021
|
-
],
|
|
1022
|
-
"forbidden": [
|
|
1023
|
-
"prompt",
|
|
1024
|
-
"lyrics"
|
|
1025
|
-
]
|
|
1026
|
-
}
|
|
1027
|
-
],
|
|
1028
741
|
"style": {
|
|
1029
742
|
"type": "string",
|
|
1030
743
|
"description": "Music style."
|
|
@@ -1099,47 +812,6 @@
|
|
|
1099
812
|
"required": true,
|
|
1100
813
|
"description": "Model slug."
|
|
1101
814
|
},
|
|
1102
|
-
"rules": [
|
|
1103
|
-
{
|
|
1104
|
-
"when": {
|
|
1105
|
-
"vocal_mode": "auto_lyrics"
|
|
1106
|
-
},
|
|
1107
|
-
"required": [
|
|
1108
|
-
"prompt"
|
|
1109
|
-
],
|
|
1110
|
-
"forbidden": [
|
|
1111
|
-
"lyrics",
|
|
1112
|
-
"style",
|
|
1113
|
-
"title"
|
|
1114
|
-
]
|
|
1115
|
-
},
|
|
1116
|
-
{
|
|
1117
|
-
"when": {
|
|
1118
|
-
"vocal_mode": "exact_lyrics"
|
|
1119
|
-
},
|
|
1120
|
-
"required": [
|
|
1121
|
-
"lyrics",
|
|
1122
|
-
"style",
|
|
1123
|
-
"title"
|
|
1124
|
-
],
|
|
1125
|
-
"forbidden": [
|
|
1126
|
-
"prompt"
|
|
1127
|
-
]
|
|
1128
|
-
},
|
|
1129
|
-
{
|
|
1130
|
-
"when": {
|
|
1131
|
-
"vocal_mode": "instrumental"
|
|
1132
|
-
},
|
|
1133
|
-
"required": [
|
|
1134
|
-
"style",
|
|
1135
|
-
"title"
|
|
1136
|
-
],
|
|
1137
|
-
"forbidden": [
|
|
1138
|
-
"prompt",
|
|
1139
|
-
"lyrics"
|
|
1140
|
-
]
|
|
1141
|
-
}
|
|
1142
|
-
],
|
|
1143
815
|
"style": {
|
|
1144
816
|
"type": "string",
|
|
1145
817
|
"description": "Music style."
|
|
@@ -1214,47 +886,6 @@
|
|
|
1214
886
|
"required": true,
|
|
1215
887
|
"description": "Model slug."
|
|
1216
888
|
},
|
|
1217
|
-
"rules": [
|
|
1218
|
-
{
|
|
1219
|
-
"when": {
|
|
1220
|
-
"vocal_mode": "auto_lyrics"
|
|
1221
|
-
},
|
|
1222
|
-
"required": [
|
|
1223
|
-
"prompt"
|
|
1224
|
-
],
|
|
1225
|
-
"forbidden": [
|
|
1226
|
-
"lyrics",
|
|
1227
|
-
"style",
|
|
1228
|
-
"title"
|
|
1229
|
-
]
|
|
1230
|
-
},
|
|
1231
|
-
{
|
|
1232
|
-
"when": {
|
|
1233
|
-
"vocal_mode": "exact_lyrics"
|
|
1234
|
-
},
|
|
1235
|
-
"required": [
|
|
1236
|
-
"lyrics",
|
|
1237
|
-
"style",
|
|
1238
|
-
"title"
|
|
1239
|
-
],
|
|
1240
|
-
"forbidden": [
|
|
1241
|
-
"prompt"
|
|
1242
|
-
]
|
|
1243
|
-
},
|
|
1244
|
-
{
|
|
1245
|
-
"when": {
|
|
1246
|
-
"vocal_mode": "instrumental"
|
|
1247
|
-
},
|
|
1248
|
-
"required": [
|
|
1249
|
-
"style",
|
|
1250
|
-
"title"
|
|
1251
|
-
],
|
|
1252
|
-
"forbidden": [
|
|
1253
|
-
"prompt",
|
|
1254
|
-
"lyrics"
|
|
1255
|
-
]
|
|
1256
|
-
}
|
|
1257
|
-
],
|
|
1258
889
|
"style": {
|
|
1259
890
|
"type": "string",
|
|
1260
891
|
"description": "Music style."
|
|
@@ -1329,47 +960,6 @@
|
|
|
1329
960
|
"required": true,
|
|
1330
961
|
"description": "Model slug."
|
|
1331
962
|
},
|
|
1332
|
-
"rules": [
|
|
1333
|
-
{
|
|
1334
|
-
"when": {
|
|
1335
|
-
"vocal_mode": "auto_lyrics"
|
|
1336
|
-
},
|
|
1337
|
-
"required": [
|
|
1338
|
-
"prompt"
|
|
1339
|
-
],
|
|
1340
|
-
"forbidden": [
|
|
1341
|
-
"lyrics",
|
|
1342
|
-
"style",
|
|
1343
|
-
"title"
|
|
1344
|
-
]
|
|
1345
|
-
},
|
|
1346
|
-
{
|
|
1347
|
-
"when": {
|
|
1348
|
-
"vocal_mode": "exact_lyrics"
|
|
1349
|
-
},
|
|
1350
|
-
"required": [
|
|
1351
|
-
"lyrics",
|
|
1352
|
-
"style",
|
|
1353
|
-
"title"
|
|
1354
|
-
],
|
|
1355
|
-
"forbidden": [
|
|
1356
|
-
"prompt"
|
|
1357
|
-
]
|
|
1358
|
-
},
|
|
1359
|
-
{
|
|
1360
|
-
"when": {
|
|
1361
|
-
"vocal_mode": "instrumental"
|
|
1362
|
-
},
|
|
1363
|
-
"required": [
|
|
1364
|
-
"style",
|
|
1365
|
-
"title"
|
|
1366
|
-
],
|
|
1367
|
-
"forbidden": [
|
|
1368
|
-
"prompt",
|
|
1369
|
-
"lyrics"
|
|
1370
|
-
]
|
|
1371
|
-
}
|
|
1372
|
-
],
|
|
1373
963
|
"style": {
|
|
1374
964
|
"type": "string",
|
|
1375
965
|
"description": "Music style."
|
|
@@ -2052,6 +1642,47 @@
|
|
|
2052
1642
|
"suno-v5",
|
|
2053
1643
|
"suno-v5.5"
|
|
2054
1644
|
],
|
|
1645
|
+
"rules": [
|
|
1646
|
+
{
|
|
1647
|
+
"when": {
|
|
1648
|
+
"vocal_mode": "auto_lyrics"
|
|
1649
|
+
},
|
|
1650
|
+
"required": [
|
|
1651
|
+
"prompt"
|
|
1652
|
+
],
|
|
1653
|
+
"forbidden": [
|
|
1654
|
+
"lyrics",
|
|
1655
|
+
"style",
|
|
1656
|
+
"title"
|
|
1657
|
+
]
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
"when": {
|
|
1661
|
+
"vocal_mode": "exact_lyrics"
|
|
1662
|
+
},
|
|
1663
|
+
"required": [
|
|
1664
|
+
"lyrics",
|
|
1665
|
+
"style",
|
|
1666
|
+
"title"
|
|
1667
|
+
],
|
|
1668
|
+
"forbidden": [
|
|
1669
|
+
"prompt"
|
|
1670
|
+
]
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
"when": {
|
|
1674
|
+
"vocal_mode": "instrumental"
|
|
1675
|
+
},
|
|
1676
|
+
"required": [
|
|
1677
|
+
"style",
|
|
1678
|
+
"title"
|
|
1679
|
+
],
|
|
1680
|
+
"forbidden": [
|
|
1681
|
+
"prompt",
|
|
1682
|
+
"lyrics"
|
|
1683
|
+
]
|
|
1684
|
+
}
|
|
1685
|
+
],
|
|
2055
1686
|
"fields_by_model": {
|
|
2056
1687
|
"suno-v4": {
|
|
2057
1688
|
"model": {
|
|
@@ -2059,47 +1690,6 @@
|
|
|
2059
1690
|
"required": true,
|
|
2060
1691
|
"description": "Model slug."
|
|
2061
1692
|
},
|
|
2062
|
-
"rules": [
|
|
2063
|
-
{
|
|
2064
|
-
"when": {
|
|
2065
|
-
"vocal_mode": "auto_lyrics"
|
|
2066
|
-
},
|
|
2067
|
-
"required": [
|
|
2068
|
-
"prompt"
|
|
2069
|
-
],
|
|
2070
|
-
"forbidden": [
|
|
2071
|
-
"lyrics",
|
|
2072
|
-
"style",
|
|
2073
|
-
"title"
|
|
2074
|
-
]
|
|
2075
|
-
},
|
|
2076
|
-
{
|
|
2077
|
-
"when": {
|
|
2078
|
-
"vocal_mode": "exact_lyrics"
|
|
2079
|
-
},
|
|
2080
|
-
"required": [
|
|
2081
|
-
"lyrics",
|
|
2082
|
-
"style",
|
|
2083
|
-
"title"
|
|
2084
|
-
],
|
|
2085
|
-
"forbidden": [
|
|
2086
|
-
"prompt"
|
|
2087
|
-
]
|
|
2088
|
-
},
|
|
2089
|
-
{
|
|
2090
|
-
"when": {
|
|
2091
|
-
"vocal_mode": "instrumental"
|
|
2092
|
-
},
|
|
2093
|
-
"required": [
|
|
2094
|
-
"style",
|
|
2095
|
-
"title"
|
|
2096
|
-
],
|
|
2097
|
-
"forbidden": [
|
|
2098
|
-
"prompt",
|
|
2099
|
-
"lyrics"
|
|
2100
|
-
]
|
|
2101
|
-
}
|
|
2102
|
-
],
|
|
2103
1693
|
"style": {
|
|
2104
1694
|
"type": "string",
|
|
2105
1695
|
"description": "Music style."
|
|
@@ -2181,47 +1771,6 @@
|
|
|
2181
1771
|
"required": true,
|
|
2182
1772
|
"description": "Model slug."
|
|
2183
1773
|
},
|
|
2184
|
-
"rules": [
|
|
2185
|
-
{
|
|
2186
|
-
"when": {
|
|
2187
|
-
"vocal_mode": "auto_lyrics"
|
|
2188
|
-
},
|
|
2189
|
-
"required": [
|
|
2190
|
-
"prompt"
|
|
2191
|
-
],
|
|
2192
|
-
"forbidden": [
|
|
2193
|
-
"lyrics",
|
|
2194
|
-
"style",
|
|
2195
|
-
"title"
|
|
2196
|
-
]
|
|
2197
|
-
},
|
|
2198
|
-
{
|
|
2199
|
-
"when": {
|
|
2200
|
-
"vocal_mode": "exact_lyrics"
|
|
2201
|
-
},
|
|
2202
|
-
"required": [
|
|
2203
|
-
"lyrics",
|
|
2204
|
-
"style",
|
|
2205
|
-
"title"
|
|
2206
|
-
],
|
|
2207
|
-
"forbidden": [
|
|
2208
|
-
"prompt"
|
|
2209
|
-
]
|
|
2210
|
-
},
|
|
2211
|
-
{
|
|
2212
|
-
"when": {
|
|
2213
|
-
"vocal_mode": "instrumental"
|
|
2214
|
-
},
|
|
2215
|
-
"required": [
|
|
2216
|
-
"style",
|
|
2217
|
-
"title"
|
|
2218
|
-
],
|
|
2219
|
-
"forbidden": [
|
|
2220
|
-
"prompt",
|
|
2221
|
-
"lyrics"
|
|
2222
|
-
]
|
|
2223
|
-
}
|
|
2224
|
-
],
|
|
2225
1774
|
"style": {
|
|
2226
1775
|
"type": "string",
|
|
2227
1776
|
"description": "Music style."
|
|
@@ -2303,47 +1852,6 @@
|
|
|
2303
1852
|
"required": true,
|
|
2304
1853
|
"description": "Model slug."
|
|
2305
1854
|
},
|
|
2306
|
-
"rules": [
|
|
2307
|
-
{
|
|
2308
|
-
"when": {
|
|
2309
|
-
"vocal_mode": "auto_lyrics"
|
|
2310
|
-
},
|
|
2311
|
-
"required": [
|
|
2312
|
-
"prompt"
|
|
2313
|
-
],
|
|
2314
|
-
"forbidden": [
|
|
2315
|
-
"lyrics",
|
|
2316
|
-
"style",
|
|
2317
|
-
"title"
|
|
2318
|
-
]
|
|
2319
|
-
},
|
|
2320
|
-
{
|
|
2321
|
-
"when": {
|
|
2322
|
-
"vocal_mode": "exact_lyrics"
|
|
2323
|
-
},
|
|
2324
|
-
"required": [
|
|
2325
|
-
"lyrics",
|
|
2326
|
-
"style",
|
|
2327
|
-
"title"
|
|
2328
|
-
],
|
|
2329
|
-
"forbidden": [
|
|
2330
|
-
"prompt"
|
|
2331
|
-
]
|
|
2332
|
-
},
|
|
2333
|
-
{
|
|
2334
|
-
"when": {
|
|
2335
|
-
"vocal_mode": "instrumental"
|
|
2336
|
-
},
|
|
2337
|
-
"required": [
|
|
2338
|
-
"style",
|
|
2339
|
-
"title"
|
|
2340
|
-
],
|
|
2341
|
-
"forbidden": [
|
|
2342
|
-
"prompt",
|
|
2343
|
-
"lyrics"
|
|
2344
|
-
]
|
|
2345
|
-
}
|
|
2346
|
-
],
|
|
2347
1855
|
"style": {
|
|
2348
1856
|
"type": "string",
|
|
2349
1857
|
"description": "Music style."
|
|
@@ -2425,47 +1933,6 @@
|
|
|
2425
1933
|
"required": true,
|
|
2426
1934
|
"description": "Model slug."
|
|
2427
1935
|
},
|
|
2428
|
-
"rules": [
|
|
2429
|
-
{
|
|
2430
|
-
"when": {
|
|
2431
|
-
"vocal_mode": "auto_lyrics"
|
|
2432
|
-
},
|
|
2433
|
-
"required": [
|
|
2434
|
-
"prompt"
|
|
2435
|
-
],
|
|
2436
|
-
"forbidden": [
|
|
2437
|
-
"lyrics",
|
|
2438
|
-
"style",
|
|
2439
|
-
"title"
|
|
2440
|
-
]
|
|
2441
|
-
},
|
|
2442
|
-
{
|
|
2443
|
-
"when": {
|
|
2444
|
-
"vocal_mode": "exact_lyrics"
|
|
2445
|
-
},
|
|
2446
|
-
"required": [
|
|
2447
|
-
"lyrics",
|
|
2448
|
-
"style",
|
|
2449
|
-
"title"
|
|
2450
|
-
],
|
|
2451
|
-
"forbidden": [
|
|
2452
|
-
"prompt"
|
|
2453
|
-
]
|
|
2454
|
-
},
|
|
2455
|
-
{
|
|
2456
|
-
"when": {
|
|
2457
|
-
"vocal_mode": "instrumental"
|
|
2458
|
-
},
|
|
2459
|
-
"required": [
|
|
2460
|
-
"style",
|
|
2461
|
-
"title"
|
|
2462
|
-
],
|
|
2463
|
-
"forbidden": [
|
|
2464
|
-
"prompt",
|
|
2465
|
-
"lyrics"
|
|
2466
|
-
]
|
|
2467
|
-
}
|
|
2468
|
-
],
|
|
2469
1936
|
"style": {
|
|
2470
1937
|
"type": "string",
|
|
2471
1938
|
"description": "Music style."
|
|
@@ -2547,47 +2014,6 @@
|
|
|
2547
2014
|
"required": true,
|
|
2548
2015
|
"description": "Model slug."
|
|
2549
2016
|
},
|
|
2550
|
-
"rules": [
|
|
2551
|
-
{
|
|
2552
|
-
"when": {
|
|
2553
|
-
"vocal_mode": "auto_lyrics"
|
|
2554
|
-
},
|
|
2555
|
-
"required": [
|
|
2556
|
-
"prompt"
|
|
2557
|
-
],
|
|
2558
|
-
"forbidden": [
|
|
2559
|
-
"lyrics",
|
|
2560
|
-
"style",
|
|
2561
|
-
"title"
|
|
2562
|
-
]
|
|
2563
|
-
},
|
|
2564
|
-
{
|
|
2565
|
-
"when": {
|
|
2566
|
-
"vocal_mode": "exact_lyrics"
|
|
2567
|
-
},
|
|
2568
|
-
"required": [
|
|
2569
|
-
"lyrics",
|
|
2570
|
-
"style",
|
|
2571
|
-
"title"
|
|
2572
|
-
],
|
|
2573
|
-
"forbidden": [
|
|
2574
|
-
"prompt"
|
|
2575
|
-
]
|
|
2576
|
-
},
|
|
2577
|
-
{
|
|
2578
|
-
"when": {
|
|
2579
|
-
"vocal_mode": "instrumental"
|
|
2580
|
-
},
|
|
2581
|
-
"required": [
|
|
2582
|
-
"style",
|
|
2583
|
-
"title"
|
|
2584
|
-
],
|
|
2585
|
-
"forbidden": [
|
|
2586
|
-
"prompt",
|
|
2587
|
-
"lyrics"
|
|
2588
|
-
]
|
|
2589
|
-
}
|
|
2590
|
-
],
|
|
2591
2017
|
"style": {
|
|
2592
2018
|
"type": "string",
|
|
2593
2019
|
"description": "Music style."
|
|
@@ -2669,47 +2095,6 @@
|
|
|
2669
2095
|
"required": true,
|
|
2670
2096
|
"description": "Model slug."
|
|
2671
2097
|
},
|
|
2672
|
-
"rules": [
|
|
2673
|
-
{
|
|
2674
|
-
"when": {
|
|
2675
|
-
"vocal_mode": "auto_lyrics"
|
|
2676
|
-
},
|
|
2677
|
-
"required": [
|
|
2678
|
-
"prompt"
|
|
2679
|
-
],
|
|
2680
|
-
"forbidden": [
|
|
2681
|
-
"lyrics",
|
|
2682
|
-
"style",
|
|
2683
|
-
"title"
|
|
2684
|
-
]
|
|
2685
|
-
},
|
|
2686
|
-
{
|
|
2687
|
-
"when": {
|
|
2688
|
-
"vocal_mode": "exact_lyrics"
|
|
2689
|
-
},
|
|
2690
|
-
"required": [
|
|
2691
|
-
"lyrics",
|
|
2692
|
-
"style",
|
|
2693
|
-
"title"
|
|
2694
|
-
],
|
|
2695
|
-
"forbidden": [
|
|
2696
|
-
"prompt"
|
|
2697
|
-
]
|
|
2698
|
-
},
|
|
2699
|
-
{
|
|
2700
|
-
"when": {
|
|
2701
|
-
"vocal_mode": "instrumental"
|
|
2702
|
-
},
|
|
2703
|
-
"required": [
|
|
2704
|
-
"style",
|
|
2705
|
-
"title"
|
|
2706
|
-
],
|
|
2707
|
-
"forbidden": [
|
|
2708
|
-
"prompt",
|
|
2709
|
-
"lyrics"
|
|
2710
|
-
]
|
|
2711
|
-
}
|
|
2712
|
-
],
|
|
2713
2098
|
"style": {
|
|
2714
2099
|
"type": "string",
|
|
2715
2100
|
"description": "Music style."
|
package/dist/src/meta.d.ts
CHANGED
package/dist/src/meta.js
CHANGED
package/dist/src/server.js
CHANGED
|
@@ -2,7 +2,6 @@ import { z } from "zod";
|
|
|
2
2
|
import { createModelServer, findModelForAction, findModels, friendlyError, jsonText, priceForModel, RunApiClient, taskStatus } from "@runapi.ai/mcp-core";
|
|
3
3
|
import { readContract, readPricing } from "./data.js";
|
|
4
4
|
import { META } from "./meta.js";
|
|
5
|
-
const RESERVED_FIELDS = new Set(["model", "rules"]);
|
|
6
5
|
function lineService(contract) {
|
|
7
6
|
return Object.keys(contract.actions)[0]?.split("/")[0] ?? META.lineSlug;
|
|
8
7
|
}
|
|
@@ -22,34 +21,8 @@ function lineModels(contract) {
|
|
|
22
21
|
}
|
|
23
22
|
return [...seen];
|
|
24
23
|
}
|
|
25
|
-
// No-model endpoints (models: []) carry their fields under the "_" roster.
|
|
26
|
-
function rostersForAction(action) {
|
|
27
|
-
return action.models.length > 0 ? action.models : ["_"];
|
|
28
|
-
}
|
|
29
|
-
function fieldsForAction(action) {
|
|
30
|
-
const fields = {};
|
|
31
|
-
for (const model of rostersForAction(action)) {
|
|
32
|
-
const roster = action.fields_by_model[model] ?? {};
|
|
33
|
-
for (const [name, field] of Object.entries(roster)) {
|
|
34
|
-
if (RESERVED_FIELDS.has(name)) {
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
if (!(name in fields)) {
|
|
38
|
-
fields[name] = field;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return fields;
|
|
43
|
-
}
|
|
44
24
|
function rulesForAction(action) {
|
|
45
|
-
|
|
46
|
-
const roster = action.fields_by_model[model] ?? {};
|
|
47
|
-
const rules = roster.rules;
|
|
48
|
-
if (Array.isArray(rules) && rules.length > 0) {
|
|
49
|
-
return rules;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return [];
|
|
25
|
+
return action.rules ?? [];
|
|
53
26
|
}
|
|
54
27
|
function buildTools(contract) {
|
|
55
28
|
const tools = [];
|
|
@@ -62,8 +35,7 @@ function buildTools(contract) {
|
|
|
62
35
|
description: `Create a ${action.model} task on RunAPI (${endpoint.replace(/_/g, " ")}). Returns a task id, status, and output URLs.`,
|
|
63
36
|
service,
|
|
64
37
|
action: endpoint,
|
|
65
|
-
models: action.models
|
|
66
|
-
inputSchema: fieldsForAction(action)
|
|
38
|
+
models: action.models
|
|
67
39
|
});
|
|
68
40
|
inputRules[endpoint] = rulesForAction(action);
|
|
69
41
|
}
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runapi.ai/suno-mcp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Suno MCP server for RunAPI — create Suno AI tasks (cover audio, create mashup, extend music), poll status, and check pricing across 6 models with one API key.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -27,7 +27,21 @@
|
|
|
27
27
|
"runapi",
|
|
28
28
|
"mcp",
|
|
29
29
|
"model-context-protocol",
|
|
30
|
-
"ai"
|
|
30
|
+
"ai",
|
|
31
|
+
"suno",
|
|
32
|
+
"suno-mcp",
|
|
33
|
+
"suno-ai",
|
|
34
|
+
"suno-api",
|
|
35
|
+
"music-generation",
|
|
36
|
+
"ai-music",
|
|
37
|
+
"audio-generation",
|
|
38
|
+
"ai-audio",
|
|
39
|
+
"cover-audio",
|
|
40
|
+
"create-mashup",
|
|
41
|
+
"extend-music",
|
|
42
|
+
"generate-lyrics",
|
|
43
|
+
"text-to-music",
|
|
44
|
+
"text-to-sound"
|
|
31
45
|
],
|
|
32
46
|
"author": "RunAPI",
|
|
33
47
|
"license": "Apache-2.0",
|
|
@@ -44,7 +58,7 @@
|
|
|
44
58
|
},
|
|
45
59
|
"dependencies": {
|
|
46
60
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
47
|
-
"@runapi.ai/mcp-core": "0.1.
|
|
61
|
+
"@runapi.ai/mcp-core": "0.1.2",
|
|
48
62
|
"zod": "^3.25.76"
|
|
49
63
|
},
|
|
50
64
|
"devDependencies": {
|
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/runapi-ai/suno-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.3",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@runapi.ai/suno-mcp",
|
|
14
|
-
"version": "0.1.
|
|
14
|
+
"version": "0.1.3",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|