@writepanda/mcp 1.26.0 → 1.29.1

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 +73 -3
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -517,12 +517,51 @@ const TOOLS = [
517
517
  description:
518
518
  "Optional anchor end (source ms) for ranged anchoring — the region's duration tracks the source-time span instead of preserving its visible duration.",
519
519
  },
520
+ backdropBlurStrength: {
521
+ type: "number",
522
+ description:
523
+ "Frosted-glass backdrop blur sigma in 1080p-px. The compositor blurs the camera through the overlay's alpha shape — blur follows the visible content, not the bounding box. Editor's 'Glass' default is 24; 12 is subtle, 36+ is heavy. Pair with a transparent / glassMode render (motion_generate --transparent --glassMode OR motion_render_html --transparent) so the overlay has alpha for the mask to read. Omit or pass 0 to disable.",
524
+ },
525
+ backdropBlurTint: {
526
+ type: "string",
527
+ description:
528
+ "Optional CSS color string composited over the blurred backdrop. Editor default: 'rgba(10,10,10,0.18)' (slight dark glass). Only applied when backdropBlurStrength > 0.",
529
+ },
520
530
  expectedRevision: { type: "number" },
521
531
  },
522
532
  required: ["file", "durationMs"],
523
533
  },
524
534
  command: "project.add-motion-graphic",
525
535
  },
536
+ {
537
+ name: "project_set_overlay_backdrop_blur",
538
+ description:
539
+ "Set or clear the frosted-glass backdrop-blur effect on an existing media-overlay region. Compositor blurs the camera (or whatever is underneath) through the overlay's alpha mask, so blur follows visible content shape — not a rectangular halo. Works on any media overlay (image / video / motion graphic) but visible only when the overlay has alpha; opaque overlays show no effect. Pass strength=0 to disable.",
540
+ inputSchema: {
541
+ type: "object",
542
+ properties: {
543
+ id: { type: "string" },
544
+ path: { type: "string" },
545
+ regionId: {
546
+ type: "string",
547
+ description: "Media-overlay region id from project.read.",
548
+ },
549
+ strength: {
550
+ type: "number",
551
+ description:
552
+ "Blur sigma in 1080p-px. 0 disables. Editor default 24; 12 subtle; 36+ heavy.",
553
+ },
554
+ tint: {
555
+ type: "string",
556
+ description:
557
+ "Optional CSS color string. Editor default: 'rgba(10,10,10,0.18)'. Ignored when strength is 0.",
558
+ },
559
+ expectedRevision: { type: "number" },
560
+ },
561
+ required: ["regionId"],
562
+ },
563
+ command: "project.set-overlay-backdrop-blur",
564
+ },
526
565
  {
527
566
  name: "project_add_fx",
528
567
  description: "Drop an FX overlay (bundled fxId or custom video URL) onto the timeline.",
@@ -857,6 +896,27 @@ const TOOLS = [
857
896
  },
858
897
  command: "project.split-clip",
859
898
  },
899
+ {
900
+ name: "project_move_clip",
901
+ description:
902
+ "Reorder a clip on the main track. `clipId` identifies the clip; `toIndex` is its new 0-based position after the move. Project-level regions (zooms, trims, speeds, annotations, FX, lower-thirds, media overlays, clip transforms) automatically migrate to follow their original clips so the user-perceived edits stay attached to the same content — a zoom that was 'into the explanation in clip 2' is still pointing at the same explanation after clip 2 moves to position 0. Per-clip transcripts ride on the clips themselves and don't need separate migration.",
903
+ inputSchema: {
904
+ type: "object",
905
+ properties: {
906
+ id: { type: "string" },
907
+ path: { type: "string" },
908
+ clipId: { type: "string", description: "Clip id to move" },
909
+ toIndex: {
910
+ type: "number",
911
+ description:
912
+ "0-based target position in the clips array (post-move). Out-of-range values clamp to bounds.",
913
+ },
914
+ expectedRevision: { type: "number" },
915
+ },
916
+ required: ["clipId", "toIndex"],
917
+ },
918
+ command: "project.move-clip",
919
+ },
860
920
 
861
921
  // ── compose: edit existing regions ─────────────────────────────
