@kolbo/mcp 1.121.0 → 1.122.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolbo/mcp",
3
- "version": "1.121.0",
3
+ "version": "1.122.0",
4
4
  "description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  # AUTO-GENERATED — do not edit
2
2
 
3
- This tree is mirrored from kolbo-code@fffea06, the single source of truth.
3
+ This tree is mirrored from kolbo-code@75f60e6, the single source of truth.
4
4
  Canonical source: packages/opencode/skills/kolbo/
5
5
  Distribution: .github/workflows/sync-skill-to-plugin.yml
6
6
 
package/skill/SKILL.md CHANGED
@@ -141,6 +141,7 @@ Font tools (when exposed by the installed MCP): `list_fonts`, `get_font`, `uploa
141
141
  ### Discovery, Library, Visual DNA, Moodboards, Chat, Publishing
142
142
  | Tool | Purpose |
143
143
  |------|---------|
144
+ | `publish_project` / `get_project_publication` / `unpublish_project` / `submit_project_to_catalog` / `remove_project_hero_video` | Public showcase link for a project you own (the app's Publish tab). `publish_project` returns the public `url` and, in the same call, sets `allow_fork`, `showcase_about` and the FINAL VIDEO as page hero: first put the video in the project (`upload_media` with `project_id`, or generate with `project_id`), then pass its id as `hero_video_media_id`. Confirm with the user before publishing — anyone with the link sees the project's media. |
144
145
  | `list_models` / `list_voices` / `check_credits` / `show_plans` / `get_generation_status` / `cancel_generation` / `get_session_usage` | Discovery + status. `list_models` with no args returns the recommended shortlist out of ~428 — pass `type` for a full category with per-model caps. `cancel_generation` stops an in-flight job and refunds what it can: use it when the user changes their mind mid-generation instead of letting it run. `show_plans` renders the balance + upgrade card for pricing/plan/upgrade questions. |
145
146
  | `download_media_from_url` / `get_download_status` / `cancel_download` | Download a public social/video page URL to Kolbo storage. Async job; use download status, not generation status. See `workflows/media-library.md`. |
146
147
  | `upload_media` / `create_upload_ticket` / `list_media` / `get_media` / `get_media_stats` / `favorite_media` / `unfavorite_media` / `dislike_media` / `undislike_media` / `rate_media` / `clear_media_rating` / `delete_media` / `restore_media` / `permanently_delete_media` / `move_media` / `bulk_*_media` / `*_media_folder` | Media library — see `workflows/media-library.md`. Getting a LOCAL file in depends on where the server runs: `upload_media` with a path only works on a local (stdio) install; over a remote connector use `create_upload_ticket` and POST the file yourself. |
package/src/apps/index.js CHANGED
@@ -328,8 +328,8 @@ async function modelCatalog(client) {
328
328
  ? m.supported_aspect_ratios
329
329
  : (Array.isArray(m.supportedAspectRatios) ? m.supportedAspectRatios : []);
330
330
  const aspectsByType = m.supported_aspect_ratios_by_type || m.supportedAspectRatiosByType || null;
331
- // images_per_request: fixed outputs per call (Midjourney = 4, whatever num_images says).
332
- const ipr = Number(m.images_per_request || m.imagesPerRequest) || 1;
331
+ // images_per_request: fixed outputs per call (Midjourney = 4, whatever num_images says).
332
+ const ipr = Number(m.images_per_request || m.imagesPerRequest) || 1;
333
333
  const info = { icon, eta, id: m.identifier || null, name: m.name || null, types, aspects, aspectsByType, ipr };
334
334
  all.push(info);
335
335
  // Display names collide across variants ("Nano Banana 2" names both the
@@ -786,6 +786,11 @@ const TOOL_WIDGETS = {
786
786
  generate_first_last_frame: UI.generation,
787
787
  generate_lipsync: UI.generation,
788
788
  generate_music: UI.generation,
789
+ // These return submittedResult/uiCompleted too, but hosts that mount from the
790
+ // tools/list declaration (claude.ai) showed no card without the entry here.
791
+ extend_music: UI.generation,
792
+ cover_music: UI.generation,
793
+ edit_music_section: UI.generation,
789
794
  generate_speech: UI.generation,
790
795
  generate_sound: UI.generation,
791
796
  generate_3d: UI.generation,
@@ -70,7 +70,8 @@ var TOOL_TITLES = {
70
70
  generate_video: 'Video Generation', generate_video_from_image: 'Image to Video',
71
71
  generate_video_from_video: 'Video to Video', generate_elements: 'Elements Video',
72
72
  generate_first_last_frame: 'First–Last Frame', generate_lipsync: 'Lipsync',
73
- generate_music: 'Music Generation', generate_speech: 'Text to Speech',
73
+ generate_music: 'Music Generation', extend_music: 'Music Extend', cover_music: 'Music Cover',
74
+ edit_music_section: 'Music Edit', generate_speech: 'Text to Speech',
74
75
  generate_sound: 'Sound Effect', generate_3d: '3D Generation',
75
76
  generate_creative_director: 'Creative Director', edit_image: 'Image Edit', edit_video: 'Video Edit',
76
77
  get_generation_status: 'Generations'
@@ -86,6 +87,9 @@ var OPEN_ROUTES = {
86
87
  generate_video_from_video: { path: '/video-tools', tool: 'video-to-video' },
87
88
  generate_lipsync: { path: '/video-tools', tool: 'lipsync' },
88
89
  generate_music: { path: '/audio-tools', tool: 'music-generator' },
90
+ extend_music: { path: '/audio-tools', tool: 'music-generator' },
91
+ cover_music: { path: '/audio-tools', tool: 'music-generator' },
92
+ edit_music_section: { path: '/audio-tools', tool: 'music-generator' },
89
93
  generate_speech: { path: '/audio-tools', tool: 'text-to-speech' },
90
94
  generate_sound: { path: '/audio-tools', tool: 'text-to-sound' },
91
95
  transcribe_audio: { path: '/audio-tools', tool: 'speech-to-text' },