@writepanda/mcp 1.32.0 → 1.33.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 +29 -2
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -489,13 +489,17 @@ const TOOLS = [
489
489
  {
490
490
  name: "project_add_motion_graphic",
491
491
  description:
492
- "Drop a motion-graphic MP4 (typically the output of motion_render_html) onto the timeline. Optional SFX plays when it appears.",
492
+ "Drop a motion-graphic MP4 onto the timeline. The `file` argument MUST be the exact `outputPath` returned by a prior motion_render_html / motion_generate / motion_concat / motion_screenshot job — NEVER hand-author or guess this path. Optional SFX plays when it appears.",
493
493
  inputSchema: {
494
494
  type: "object",
495
495
  properties: {
496
496
  id: { type: "string" },
497
497
  path: { type: "string" },
498
- file: { type: "string", description: "Absolute path to MP4" },
498
+ file: {
499
+ type: "string",
500
+ description:
501
+ "Absolute path to the rendered MP4/WebM. MUST be the exact `outputPath` returned by motion_render_html (or motion_generate / motion_concat / motion_screenshot). Do NOT construct paths manually — guessed paths get truncated at whitespace (e.g. `/Users/.../Library/Application` from `Application Support`) and the overlay flickers and disappears in preview. If you don't have an outputPath, render one first.",
502
+ },
499
503
  durationMs: { type: "number" },
500
504
  atMs: { type: "number", description: "Default: end of timeline" },
501
505
  soundUrl: {
@@ -562,6 +566,29 @@ const TOOLS = [
562
566
  },
563
567
  command: "project.set-overlay-backdrop-blur",
564
568
  },
569
+ {
570
+ name: "project_set_overlay_crop",
571
+ description:
572
+ "Set or clear a source-pixel crop on a media overlay (image / video / motion graphic). Coordinates are normalized 0–1 over the overlay's NATIVE source dimensions (NOT the canvas) — independent of where the overlay is positioned on the timeline. Common uses: cut black bars off b-roll before compositing; isolate the centre column of a 16:9 clip when stacking it into a 9:16 short; zoom into one quadrant of a motion graphic. Omit x/y/width/height (or pass identity {0,0,1,1}) to clear the crop entirely. The renderer clamps out-of-range values so a malformed crop is at worst 'whole source'.",
573
+ inputSchema: {
574
+ type: "object",
575
+ properties: {
576
+ id: { type: "string" },
577
+ path: { type: "string" },
578
+ regionId: {
579
+ type: "string",
580
+ description: "Media-overlay region id from project.read.",
581
+ },
582
+ x: { type: "number", description: "Crop x origin in [0, 1) of source width." },
583
+ y: { type: "number", description: "Crop y origin in [0, 1) of source height." },
584
+ width: { type: "number", description: "Crop width in (0, 1] of source width." },
585
+ height: { type: "number", description: "Crop height in (0, 1] of source height." },
586
+ expectedRevision: { type: "number" },
587
+ },
588
+ required: ["regionId"],
589
+ },
590
+ command: "project.set-overlay-crop",
591
+ },
565
592
  {
566
593
  name: "project_add_fx",
567
594
  description: "Drop an FX overlay (bundled fxId or custom video URL) onto the timeline.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.32.0",
3
+ "version": "1.33.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",