@kolbo/mcp 1.35.0 → 1.36.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/README.md +1 -0
- package/package.json +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +6 -1
- package/skill/VERSION +1 -1
- package/src/tools/visual_dna.js +27 -3
package/README.md
CHANGED
|
@@ -233,6 +233,7 @@ Every generation tool also accepts an optional `project_id` arg that routes the
|
|
|
233
233
|
| `list_projects` | List owned + shared projects (id, name, role, is_default) — call first to resolve a project name into the `project_id` you pass to generation tools |
|
|
234
234
|
| `move_session` | Move a session (generation, chat, transcription…) and ALL its media to another project |
|
|
235
235
|
| `create_doc` / `list_docs` / `get_doc` / `update_doc` / `share_doc` / `delete_doc` | AI Docs (Magic Pad): author project-scoped HTML documents, edit them, get public share links |
|
|
236
|
+
| `generate_character_sheet` | Generate a multi-angle character sheet from reference images (credits) → pass URL to create_visual_dna for stronger character consistency |
|
|
236
237
|
| `list_visual_dna_folders` / `create_visual_dna_folder` / `update_visual_dna_folder` / `delete_visual_dna_folder` / `move_visual_dna_to_folder` | Organize Visual DNA characters into user folders (create/rename/recolor/delete + move DNAs in/out) |
|
|
237
238
|
| `create_project` / `update_project` / `archive_project` / `unarchive_project` | Project lifecycle (create/rename/describe/archive; deletion stays in-app) |
|
|
238
239
|
| `list_sessions` | Enumerate sessions across all types, filterable by project and type |
|
package/package.json
CHANGED
package/skill/GENERATED.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AUTO-GENERATED — do not edit
|
|
2
2
|
|
|
3
3
|
This skill/ tree is mirrored from kolbo-code (the single source of truth)
|
|
4
|
-
by .github/workflows/sync-skill-to-plugin.yml — synced from kolbo-code@
|
|
4
|
+
by .github/workflows/sync-skill-to-plugin.yml — synced from kolbo-code@d3a54fb.
|
|
5
5
|
|
|
6
6
|
It is the skill that 'npx @kolbo/mcp install' deploys into the user's agent.
|
|
7
7
|
To change it, edit packages/opencode/skills/kolbo/ in kolbo-code and push;
|
package/skill/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
version: 0.
|
|
2
|
+
version: 0.7.0
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, or analyze creative media via the Kolbo AI MCP server:
|
|
@@ -117,6 +117,11 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
117
117
|
| `list_moodboards` / `get_moodboard` / `list_presets` | Style overlays |
|
|
118
118
|
| `search_stock_media` / `get_stock_sources` / `get_stock_categories` / `get_stock_collections` / `get_stock_asset` / `analyze_script_for_stock` / `import_stock_asset` | Stock library (free, no credits) — EXISTING photos / videos / 3D / SFX / music. For stock **music** use `search_stock_media` with `mediaType: "music"` (semantic vibe query, e.g. "uplifting corporate background") → `get_stock_asset` for downloads. The older `*_music_library` tools are deprecated adapters over this — prefer the stock tools. |
|
|
119
119
|
| `list_projects` / `move_session` | Projects: resolve a project NAME → the `project_id` you pass on generation/upload/doc calls; `move_session` relocates a whole session + its media when work landed in the wrong project. NOT the same as `app_builder_list_projects`. See "Projects — Where Work Lands" below. |
|
|
120
|
+
| `create_project` / `update_project` / `archive_project` / `unarchive_project` / `list_sessions` | Project lifecycle + session inventory (deletion stays in-app). Create a project when the user starts new work, then pass its id on EVERY call. |
|
|
121
|
+
| `add_project_context` / `list_project_context` / `delete_project_context` / `get_project_profile` / `regenerate_project_profile` | Project knowledge base (RAG): feed scripts/URLs/notes; `get_project_profile` = the living brief — read it to ground work in the project |
|
|
122
|
+
| `create_moodboard` / `update_moodboard` / `delete_moodboard` | Moodboards from image URLs → AI master style prompt → pass `moodboard_id` to generation tools |
|
|
123
|
+
| `clone_voice` / `import_elevenlabs_voice` / `delete_voice` | Custom voices (clone CHARGES CREDITS — confirm first; new voices show in `list_voices`) |
|
|
124
|
+
| `trim_video` | Frame-accurate trim of a Kolbo-hosted video (tool waits and returns the URL). `edit_video` also gained `remove_background`. |
|
|
120
125
|
| `create_doc` / `list_docs` / `get_doc` / `update_doc` / `share_doc` / `delete_doc` | AI Docs (Magic Pad): YOU author full HTML documents (plans, briefs, scripts, research) saved into the user's project, editable in the Kolbo app. `share_doc` returns a public link. `update_doc` content replaces the WHOLE doc — `get_doc` first. |
|
|
121
126
|
| `chat_send_message` / `chat_list_conversations` / `chat_get_messages` | Kolbo chat with optional `media_urls` (up to 10 per call) |
|
|
122
127
|
| `app_builder_*` (9 tools) | Full React app generation — see `workflows/app-builder.md` |
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.7.0
|
package/src/tools/visual_dna.js
CHANGED
|
@@ -20,16 +20,17 @@ function registerVisualDnaTools(server, client, options = {}) {
|
|
|
20
20
|
// ─── create_visual_dna ─────────────────────────────────────
|
|
21
21
|
server.tool(
|
|
22
22
|
'create_visual_dna',
|
|
23
|
-
'Create a Visual DNA profile from reference media. Each item in images/video/audio can be a public URL or an absolute local file path. Max 4 images, 1 video, 1 audio. Files capped at 25MB each.',
|
|
23
|
+
'Create a Visual DNA profile from reference media. Each item in images/video/audio can be a public URL or an absolute local file path. Max 4 images, 1 video, 1 audio. Files capped at 25MB each. For CHARACTER DNAs, a multi-angle character sheet dramatically improves consistency — offer to generate one with `generate_character_sheet` first, then pass its URL as `character_sheet_url` here (see that tool).',
|
|
24
24
|
{
|
|
25
25
|
name: z.string().describe('Name of the Visual DNA profile. **Pick a short, lowercase, no-space single token** (e.g. `maya`, `tokyo_neon`, `brand_red`, `esther_model`) — never names with spaces (`Sarah Johnson` ❌). The user/LLM types this as `@<name>` inside generation prompts, and the @ parser stops at the first space, so `@Sarah Johnson` matches only `Sarah` and the binding silently drops. Multi-word concepts should use underscores or be a single token. Names are case-insensitive on lookup, but **reserved** values rejected on creation: `Image1`, `Image2`, …, `Video1`, …, `Audio1`, … (any-language characters allowed; max 100 chars).'),
|
|
26
26
|
dna_type: z.string().optional().describe('Type: "character", "style", "product", "scene", "environment". Default: "character"'),
|
|
27
27
|
prompt_helper: z.string().optional().describe('Optional description/notes to guide DNA extraction'),
|
|
28
28
|
images: z.array(z.string()).optional().describe('Array of image sources (URLs or absolute local paths). Max 4.'),
|
|
29
29
|
video: z.string().optional().describe('Optional video source (URL or absolute local path)'),
|
|
30
|
-
audio: z.string().optional().describe('Optional audio source (URL or absolute local path)')
|
|
30
|
+
audio: z.string().optional().describe('Optional audio source (URL or absolute local path)'),
|
|
31
|
+
character_sheet_url: z.string().optional().describe('URL of a multi-angle character sheet (from `generate_character_sheet`) to set as the DNA\'s primary reference. Strongly recommended for character DNAs — it is the single biggest consistency booster. Omit for non-character DNAs or when the user declines.')
|
|
31
32
|
},
|
|
32
|
-
async ({ name, dna_type, prompt_helper, images, video, audio }) => {
|
|
33
|
+
async ({ name, dna_type, prompt_helper, images, video, audio, character_sheet_url }) => {
|
|
33
34
|
if (!name || !name.trim()) {
|
|
34
35
|
throw new Error('name is required');
|
|
35
36
|
}
|
|
@@ -53,6 +54,7 @@ function registerVisualDnaTools(server, client, options = {}) {
|
|
|
53
54
|
form.append('name', name);
|
|
54
55
|
if (dna_type) form.append('dnaType', dna_type);
|
|
55
56
|
if (prompt_helper) form.append('promptHelper', prompt_helper);
|
|
57
|
+
if (character_sheet_url) form.append('characterSheetUrl', character_sheet_url);
|
|
56
58
|
|
|
57
59
|
for (const f of imageFiles) {
|
|
58
60
|
form.append('images', f.buffer, { filename: f.filename, contentType: f.contentType });
|
|
@@ -159,6 +161,28 @@ function registerVisualDnaTools(server, client, options = {}) {
|
|
|
159
161
|
}
|
|
160
162
|
);
|
|
161
163
|
|
|
164
|
+
// ─── generate_character_sheet ──────────────────────────────
|
|
165
|
+
server.tool(
|
|
166
|
+
'generate_character_sheet',
|
|
167
|
+
'Generate a multi-angle character sheet (turnaround) from 1+ reference image URLs — the same step the in-app Visual DNA wizard offers. The sheet is the single strongest consistency booster for a character DNA. CHARGES CREDITS, so when the user is about to create a character DNA, OFFER this first ("want me to generate a character sheet for stronger consistency? it costs a few credits") and only run it on a yes. Returns `character_sheet_url` — pass it as `character_sheet_url` to `create_visual_dna`.',
|
|
168
|
+
{
|
|
169
|
+
image_urls: z.array(z.string()).min(1).describe('Reference image URLs of the character (front/side/varied angles work best). Use generated-image URLs or upload_media output.')
|
|
170
|
+
},
|
|
171
|
+
async ({ image_urls }) => {
|
|
172
|
+
const result = await client.post('/v1/visual-dna/character-sheet', { image_urls });
|
|
173
|
+
return {
|
|
174
|
+
content: [{
|
|
175
|
+
type: 'text',
|
|
176
|
+
text: JSON.stringify({
|
|
177
|
+
character_sheet_url: result.character_sheet_url,
|
|
178
|
+
credits_used: result.credits_used,
|
|
179
|
+
_hint: 'Show the sheet to the user, then pass character_sheet_url to create_visual_dna as that DNA\'s reference.'
|
|
180
|
+
}, null, 2)
|
|
181
|
+
}]
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
|
|
162
186
|
// ─── Visual DNA folders (organize characters) ──────────────
|
|
163
187
|
// Folders are user-scoped and flat. Only PERSONAL Visual DNAs can live in
|
|
164
188
|
// folders — global/organization presets are rejected by the server.
|