@writepanda/mcp 1.211.0 → 1.214.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 +131 -6
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -636,6 +636,84 @@ const MOTION_ELEMENT_PROPS = {
636
636
  anchor: { type: "string", enum: ["auto", "free"] },
637
637
  };
638
638
  const TOOLS = [
639
+ {
640
+ name: "folder_list",
641
+ description:
642
+ "Manage flat folders in the active workspace. Delete keeps projects unless deleteProjects is true.",
643
+ inputSchema: {
644
+ type: "object",
645
+ properties: {},
646
+ required: [],
647
+ },
648
+ command: "folder.list",
649
+ },
650
+ {
651
+ name: "folder_create",
652
+ description:
653
+ "Manage flat folders in the active workspace. Delete keeps projects unless deleteProjects is true.",
654
+ inputSchema: {
655
+ type: "object",
656
+ properties: {
657
+ name: {
658
+ type: "string",
659
+ },
660
+ },
661
+ required: ["name"],
662
+ },
663
+ command: "folder.create",
664
+ },
665
+ {
666
+ name: "folder_rename",
667
+ description:
668
+ "Manage flat folders in the active workspace. Delete keeps projects unless deleteProjects is true.",
669
+ inputSchema: {
670
+ type: "object",
671
+ properties: {
672
+ id: {
673
+ type: "string",
674
+ },
675
+ name: {
676
+ type: "string",
677
+ },
678
+ },
679
+ required: ["id", "name"],
680
+ },
681
+ command: "folder.rename",
682
+ },
683
+ {
684
+ name: "folder_delete",
685
+ description:
686
+ "Manage flat folders in the active workspace. Delete keeps projects unless deleteProjects is true.",
687
+ inputSchema: {
688
+ type: "object",
689
+ properties: {
690
+ id: {
691
+ type: "string",
692
+ },
693
+ deleteProjects: {
694
+ type: "boolean",
695
+ default: false,
696
+ },
697
+ },
698
+ required: ["id"],
699
+ },
700
+ command: "folder.delete",
701
+ },
702
+ {
703
+ name: "folder_contents",
704
+ description:
705
+ "Manage flat folders in the active workspace. Delete keeps projects unless deleteProjects is true.",
706
+ inputSchema: {
707
+ type: "object",
708
+ properties: {
709
+ id: {
710
+ type: "string",
711
+ },
712
+ },
713
+ required: ["id"],
714
+ },
715
+ command: "folder.contents",
716
+ },
639
717
  // ── system + discovery ──────────────────────────────────────────
640
718
  {
641
719
  name: "system_status",
@@ -1273,6 +1351,8 @@ const TOOLS = [
1273
1351
  inputSchema: {
1274
1352
  type: "object",
1275
1353
  properties: {
1354
+ folderId: { type: ["string", "null"], description: "Folder UUID" },
1355
+ topLevel: { type: "boolean" },
1276
1356
  allWorkspaces: { type: "boolean" },
1277
1357
  sortBy: { type: "string", enum: ["modifiedAt", "createdAt", "name"] },
1278
1358
  order: { type: "string", enum: ["desc", "asc"] },
@@ -1288,6 +1368,7 @@ const TOOLS = [
1288
1368
  inputSchema: {
1289
1369
  type: "object",
1290
1370
  properties: {
1371
+ folderId: { type: ["string", "null"], description: "Folder UUID" },
1291
1372
  id: { type: "string" },
1292
1373
  path: { type: "string" },
1293
1374
  folder: { type: "string" },
@@ -1315,6 +1396,7 @@ const TOOLS = [
1315
1396
  inputSchema: {
1316
1397
  type: "object",
1317
1398
  properties: {
1399
+ folderId: { type: ["string", "null"], description: "Folder UUID" },
1318
1400
  id: { type: "string" },
1319
1401
  path: { type: "string" },
1320
1402
  },
@@ -1377,6 +1459,9 @@ const TOOLS = [
1377
1459
  inputSchema: {
1378
1460
  type: "object",
1379
1461
  properties: {
1462
+ folderId: { type: ["string", "null"], description: "Folder UUID" },
1463
+ parentProjectId: { type: "string" },
1464
+ originKind: { type: "string", enum: ["agent", "recipe"] },
1380
1465
  name: { type: "string" },
1381
1466
  withMedia: { type: "array", items: { type: "string" } },
1382
1467
  },
@@ -1391,6 +1476,7 @@ const TOOLS = [
1391
1476
  inputSchema: {
1392
1477
  type: "object",
1393
1478
  properties: {
1479
+ folderId: { type: ["string", "null"], description: "Folder UUID" },
1394
1480
  exportId: { type: "string" },
1395
1481
  shotId: { type: "string" },
1396
1482
  aspectRatio: { type: "string", description: "Default 9:16." },
@@ -1434,7 +1520,8 @@ const TOOLS = [
1434
1520
  },
1435
1521
  replaceToMs: {
1436
1522
  type: "number",
1437
- description: "With atMs: cut [atMs, replaceToMs) (a trim) and put the clip there.",
1523
+ description:
1524
+ "With atMs: replace [atMs, replaceToMs), merge overlapping or adjacent cuts, and remove fully trimmed clips.",
1438
1525
  },
1439
1526
  expectedRevision: { type: "number" },
1440
1527
  },
@@ -1782,7 +1869,7 @@ const TOOLS = [
1782
1869
  {
1783
1870
  name: "project_add_transition",
1784
1871
  description:
1785
- "Place a transition centred on a cut (a clip boundary or a jump cut). kind overlay (fade-black, flash, glitch, torn-paper…) draws a WebM over the cut; kind native (zoom-blur, whip-left, whip-right, whip-up, spin) moves the footage itself (captions/graphics stay put), 350 ms default. Snaps atMs to a cut within snapMs (default 500) and places the transition's default sound.",
1872
+ "Place a transition centred on a cut (a clip boundary or a jump cut). Cross-dissolve blends the outgoing and incoming shots with linear alpha, without dipping to black. kind overlay (fade-black, flash, glitch, torn-paper…) draws a WebM over the cut; kind native (cross-dissolve, zoom-blur, whip-left, whip-right, whip-up, spin) moves the footage itself (captions/graphics stay put), 1000 ms for cross-dissolve, 350 ms for motion transitions. Snaps atMs to a cut within snapMs (default 500) and places the transition's default sound.",
1786
1873
  inputSchema: {
1787
1874
  type: "object",
1788
1875
  properties: {
@@ -1796,7 +1883,8 @@ const TOOLS = [
1796
1883
  atMs: { type: "number", description: "The cut (edited ms)." },
1797
1884
  durationMs: {
1798
1885
  type: "number",
1799
- description: "Default: the catalog's (1000 overlays, 900 torn-paper, 350 native).",
1886
+ description:
1887
+ "Default: the catalog's (1000 overlays, 900 torn-paper, 1000 cross-dissolve, 350 motion).",
1800
1888
  },
1801
1889
  snapMs: {
1802
1890
  type: "number",
@@ -3700,16 +3788,52 @@ const TOOLS = [
3700
3788
  },
3701
3789
 
3702
3790
  // ── transcript-based editing ────────────────────────────────────
3791
+ {
3792
+ name: "transcript_detect_language",
3793
+ description:
3794
+ "Guess a clip's language locally from up to 30 seconds. Returns guess or null when unavailable. Confirm with the user before cloud transcription.",
3795
+ inputSchema: {
3796
+ type: "object",
3797
+ properties: { id: { type: "string" }, path: { type: "string" }, clipId: { type: "string" } },
3798
+ },
3799
+ command: "transcript.detect-language",
3800
+ },
3801
+
3802
+ {
3803
+ name: "system_set_transcription_preferences",
3804
+ description:
3805
+ "Save workspace language and provider atomically. Confirm consent to upload audio for cloud. Cloud cannot use auto.",
3806
+ inputSchema: {
3807
+ type: "object",
3808
+ required: ["language", "provider"],
3809
+ properties: {
3810
+ language: { type: "string" },
3811
+ provider: { type: "string", enum: ["local", "deepgram", "elevenlabs"] },
3812
+ },
3813
+ },
3814
+ command: "system.set-transcription-preferences",
3815
+ },
3816
+
3703
3817
  {
3704
3818
  name: "transcript_transcribe",
3705
3819
  description:
3706
- "Transcribe clips with word timestamps (default: only clips without words). To REDO a transcript (wrong language, bad run) fix the language first, then force: true (all clips) or clipId. Word fixes are re-applied; tell the user about result droppedWordEdits[] (fixes that may need redoing). Each clip is transcribed only over the part it plays (head trim to out-point, e.g. one half of a split; result transcribedRanges[]). ASYNC: { jobId }, job_wait. Concurrent saves are merged and retried (three attempts). Exhausted conflicts report code revision_conflict / status 409 (job.errorDetails for async jobs).",
3820
+ "Transcribe clips with word timestamps (default: only clips without words). To REDO a transcript (wrong language, bad run) confirm language, pass per-run language and provider overrides, then force: true (all clips) or clipId. Word fixes are re-applied; tell the user about result droppedWordEdits[] (fixes that may need redoing). Each clip is transcribed only over the part it plays (head trim to out-point, e.g. one half of a split; result transcribedRanges[]). ASYNC: { jobId }, job_wait. Concurrent saves are merged and retried (three attempts). Exhausted conflicts report code revision_conflict / status 409 (job.errorDetails for async jobs).",
3707
3821
  inputSchema: {
3708
3822
  type: "object",
3709
3823
  properties: {
3710
3824
  id: { type: "string" },
3711
3825
  path: { type: "string" },
3712
3826
  clipId: { type: "string", description: "Only this clip, even if already transcribed." },
3827
+ language: {
3828
+ type: "string",
3829
+ description:
3830
+ "Per-run spoken language name (english, tamil, etc.). Cloud cannot use auto.",
3831
+ },
3832
+ provider: {
3833
+ type: "string",
3834
+ enum: ["local", "deepgram", "elevenlabs"],
3835
+ description: "Per-run provider. Audio is sent to the selected cloud provider.",
3836
+ },
3713
3837
  force: { type: "boolean", description: "Re-transcribe clips that already have words." },
3714
3838
  },
3715
3839
  },
@@ -5501,14 +5625,15 @@ const TOOLS = [
5501
5625
  // ── preview overlay ─────────────────────────────────────────────
5502
5626
  {
5503
5627
  name: "preview_show",
5504
- description: "Open a floating live preview window to show the user your work.",
5628
+ description:
5629
+ "Show and focus the editor, wait for media, seek to atMs within one frame and optionally start playback. Returns playheadMs and playing; errors report actual state.",
5505
5630
  inputSchema: {
5506
5631
  type: "object",
5507
5632
  properties: {
5508
5633
  id: { type: "string" },
5509
5634
  path: { type: "string" },
5510
5635
  atMs: { type: "number" },
5511
- autoplay: { type: "boolean", description: "Default true." },
5636
+ autoplay: { type: "boolean", description: "Default false. Start playback after seeking." },
5512
5637
  },
5513
5638
  },
5514
5639
  command: "preview.show",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.211.0",
3
+ "version": "1.214.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",