@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.
- package/bin/server.mjs +131 -6
- 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:
|
|
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
|
|
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:
|
|
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)
|
|
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:
|
|
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
|
|
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.
|
|
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",
|