862
922
  {
@@ -1407,7 +1467,7 @@ const TOOLS = [
1407
1467
  {
1408
1468
  name: "motion_generate",
1409
1469
  description:
1410
- "Render a motion graphic asynchronously. Returns { jobId, outputPath }; call job_wait. Output is an MP4 you can pass to project_add_motion_graphic. Use templateId=youtube-lower-third (slots: channelName, handle, accentColor) for YouTube-style name plates with avatar + Subscribe button.",
1470
+ "Render a motion graphic asynchronously. Returns { jobId, outputPath }; call job_wait. Output is an MP4 you can pass to project_add_motion_graphic — OR a transparent WebM when `transparent` / `glassMode` is set. Use templateId=youtube-lower-third (slots: channelName, handle, accentColor) for YouTube-style name plates with avatar + Subscribe button. Set glassMode=true to render the template as a frosted-glass card on a transparent canvas — pair with backdropBlurStrength on project_add_motion_graphic for the full Apple/Premiere-grade glass look.",
1411
1471
  inputSchema: {
1412
1472
  type: "object",
1413
1473
  properties: {
@@ -1415,6 +1475,16 @@ const TOOLS = [
1415
1475
  slots: { type: "object", description: "Slot values (theme already resolved)" },
1416
1476
  aspectRatio: { type: "string", description: "16:9 | 9:16 | 1:1" },
1417
1477
  outputName: { type: "string", description: "Optional filename stem" },
1478
+ transparent: {
1479
+ type: "boolean",
1480
+ description:
1481
+ "Render with a transparent background (alpha WebM via VP9/yuva420p). Required when you intend to attach backdropBlurStrength on the resulting region — frosted-glass blur only reads through an alpha-shape mask. Output extension is .webm, not .mp4.",
1482
+ },
1483
+ glassMode: {
1484
+ type: "boolean",
1485
+ description:
1486
+ "Apply the shared glass-mode CSS pass before rendering — hides the template's solid-bg decorations (vignette, perspective grid, film-grain) and wraps content in a translucent rounded glass card. Implies transparent=true (alpha WebM output). Pair with backdropBlurStrength=24 + backdropBlurTint='rgba(10,10,10,0.18)' on project_add_motion_graphic to deliver the full frosted-glass look the in-app 'Glass' background mode produces. The motion graphic's content (text, accents, items) renders crisp on top of the camera-blurred glass card.",
1487
+ },
1418
1488
  },
1419
1489
  required: ["templateId", "slots"],
1420
1490
  },
@@ -1633,7 +1703,7 @@ const TOOLS = [
1633
1703
  {
1634
1704
  name: "export_start",
1635
1705
  description:
1636
- "Render the project to MP4 via the same Skia native render-helper the editor's Export button uses. ASYNC — returns { jobId, outputPath }; call job_wait. Honours every region/style/caption/FX/lower-third/motion-graphic. Video overlays (motion graphics added via project_add_motion_graphic) are automatically composited in a post-process FFmpeg pass both opaque MP4 and transparent WebM/VP9+alpha overlays are supported; no extra call needed.",
1706
+ "Render the project to MP4 via the same Tier-3 PixiJS pipeline the editor's Export Video button uses (v1.24+ — convergence release). When an editor window is already open on the target project, the agent reuses it. Otherwise the agent spawns a hidden editor window for the duration of the render and closes it after. ASYNC — returns { jobId, outputPath }; call job_wait. Honours every region/style/caption/FX/lower-third/motion-graphic in the project. Video overlays (motion graphics added via project_add_motion_graphic) — opaque MP4 and transparent WebM/VP9+alpha composite inline in the export pipeline; no extra call needed.",
1637
1707
  inputSchema: {
1638
1708
  type: "object",
1639
1709
  properties: {
@@ -1829,7 +1899,7 @@ const TOOLS = [
1829
1899
  const server = new Server(
1830
1900
  {
1831
1901
  name: "pandastudio",
1832
- version: "1.15.0",
1902
+ version: "1.17.0",
1833
1903
  },
1834
1904
  {
1835
1905
  capabilities: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.26.0",
3
+ "version": "1.29.1",
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",