@writepanda/mcp 1.213.0 → 1.215.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 +35 -10
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -1520,7 +1520,8 @@ const TOOLS = [
1520
1520
  },
1521
1521
  replaceToMs: {
1522
1522
  type: "number",
1523
- description: "With atMs: cut [atMs, replaceToMs) (a trim) and put the clip there.",
1523
+ description:
1524
+ "With atMs: replace [atMs, replaceToMs), merge overlapping or adjacent cuts, and remove fully trimmed clips.",
1524
1525
  },
1525
1526
  expectedRevision: { type: "number" },
1526
1527
  },
@@ -1868,7 +1869,7 @@ const TOOLS = [
1868
1869
  {
1869
1870
  name: "project_add_transition",
1870
1871
  description:
1871
- "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 default. Snaps atMs to a cut within snapMs (default 500) and places the transition's default sound.",
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.",
1872
1873
  inputSchema: {
1873
1874
  type: "object",
1874
1875
  properties: {
@@ -1882,7 +1883,8 @@ const TOOLS = [
1882
1883
  atMs: { type: "number", description: "The cut (edited ms)." },
1883
1884
  durationMs: {
1884
1885
  type: "number",
1885
- description: "Default: the catalog's (1000 overlays, 900 torn-paper, 350 native).",
1886
+ description:
1887
+ "Default: the catalog's (1000 overlays, 900 torn-paper, 1000 cross-dissolve, 350 motion).",
1886
1888
  },
1887
1889
  snapMs: {
1888
1890
  type: "number",
@@ -3152,7 +3154,7 @@ const TOOLS = [
3152
3154
  {
3153
3155
  name: "project_set_webcam_layout",
3154
3156
  description:
3155
- "Project-level webcam layout, position, scale and crop. side-by-side: cx < 0.5 = camera left. Per-clip: project_set_clip_layout; vertical screen recordings: project_set_vertical_screen_layout.",
3157
+ "Project-level webcam layout, position, scale and crop. cutout: presenter over the full screen with camera background removed, no box; scale=1 gives 55% frame height, cy=1 allows the lower half offscreen. side-by-side: cx < 0.5 = camera left. Per-clip: project_set_clip_layout; vertical screen recordings: project_set_vertical_screen_layout.",
3156
3158
  inputSchema: {
3157
3159
  type: "object",
3158
3160
  properties: {
@@ -3161,6 +3163,7 @@ const TOOLS = [
3161
3163
  preset: {
3162
3164
  type: "string",
3163
3165
  enum: [
3166
+ "cutout",
3164
3167
  "picture-in-picture",
3165
3168
  "vertical-stack",
3166
3169
  "side-by-side",
@@ -3754,6 +3757,7 @@ const TOOLS = [
3754
3757
  "podcast",
3755
3758
  "podcast-host-full",
3756
3759
  "podcast-guest-full",
3760
+ "cutout",
3757
3761
  "picture-in-picture",
3758
3762
  "side-by-side",
3759
3763
  "vertical-stack",
@@ -3855,10 +3859,16 @@ const TOOLS = [
3855
3859
  },
3856
3860
  {
3857
3861
  name: "transcript_delete_words",
3858
- description: "Delete words (their spans become trims).",
3862
+ description:
3863
+ "Delete words with measured quiet cut edges; cuts without pauses warn. snapToAudio=false uses legacy timing.",
3859
3864
  inputSchema: {
3860
3865
  type: "object",
3861
3866
  properties: {
3867
+ snapToAudio: {
3868
+ type: "boolean",
3869
+ description:
3870
+ "Default true: measured quiet cuts; false uses legacy timing. Results include snapped/skipped/warnings.",
3871
+ },
3862
3872
  id: { type: "string" },
3863
3873
  path: { type: "string" },
3864
3874
  wordIds: { type: "array", items: { type: "string" } },
@@ -3903,10 +3913,16 @@ const TOOLS = [
3903
3913
  },
3904
3914
  {
3905
3915
  name: "transcript_remove_fillers",
3906
- description: "Trim filler words (um, uh, hmm) and immediate repeats.",
3916
+ description:
3917
+ "Trim fillers and repeats only when measured pauses surround them; skipped fillers intentionally remain. Returns snapped/skipped/warnings; snapToAudio=false opts out.",
3907
3918
  inputSchema: {
3908
3919
  type: "object",
3909
3920
  properties: {
3921
+ snapToAudio: {
3922
+ type: "boolean",
3923
+ description:
3924
+ "Default true: measured quiet cuts; false uses legacy timing. Results include snapped/skipped/warnings.",
3925
+ },
3910
3926
  id: { type: "string" },
3911
3927
  path: { type: "string" },
3912
3928
  aggressive: {
@@ -3972,14 +3988,22 @@ const TOOLS = [
3972
3988
  {
3973
3989
  name: "transcript_remove_silences",
3974
3990
  description:
3975
- "Trim silences (transcript gaps plus audio dead air). Returns { removedCount, totalTrimmedMs }.",
3991
+ "Remove measured quiet runs with a 50ms decay hold. Returns snapped/skipped/warnings; snapToAudio=false uses legacy timing.",
3976
3992
  inputSchema: {
3977
3993
  type: "object",
3978
3994
  properties: {
3995
+ snapToAudio: {
3996
+ type: "boolean",
3997
+ description:
3998
+ "Default true: measured quiet cuts; false uses legacy timing. Results include snapped/skipped/warnings.",
3999
+ },
3979
4000
  id: { type: "string" },
3980
4001
  path: { type: "string" },
3981
4002
  thresholdMs: { type: "number", description: "Default 600." },
3982
- paddingMs: { type: "number", description: "Kept around words, default 100." },
4003
+ paddingMs: {
4004
+ type: "number",
4005
+ description: "Legacy/fallback word guard, default 100. Measured audio uses a 50ms hold.",
4006
+ },
3983
4007
  expectedRevision: { type: "number" },
3984
4008
  },
3985
4009
  },
@@ -5623,14 +5647,15 @@ const TOOLS = [
5623
5647
  // ── preview overlay ─────────────────────────────────────────────
5624
5648
  {
5625
5649
  name: "preview_show",
5626
- description: "Open a floating live preview window to show the user your work.",
5650
+ description:
5651
+ "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.",
5627
5652
  inputSchema: {
5628
5653
  type: "object",
5629
5654
  properties: {
5630
5655
  id: { type: "string" },
5631
5656
  path: { type: "string" },
5632
5657
  atMs: { type: "number" },
5633
- autoplay: { type: "boolean", description: "Default true." },
5658
+ autoplay: { type: "boolean", description: "Default false. Start playback after seeking." },
5634
5659
  },
5635
5660
  },
5636
5661
  command: "preview.show",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.213.0",
3
+ "version": "1.215.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",