@writepanda/mcp 1.214.0 → 1.216.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 +28 -6
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -3154,7 +3154,7 @@ const TOOLS = [
3154
3154
  {
3155
3155
  name: "project_set_webcam_layout",
3156
3156
  description:
3157
- "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.",
3158
3158
  inputSchema: {
3159
3159
  type: "object",
3160
3160
  properties: {
@@ -3163,6 +3163,7 @@ const TOOLS = [
3163
3163
  preset: {
3164
3164
  type: "string",
3165
3165
  enum: [
3166
+ "cutout",
3166
3167
  "picture-in-picture",
3167
3168
  "vertical-stack",
3168
3169
  "side-by-side",
@@ -3756,6 +3757,7 @@ const TOOLS = [
3756
3757
  "podcast",
3757
3758
  "podcast-host-full",
3758
3759
  "podcast-guest-full",
3760
+ "cutout",
3759
3761
  "picture-in-picture",
3760
3762
  "side-by-side",
3761
3763
  "vertical-stack",
@@ -3857,10 +3859,16 @@ const TOOLS = [
3857
3859
  },
3858
3860
  {
3859
3861
  name: "transcript_delete_words",
3860
- 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.",
3861
3864
  inputSchema: {
3862
3865
  type: "object",
3863
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
+ },
3864
3872
  id: { type: "string" },
3865
3873
  path: { type: "string" },
3866
3874
  wordIds: { type: "array", items: { type: "string" } },
@@ -3905,10 +3913,16 @@ const TOOLS = [
3905
3913
  },
3906
3914
  {
3907
3915
  name: "transcript_remove_fillers",
3908
- 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.",
3909
3918
  inputSchema: {
3910
3919
  type: "object",
3911
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
+ },
3912
3926
  id: { type: "string" },
3913
3927
  path: { type: "string" },
3914
3928
  aggressive: {
@@ -3974,14 +3988,22 @@ const TOOLS = [
3974
3988
  {
3975
3989
  name: "transcript_remove_silences",
3976
3990
  description:
3977
- "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.",
3978
3992
  inputSchema: {
3979
3993
  type: "object",
3980
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
+ },
3981
4000
  id: { type: "string" },
3982
4001
  path: { type: "string" },
3983
4002
  thresholdMs: { type: "number", description: "Default 600." },
3984
- 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
+ },
3985
4007
  expectedRevision: { type: "number" },
3986
4008
  },
3987
4009
  },
@@ -5783,7 +5805,7 @@ Before an editing pass, read the skill's "Which tool for which moment" section (
5783
5805
  4. transcript_find_issues, then transcript_delete_words on each duplicate take / false start (keep the LAST take; keep severity "low" ones).
5784
5806
  5. transcript_remove_silences.
5785
5807
  6. audio_clean clips not yet cleaned.
5786
- 7. The style, after steps 2-5 (they shift the timeline). The user's named style, recipe, creator or a saved memory wins. Otherwise call recipe_pick: it returns the recipes that fit this project's format and footage, each with pickWhen, plus defaultId. Read the transcript, choose the ONE candidate whose pickWhen matches what is said (defaultId when none clearly fits), do its "before" step if any, then recipe_apply_style + recipe_render and follow the prompt: the recipe decides captions, graphics, zooms, music and transitions. (An app without recipe_pick, 2.0.5 and older: recipe_list with format short or long, and choose by description and footage.) Tell the user which recipe and why in one line and name one or two alternatives. Only when no candidate exists or the user asked for a plain clean-up: captions (caption_toggle, template glowStack), a few motion graphics, emphasis zooms.
5808
+ 7. The style, after steps 2-5 (they shift the timeline). The user's named style, recipe, creator or a saved memory wins. Otherwise call recipe_pick: it returns the recipes that fit this project's format and footage, each with pickWhen, plus defaultId. Read the transcript, choose the ONE candidate whose pickWhen matches what is said (defaultId when none clearly fits), do its "before" step if any, then recipe_apply_style + recipe_render and follow the prompt: the recipe decides the style (captions, pacing, kinds of moves, music, transitions). Graphics inside it are designed by you: a named template is the reference look; author your own (motion_render_html, same palette and type) when a beat needs something the template can't show. (An app without recipe_pick, 2.0.5 and older: recipe_list with format short or long, and choose by description and footage.) Tell the user which recipe and why in one line and name one or two alternatives. Only when no candidate exists or the user asked for a plain clean-up: captions (caption_toggle, template glowStack), a few motion graphics, emphasis zooms.
5787
5809
  8. B-roll, last: pick the moments yourself from what's said (any language), check them with project_check_broll, show the user your moments and ASK: their own images, generated on their image connector (only if one is connected; it uses their credits), or no B-roll. Never generate or invent images without their answer. Place what they give with project_add_broll. Nobody to ask: skip it and say so.
5788
5810
  9. llm_generate_title / description / timestamps, then preview_show and ask before export_start. Never export before the user has seen the preview.
5789
5811
  Report the real count each step returned. No music, intro/outro cards or FX overlays unless the recipe or the user asks for them.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.214.0",
3
+ "version": "1.216.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",