@kolbo/mcp 1.13.0 → 1.14.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 CHANGED
@@ -4,7 +4,20 @@ Use [Kolbo AI](https://kolbo.ai) as native tools in Claude Code and Claude Deskt
4
4
 
5
5
  Generate images, videos, music, speech, sound effects, multi-scene campaigns, and conversational chat — all from natural language in your coding environment. 100+ AI models behind Smart Select routing, with reusable Visual DNA profiles for character/style consistency.
6
6
 
7
- ## Quick Setup
7
+ ## Recommended install: the Kolbo Claude Code plugin
8
+
9
+ The easiest way to use this MCP from Claude Code is the official **Kolbo plugin**, which bundles this server + the routing skill + a first-run API-key prompt — no `settings.json` editing required:
10
+
11
+ ```bash
12
+ claude plugin marketplace add Zoharvan12/kolbo-claude-plugin
13
+ claude plugin install kolbo@kolbo
14
+ ```
15
+
16
+ You'll be prompted for your API key once and it's stored in your OS keychain. The plugin lives in its own tiny repo at [`kolbo-claude-plugin`](https://github.com/Zoharvan12/kolbo-claude-plugin); the routing skill it ships is auto-synced from the canonical source in [`kolbo-code`](https://github.com/Zoharvan12/kolbo-code), so the Claude Code plugin and the Kolbo Code CLI always carry the same skill.
17
+
18
+ Continue below if you'd rather wire the MCP in by hand (Claude Desktop, Cursor, custom setups).
19
+
20
+ ## Manual setup
8
21
 
9
22
  ### 1. Get an API Key
10
23
 
@@ -115,6 +128,11 @@ Every generation tool also accepts an optional `resolution` arg. Images use `"1K
115
128
  | `move_folder_contents` | Move every item in a folder to a project |
116
129
  | `get_media_stats` | Counts + storage bytes per type (optionally per project) |
117
130
 
131
+ **Artifacts**
132
+ | Tool | Description |
133
+ |------|-------------|
134
+ | `publish_html_artifact` | Publish an HTML page, SVG, or Mermaid diagram and get a public shareable URL on `sites.kolbo.ai`. Pass `share_token` from a prior publish to update the same URL in place (old content kept in version history). |
135
+
118
136
  **Discovery & Account**
119
137
  | Tool | Description |
120
138
  |------|-------------|
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolbo/mcp",
3
- "version": "1.13.0",
3
+ "version": "1.14.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": {
@@ -9,23 +9,29 @@ function registerArtifactTools(server, client) {
9
9
  // ─── publish_html_artifact ─────────────────────────────────────
10
10
  server.tool(
11
11
  'publish_html_artifact',
12
- 'Publish an HTML page (or SVG / Mermaid diagram) to kolbo.ai and return a public shareable URL. Use this when the user explicitly asks to share, publish, or deploy a built artifact so they can send the URL to someone. The content is hosted at https://sites.kolbo.ai/<slug>; the page is served with restrictive CSP (no fetch/XHR/form-action) so it cannot exfiltrate data. Identical content uploaded twice returns the same URL (server dedup).',
12
+ 'Publish an HTML page (or SVG / Mermaid diagram) to kolbo.ai and return a public shareable URL. Use this when the user explicitly asks to share, publish, or deploy a built artifact so they can send the URL to someone. The content is hosted at https://sites.kolbo.ai/<slug>; the page is served with restrictive CSP (no fetch/XHR/form-action) so it cannot exfiltrate data. Identical content uploaded twice returns the same URL (server dedup). To update a previously-published page in place (keeping the same URL), pass the `share_token` returned from the prior publish — the old content is preserved in version history.',
13
13
  {
14
14
  title: z.string().describe('Human-friendly title for the page (also used to generate the SEO slug). Keep under ~60 chars.'),
15
15
  content: z.string().describe('The raw artifact body. For type="html" this is a full HTML document (DOCTYPE + html/head/body). For "svg" it is an <svg> document. For "mermaid" it is the Mermaid source text.'),
16
16
  type: z.enum(['html', 'svg', 'mermaid']).optional().describe('Artifact type. Default: "html".'),
17
17
  allow_js: z.boolean().optional().describe('Allow inline <script> execution on the published page. Default: false. Required for Tailwind JIT, Chart.js, Three.js, React-from-CDN etc.'),
18
+ share_token: z.string().optional().describe('Optional. Pass the `shareToken` returned from a previous publish to update that artifact in place. The public URL stays the same and the old content is moved into version history. Omit this on the first publish.'),
18
19
  },
19
- async ({ title, content, type, allow_js }) => {
20
+ async ({ title, content, type, allow_js, share_token }) => {
20
21
  if (!title || !title.trim()) throw new Error('title is required');
21
22
  if (typeof content !== 'string' || !content.length) throw new Error('content is required');
22
23
 
23
- const result = await client.post('/artifact/quick-share', {
24
+ const body = {
24
25
  title: title.trim(),
25
26
  content,
26
27
  type: type || 'html',
27
28
  allowJs: allow_js === true,
28
- });
29
+ };
30
+ if (typeof share_token === 'string' && share_token.trim()) {
31
+ body.shareToken = share_token.trim();
32
+ }
33
+
34
+ const result = await client.post('/artifact/quick-share', body);
29
35
 
30
36
  const artifact = result?.data || {};
31
37
  const slug = artifact.shareableSlug || artifact.shareToken;
@@ -49,6 +55,7 @@ function registerArtifactTools(server, client) {
49
55
  shareToken: artifact.shareToken,
50
56
  shareableSlug: slug,
51
57
  duplicate: result?.duplicate === true,
58
+ updated: result?.updated === true,
52
59
  title: artifact.title,
53
60
  }),
54
61
  }],