@writepanda/mcp 1.66.0 → 1.69.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 +36 -8
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -561,6 +561,37 @@ const TOOLS = [
|
|
|
561
561
|
},
|
|
562
562
|
command: "project.new",
|
|
563
563
|
},
|
|
564
|
+
{
|
|
565
|
+
name: "project_fork_from_shot",
|
|
566
|
+
description:
|
|
567
|
+
"Fork an exported video's AI-generated shot into a new 9:16 project. Carries forward the source project's timing surgery (trim regions, transcript edits, speed regions, per-clip transcribed/audioCleaned status) but STRIPS every overlay row — zooms, FX, motion graphics, captions, transitions, lower thirds, annotations, clip-transforms, background music — because those were sized for 16:9 and don't fit a vertical short. The new project is cropped to the shot's [startMs, endMs] range, switched to 9:16, and ready to receive Shorts-native graphics/captions on top. Pass exportId + shotId from export.list (the shot lives under `entry.generatedShots[]`); the verb looks up the source project path, runs the fork, writes the new file, and returns its id + path. If the source project has been edited since export (revision drift) the verb returns `revision_mismatch` with the live revision; confirm with the user and retry with `force: true`. Returns { id, path, name, aspectRatio, sourceProjectPath, sourceProjectRevision, liveRevision, project }.",
|
|
568
|
+
inputSchema: {
|
|
569
|
+
type: "object",
|
|
570
|
+
properties: {
|
|
571
|
+
exportId: {
|
|
572
|
+
type: "string",
|
|
573
|
+
description: "Export library entry id (from export.list).",
|
|
574
|
+
},
|
|
575
|
+
shotId: {
|
|
576
|
+
type: "string",
|
|
577
|
+
description:
|
|
578
|
+
"Shot id (from the export entry's `generatedShots` array; produced by generate-shorts).",
|
|
579
|
+
},
|
|
580
|
+
aspectRatio: {
|
|
581
|
+
type: "string",
|
|
582
|
+
description:
|
|
583
|
+
"Target aspect. Defaults to '9:16' (the right answer for almost every shot generator output).",
|
|
584
|
+
},
|
|
585
|
+
force: {
|
|
586
|
+
type: "boolean",
|
|
587
|
+
description:
|
|
588
|
+
"Set true to fork even when the source project has drifted since export. Without it, drift returns revision_mismatch and the caller must confirm with the user first.",
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
required: ["exportId", "shotId"],
|
|
592
|
+
},
|
|
593
|
+
command: "project.fork-from-shot",
|
|
594
|
+
},
|
|
564
595
|
{
|
|
565
596
|
name: "project_open",
|
|
566
597
|
description:
|
|
@@ -1730,7 +1761,7 @@ const TOOLS = [
|
|
|
1730
1761
|
{
|
|
1731
1762
|
name: "caption_set_template",
|
|
1732
1763
|
description:
|
|
1733
|
-
"Pick a caption template: classic, modern, minimal, bold, spotlight, boxed, neon, colored,
|
|
1764
|
+
"Pick a caption template: classic, modern, minimal, bold, spotlight, boxed, neon, colored, or editorial. `editorial` is a magazine-emphasis style: the word being spoken right now renders large (and takes an accent color) while the rest of the line shrinks, so one big word sweeps across the line in time with the speech.",
|
|
1734
1765
|
inputSchema: {
|
|
1735
1766
|
type: "object",
|
|
1736
1767
|
properties: {
|
|
@@ -1747,7 +1778,6 @@ const TOOLS = [
|
|
|
1747
1778
|
"boxed",
|
|
1748
1779
|
"neon",
|
|
1749
1780
|
"colored",
|
|
1750
|
-
"texture",
|
|
1751
1781
|
"editorial",
|
|
1752
1782
|
],
|
|
1753
1783
|
},
|
|
@@ -1761,7 +1791,7 @@ const TOOLS = [
|
|
|
1761
1791
|
{
|
|
1762
1792
|
name: "caption_set_style",
|
|
1763
1793
|
description:
|
|
1764
|
-
"Override specific style properties of the caption overlay without changing the template. All fields are optional — pass only what you want to change. positionY controls vertical placement (0=top, 100=bottom, default 85). fontSize
|
|
1794
|
+
"Override specific style properties of the caption overlay without changing the template. All fields are optional — pass only what you want to change. positionY controls vertical placement (0=top, 100=bottom, default 85). fontSize is in REM (e.g. '2.6rem'), matching the editor's Font size slider; it is clamped to 1.0–5.0rem (a px value is converted to rem), so you can't exceed the editor's max.",
|
|
1765
1795
|
inputSchema: {
|
|
1766
1796
|
type: "object",
|
|
1767
1797
|
properties: {
|
|
@@ -1784,11 +1814,9 @@ const TOOLS = [
|
|
|
1784
1814
|
},
|
|
1785
1815
|
strokeColor: { type: "string", description: "Text stroke/outline color" },
|
|
1786
1816
|
strokeWidth: { type: "number", description: "Text stroke width in px" },
|
|
1787
|
-
fontSize: {
|
|
1788
|
-
texture: {
|
|
1817
|
+
fontSize: {
|
|
1789
1818
|
type: "string",
|
|
1790
|
-
|
|
1791
|
-
description: "Texture for the 'texture' caption template. Ignored by other templates.",
|
|
1819
|
+
description: "Font size in REM, e.g. '2.6rem'. Clamped to 1.0–5.0rem (the editor's slider range).",
|
|
1792
1820
|
},
|
|
1793
1821
|
expectedRevision: { type: "number" },
|
|
1794
1822
|
},
|
|
@@ -2372,7 +2400,7 @@ const TOOLS = [
|
|
|
2372
2400
|
const server = new Server(
|
|
2373
2401
|
{
|
|
2374
2402
|
name: "pandastudio",
|
|
2375
|
-
version: "1.
|
|
2403
|
+
version: "1.69.0",
|
|
2376
2404
|
},
|
|
2377
2405
|
{
|
|
2378
2406
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.69.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",
|