@writepanda/mcp 1.57.0 → 1.58.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 -3
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -986,7 +986,7 @@ const TOOLS = [
|
|
|
986
986
|
{
|
|
987
987
|
name: "project_add_clip_transform_region",
|
|
988
988
|
description:
|
|
989
|
-
"Time-bounded transform on the main video clip
|
|
989
|
+
"Time-bounded transform on the main video clip between startMs and endMs. TWO families of preset: (1) cam-* render the single clip inside a sub-rect of the canvas, freeing the rest for motion graphics (use ONLY on camera-only / user-uploaded recordings; for screen recordings use cursor-telemetry zooms). (2) layout-* swap the WHOLE podcast composite for the window — this is how you change a PODCAST's layout over time WITHIN ONE recording (e.g. side-by-side intro, then host-only while they talk, then back). Outside the region the clip renders with its natural layout. Renderer interpolates over `transitionMs` (default 320ms) at each boundary so the camera/tiles smoothly resize.",
|
|
990
990
|
inputSchema: {
|
|
991
991
|
type: "object",
|
|
992
992
|
required: ["startMs", "endMs", "preset"],
|
|
@@ -1004,9 +1004,17 @@ const TOOLS = [
|
|
|
1004
1004
|
"cam-left-portrait",
|
|
1005
1005
|
"cam-bottom-right-quarter",
|
|
1006
1006
|
"cam-bottom-left-quarter",
|
|
1007
|
+
"cam-right-55",
|
|
1008
|
+
"cam-left-55",
|
|
1009
|
+
"cam-right-50",
|
|
1010
|
+
"cam-left-50",
|
|
1011
|
+
"layout-side-by-side",
|
|
1012
|
+
"layout-podcast",
|
|
1013
|
+
"layout-host-full",
|
|
1014
|
+
"layout-guest-full",
|
|
1007
1015
|
],
|
|
1008
1016
|
description:
|
|
1009
|
-
"cam-bottom-half / cam-top-half
|
|
1017
|
+
"cam-* (camera reposition into a sub-rect): cam-bottom-half / cam-top-half (9:16); cam-right-portrait / cam-left-portrait (16:9 ~35% card); cam-bottom-right-quarter / cam-bottom-left-quarter (corner card); cam-right-55/left-55/right-50/left-50 (designed splits). layout-* (PODCAST ONLY — whole-composite swap over time): layout-side-by-side, layout-podcast (two equal tiles), layout-host-full (speaker 1 only), layout-guest-full (speaker 2 only). IMPORTANT: layout-* presets only do anything on a PODCAST clip (kind='podcast' — a clip with BOTH a host and a guest source). On any other clip there is no second speaker, so they are a no-op; use cam-* there. Check clip.kind via project_read before using layout-*.",
|
|
1010
1018
|
},
|
|
1011
1019
|
transitionMs: {
|
|
1012
1020
|
type: "number",
|
|
@@ -1498,6 +1506,31 @@ const TOOLS = [
|
|
|
1498
1506
|
},
|
|
1499
1507
|
command: "project.set-clip-layout",
|
|
1500
1508
|
},
|
|
1509
|
+
{
|
|
1510
|
+
name: "project_set_clip_style",
|
|
1511
|
+
description:
|
|
1512
|
+
"Set ONE clip's framing style — padding, borderRadius (roundness), and/or shadowIntensity (each 0–100) — overriding the project-level values for just that clip. Use in a multi-clip project to frame sources differently: e.g. a full-bleed camera clip (padding 0, borderRadius 0, shadowIntensity 0) next to a padded, rounded podcast clip. Pass a field as null to CLEAR its override (inherit project); omit a field to leave it unchanged. Project-level equivalents are project_set_style. Honored in preview + export.",
|
|
1513
|
+
inputSchema: {
|
|
1514
|
+
type: "object",
|
|
1515
|
+
properties: {
|
|
1516
|
+
id: { type: "string" },
|
|
1517
|
+
path: { type: "string" },
|
|
1518
|
+
clipId: { type: "string", description: "Clip id to style" },
|
|
1519
|
+
padding: { type: "number", description: "Padding 0–100; null clears, omit leaves as-is." },
|
|
1520
|
+
borderRadius: {
|
|
1521
|
+
type: "number",
|
|
1522
|
+
description: "Roundness 0–100; null clears, omit leaves as-is.",
|
|
1523
|
+
},
|
|
1524
|
+
shadowIntensity: {
|
|
1525
|
+
type: "number",
|
|
1526
|
+
description: "Shadow 0–100; null clears, omit leaves as-is.",
|
|
1527
|
+
},
|
|
1528
|
+
expectedRevision: { type: "number" },
|
|
1529
|
+
},
|
|
1530
|
+
required: ["clipId"],
|
|
1531
|
+
},
|
|
1532
|
+
command: "project.set-clip-style",
|
|
1533
|
+
},
|
|
1501
1534
|
|
|
1502
1535
|
// ── transcript-based editing ────────────────────────────────────
|
|
1503
1536
|
{
|
|
@@ -2271,7 +2304,7 @@ const TOOLS = [
|
|
|
2271
2304
|
const server = new Server(
|
|
2272
2305
|
{
|
|
2273
2306
|
name: "pandastudio",
|
|
2274
|
-
version: "1.
|
|
2307
|
+
version: "1.58.0",
|
|
2275
2308
|
},
|
|
2276
2309
|
{
|
|
2277
2310
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.58.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",
|