🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@kolbo/mcp

Package Overview
Dependencies
Maintainers
1
Versions
87
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kolbo/mcp - npm Package Compare versions

Comparing version
1.44.0
to
1.45.0
+1
-1
package.json
{
"name": "@kolbo/mcp",
"version": "1.44.0",
"version": "1.45.0",
"description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",

@@ -5,0 +5,0 @@ "main": "src/index.js",

@@ -441,3 +441,3 @@ 'use strict';

'\\n🎬 Reference image: ' + currentUrl() +
'\\nModel: smart select — pick the best image-to-video model' +
'\\nModel: pick a specific image-to-video model that best fits this image (do NOT use Smart Select / auto)' +
(text ? '\\nMotion prompt: ' + text : '\\nMotion prompt: subtle cinematic motion, slow push-in'));

@@ -444,0 +444,0 @@ });

@@ -69,3 +69,2 @@ /* ============================================================================

const { registerPresetTools } = require('./tools/presets');
const { registerAppBuilderTools } = require('./tools/app_builder');
const { registerArtifactTools } = require('./tools/artifacts');

@@ -78,3 +77,2 @@ const { registerProjectTools } = require('./tools/projects');

const { registerStockLibraryTools } = require('./tools/stock_library');
const { registerShortsCreatorTools } = require('./tools/shorts_creator');
const { registerApps, attachToolWidgetMeta } = require('./apps');

@@ -118,3 +116,3 @@

'1. When the user names a project ("in my Acme project", "for the summer campaign"), call `list_projects` ONCE to resolve the name to an id, then pass that id as `project_id` on EVERY subsequent generate_* / chat_send_message / upload_media call in the conversation. The target project is per-call, NOT sticky — any call that omits `project_id` silently lands in the default "API Generations" bucket (flagged is_default:true), which users experience as their work going to the wrong project.',
'2. `list_projects` lists the user\'s platform projects (for generations/media/chat). `app_builder_list_projects` is a DIFFERENT tool that scopes App Builder coding sessions only — never use one where the other is meant (both return the same projects but via different endpoints, different shapes). The App Builder surface (project → session → deployed app with GitHub+Supabase+live URL → end-users who hit `/api/apps/:appId/ai/*`) is a SEPARATE world from the generation tools — `app_builder_generate_app` is NOT a media-generation call, and an App Builder `session_id` is NOT interchangeable with a chat/generation `session_id`. Read `skill/references/workflows/app-builder.md` before the first App Builder turn; App Builder is preview-only, do not proactively advertise it.',
'2. `list_projects` lists the user\'s platform projects (for generations/media/chat). Do not confuse a generation `session_id` with any other session type — they are not interchangeable.',
'3. Misplaced work is fixable: `move_media` / `bulk_move_media` / `move_folder_contents` move media items between projects; `move_session` moves a whole session (plus its media) to another project. If the user says a generation landed in the wrong project, move it rather than regenerating.',

@@ -125,3 +123,3 @@ '4. If the user has not mentioned any project, omit `project_id` — the default bucket is correct in that case. Do not ask which project to use unless the user\'s intent is ambiguous.',

'7. SESSION CONTINUITY: keep one workflow in ONE session. chat_send_message and the generation tools return a `session_id` — for follow-ups, refinements, retries, or additional steps on the SAME task/theme, pass that same `session_id` back on the next call instead of starting fresh. Only OMIT session_id (start a new session) when the user genuinely switches to an unrelated task. Do not open a new conversation/session for every message of the same workflow — it fragments the user\'s history and loses context.',
'8. LOCAL FILES / CHAT ATTACHMENTS: remote MCP tools CANNOT read files the user attached to the chat. When a claude.ai (browser/mobile) user has a local image/video/audio/document to use as a generation input, IMMEDIATELY call `media_upload_widget` — an upload card appears in the chat, they upload, and stable Kolbo CDN URLs come back in a follow-up message. Never ask them to re-attach the file in chat and never invent a URL. On Claude Desktop/Code with filesystem access, use `upload_media` with the absolute local path instead.',
'8. LOCAL FILES / REFERENCE MEDIA — HOW TO HANDLE EVERY CASE: (A) User has a LOCAL file (audio, video, image, document) on their machine: if you have filesystem access (Claude Desktop / Code / IDE / any stdio MCP client) → call `upload_media` with the absolute local path OR pass the path directly to tools like `transcribe_audio` which accept local paths natively. If you have NO filesystem access (claude.ai browser/mobile) → call `media_upload_widget` IMMEDIATELY, an upload card appears, the user uploads, and a `media.kolbo.ai` CDN URL comes back — use that URL for any follow-up tool call. (B) You already have a public URL (media.kolbo.ai, any CDN, any direct link) → pass it directly to the tool. All Kolbo tools accept public URLs. NEVER search for DO Spaces keys, DigitalOcean credentials, or server-side upload credentials. NEVER ask the user to put the file on Google Drive, Dropbox, or Loom. NEVER invent or guess a URL. NEVER base64 a large file — use upload_media instead.',
'9. MODEL SELECTION: ALWAYS pass a specific `model` on every generation tool — do NOT omit it. Omitting falls back to "Smart Select" auto-routing, which we deliberately avoid because it hides the model choice from the user and often picks a generic default. Choose the model that best fits the task and the user\'s intent (quality, speed, style, capability). If you are unsure which model to use for a given type, call `list_models` with the matching `type` and pick the recommended/flagship one, then pass its `identifier`. Only use Smart Select (omit `model`) if the user EXPLICITLY asks you to auto-pick.',

@@ -145,3 +143,2 @@ '10. IMAGE EDITING: for ANY prompt-driven / content edit of an existing image — "make it night", changing scene/lighting/colors, adding/removing/replacing objects, restyling — use `generate_image_edit` (it runs on strong dedicated editing models, same as image generation). Do NOT use `edit_image` for content edits — `edit_image` is ONLY for mechanical enhancements (upscale, reframe, remove-background, skin retouch). Its `magic_edit` operation is deprecated in favor of `generate_image_edit`.'

registerPresetTools(server, client, toolOptions);
registerAppBuilderTools(server, client, toolOptions);
registerArtifactTools(server, client, toolOptions);

@@ -153,3 +150,2 @@ registerProjectTools(server, client, toolOptions);

registerStockLibraryTools(server, client, toolOptions);
registerShortsCreatorTools(server, client, toolOptions);

@@ -156,0 +152,0 @@ // MCP Apps widget resources (ui://kolbo/*). Registering resources is inert

@@ -17,3 +17,3 @@ /* ⛔ BACKWARD COMPATIBILITY: Tool names and arg names below are a PUBLIC

message: z.string().describe('The user message to send'),
model: z.string().optional().describe('Model identifier (e.g. "gpt-4o", "claude-sonnet-4-6"). Omit for Smart Select (auto) — recommended default. When media_urls contains video or audio, Smart Select automatically routes to a Gemini vision model regardless of this field.'),
model: z.string().optional().describe('Model identifier (e.g. "gpt-4o", "claude-sonnet-4-6"). Prefer passing a SPECIFIC model (list_models type="text") — omitting falls back to Smart Select auto-routing, which we avoid unless the user explicitly asks for auto-pick. Exception: when media_urls contains video or audio, omitting is fine — routing goes to a Gemini vision model regardless of this field.'),
session_id: z.string().optional().describe('Existing chat session ID to continue. Omit to start a new conversation.'),

@@ -20,0 +20,0 @@ system_prompt: z.string().optional().describe('System prompt for the conversation. Only applied when creating a new session.'),

@@ -47,4 +47,7 @@ /* ⛔ BACKWARD COMPATIBILITY: Tool names and arg names below are a PUBLIC

// Deliberately CURATED, not exhaustive: the widget is a picker, not a database.
// Smart Select is pinned first, each group shows the recommended/new models
// (max 6), and the total count chip tells the user how many exist overall.
// Each group shows the recommended/new models (max 6), and the total count
// chip tells the user how many exist overall. Smart Select / "Auto" rows are
// deliberately EXCLUDED — we always want a specific model chosen (server
// instruction #9): auto-routing hides the model choice and the generation
// metadata used to read just "Auto".
function buildCatalogStructured(models, type) {

@@ -55,11 +58,2 @@ const groups = [];

// Pinned Smart Select entry (replaces the confusing "Other / Auto" row).
const smartSelect = {
name: 'Smart Select',
icon: null,
description: 'Recommended — automatically routes to the best model for your prompt, quality and cost.',
chips: ['AUTO'],
use_hint: 'Generate with Smart Select (omit the model) — ask me what I want to create first.',
};
// Recommended + new models float to the top of each group.

@@ -89,3 +83,3 @@ const ranked = [...models].filter((m) => !isAuto(m)).sort((a, b) => {

total_available: models.length,
groups: [{ name: 'Recommended', models: [smartSelect] }, ...groups],
groups,
};

@@ -92,0 +86,0 @@ }

Sorry, the diff of this file is too big to display