@kolbo/mcp
Advanced tools
+1
-1
| { | ||
| "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 @@ }); |
+2
-6
@@ -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.'), |
+6
-12
@@ -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
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
718512
1.39%7552
1.79%