@writepanda/mcp 1.99.0 → 1.100.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.
Files changed (2) hide show
  1. package/bin/server.mjs +42 -6
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -229,6 +229,40 @@ const TOOLS = [
229
229
  inputSchema: { type: "object", properties: {} },
230
230
  command: "system.isWhisperModelDownloaded",
231
231
  },
232
+ {
233
+ name: "system_get_narration_engine",
234
+ description:
235
+ "Read the active narration (TTS) engine for the current workspace. Returns { engine } — 'local-kokoro' (default; Kokoro-82M on-device, English, no key/cloud) or 'replicate' (cloud TTS, needs the user's Replicate key). Use before recommending a switch or when disclosing which engine narration uses.",
236
+ inputSchema: { type: "object", properties: {} },
237
+ command: "system.getNarrationEngine",
238
+ },
239
+ {
240
+ name: "system_set_narration_engine",
241
+ description:
242
+ "Set the DEFAULT narration engine for the current workspace. Pass `engine` = 'local-kokoro' (on-device English, no key) or 'replicate' (cloud, needs the user's Replicate key). Individual media_generate_narration calls can still override this via their `model` arg. Switching to local triggers a one-time ~330 MB model download on first use — call system_is_kokoro_model_downloaded to check.",
243
+ inputSchema: {
244
+ type: "object",
245
+ properties: {
246
+ engine: { type: "string", description: "'local-kokoro' | 'replicate'." },
247
+ },
248
+ required: ["engine"],
249
+ },
250
+ command: "system.setNarrationEngine",
251
+ },
252
+ {
253
+ name: "system_is_kokoro_model_downloaded",
254
+ description:
255
+ "Check whether the local Kokoro-82M TTS model (English on-device narration) has been downloaded. Returns { downloaded: boolean }. The model (~330 MB) auto-downloads on first local narration; calling this first lets you surface the download instead of a long first-run wait.",
256
+ inputSchema: { type: "object", properties: {} },
257
+ command: "system.isKokoroModelDownloaded",
258
+ },
259
+ {
260
+ name: "system_download_kokoro_model",
261
+ description:
262
+ "Pre-download the local Kokoro-82M TTS model + voices (~330 MB) now so the first narration doesn't pay the wait. Idempotent; returns { downloaded: true }. Optional — narration also auto-downloads on first use.",
263
+ inputSchema: { type: "object", properties: {} },
264
+ command: "system.downloadKokoroModel",
265
+ },
232
266
 
233
267
  // ── workspaces (v1.19) ──────────────────────────────────────────
234
268
  // Multi-workspace isolation: each workspace has its own projects,
@@ -2432,27 +2466,29 @@ const TOOLS = [
2432
2466
  {
2433
2467
  name: "media_generate_narration",
2434
2468
  description:
2435
- "Generate a voiceover / narration audio clip via Replicate TTS, for promo videos and explainers. Project-agnostic; writes audio to <userData>/narration/ and returns { audioPath, durationMs, model, voice, predictionId }. Canonical workflow: media_generate_narration → project_add_audio (place at startMs, pass the returned durationMs so the overlay is sized to the speech). Models: 'elevenlabs-v3' (default, most expressive — embed inline delivery tags in the text like [excited] or [whispers]) | 'gemini-flash-tts' (30 voices, strong multilingual; 'style' sets tone) | 'minimax-turbo' (fast; 'style' maps to an emotion, 'speed' 0.5-2). Voices — gemini e.g. Kore/Puck/Charon; minimax e.g. Friendly_Person/Wise_Woman/Casual_Guy; omit voice for the model default. Requires the user's Replicate API key (Settings → Integrations).",
2469
+ "Generate a voiceover / narration audio clip. Project-agnostic; writes audio to <userData>/narration/ and returns { audioPath, durationMs, model, voice, predictionId }. Canonical workflow: media_generate_narration → project_add_audio (place at startMs, pass the returned durationMs so the overlay is sized to the speech). DEFAULT is the LOCAL, on-device Kokoro engine (English) — no API key, no cloud, runs on the user's machine; the model auto-downloads (~330 MB) on first use. Kokoro voices (pass in `voice`): af_heart (default), af_bella, am_michael, bf_emma, bm_george, etc. (a*=American, b*=British; f=female, m=male). To use CLOUD TTS instead (more voices/languages, needs the user's Replicate key), set `model` to a Replicate model: 'elevenlabs-v3' (most expressive — embed inline tags like [excited]/[whispers]) | 'gemini-flash-tts' (30 voices, multilingual, 'style' sets tone) | 'minimax-turbo' (fast, 'style' maps to an emotion, 'speed' 0.5-2). Cloud voices — gemini Kore/Puck/Charon; minimax Friendly_Person/Wise_Woman. Omit `model` to honour the workspace default (system_get_narration_engine).",
2436
2470
  inputSchema: {
2437
2471
  type: "object",
2438
2472
  properties: {
2439
2473
  text: {
2440
2474
  type: "string",
2441
2475
  description:
2442
- "The script to speak. For elevenlabs-v3 you can embed delivery tags inline, e.g. 'Welcome [excited] to the future of editing.'",
2476
+ "The script to speak. For the cloud elevenlabs-v3 model you can embed delivery tags inline, e.g. 'Welcome [excited] to the future of editing.' (Local Kokoro ignores such tags.)",
2443
2477
  },
2444
2478
  model: {
2445
2479
  type: "string",
2446
- description: "'elevenlabs-v3' (default) | 'gemini-flash-tts' | 'minimax-turbo'.",
2480
+ description:
2481
+ "Engine/model selector. Omit for the workspace default (local Kokoro). 'kokoro-local' forces on-device English. Cloud (needs Replicate key): 'elevenlabs-v3' | 'gemini-flash-tts' | 'minimax-turbo'.",
2447
2482
  },
2448
2483
  voice: {
2449
2484
  type: "string",
2450
2485
  description:
2451
- "Voice id/name for the chosen model (gemini: Kore/Puck/...; minimax: Friendly_Person/...). Omit for the model default.",
2486
+ "Voice for the chosen engine. Local Kokoro: af_heart/af_bella/am_michael/bf_emma/bm_george/... Cloud: gemini Kore/Puck/...; minimax Friendly_Person/... Omit for the engine's default voice.",
2452
2487
  },
2453
2488
  language: {
2454
2489
  type: "string",
2455
- description: "Optional BCP-47 language hint, e.g. 'en-US', 'es-ES'.",
2490
+ description:
2491
+ "Optional BCP-47 language hint for the cloud models, e.g. 'en-US', 'es-ES'. Local Kokoro is English-only and ignores this.",
2456
2492
  },
2457
2493
  style: {
2458
2494
  type: "string",
@@ -3054,7 +3090,7 @@ const TOOLS = [
3054
3090
  const server = new Server(
3055
3091
  {
3056
3092
  name: "pandastudio",
3057
- version: "1.72.0",
3093
+ version: "1.73.0",
3058
3094
  },
3059
3095
  {
3060
3096
  capabilities: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.99.0",
3
+ "version": "1.100.0",
4
4
  "description": "Model Context Protocol server for PandaStudio. Exposes the desktop video editor's automation surface to Cursor, Continue, Cline, Claude Desktop, and any MCP-compliant client.",
5
5
  "keywords": [
6
6
  "pandastudio",