@writepanda/mcp 1.51.0 → 1.55.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 +18 -13
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -599,7 +599,7 @@ const TOOLS = [
599
599
  {
600
600
  name: "project_add_motion_graphic",
601
601
  description:
602
- "Drop a motion-graphic MP4/WebM onto the timeline. PREFERRED: pass `fromJob` (the jobId from motion_render_html / motion_generate / motion_concat) — the server resolves the outputPath internally, so you never handle the path string at all. Fallback: pass `file` (an absolute path) only for external/uploaded files. Optional SFX plays when it appears.",
602
+ "Drop a motion-graphic MP4/WebM onto the timeline. PREFERRED: pass `fromJob` (the jobId from motion_render_html / motion_generate / motion_concat) — the server resolves the outputPath internally, so you never handle the path string at all. Fallback: pass `file` (an absolute path) only for external/uploaded files. **Defaults to a `bundled:sound/mouse-click` SFX as the graphic appears** — pass `soundUrl: null` to make it silent, or any other `bundled:sound/<id>` to swap the sound.",
603
603
  inputSchema: {
604
604
  type: "object",
605
605
  properties: {
@@ -618,13 +618,13 @@ const TOOLS = [
618
618
  durationMs: { type: "number" },
619
619
  atMs: { type: "number", description: "Default: end of timeline" },
620
620
  soundUrl: {
621
- type: "string",
621
+ type: ["string", "null"],
622
622
  description:
623
- "Optional SFX played when the motion graphic appears. Bundled id (bundled:sound/<id>) like bundled:sound/message-pop, bundled:sound/swoosh-fast, etc. use asset_list_sounds to discover. No default.",
623
+ "SFX played when the motion graphic appears. Defaults to bundled:sound/mouse-click. Pass any other bundled id (bundled:sound/<id> bundled:sound/swoosh-fast, bundled:sound/message-pop, etc.; use asset_list_sounds to discover) to swap the sound, or pass null explicitly to make the graphic silent.",
624
624
  },
625
625
  soundVolume: {
626
626
  type: "number",
627
- description: "Sound volume 0–1. Default 1 when soundUrl is set.",
627
+ description: "Sound volume 0–1. Default 1. Ignored when soundUrl is null.",
628
628
  },
629
629
  anchorSourceMs: {
630
630
  type: "number",
@@ -690,13 +690,13 @@ const TOOLS = [
690
690
  description: "Slide-in/out window at each edge in ms. Default 320.",
691
691
  },
692
692
  soundUrl: {
693
- type: "string",
693
+ type: ["string", "null"],
694
694
  description:
695
- "Optional SFX when the segment appears. Bundled id (bundled:sound/<id>), absolute path, or file:// URL. Use asset_list_sounds to discover.",
695
+ "SFX when the segment appears. Defaults to bundled:sound/mouse-click (inherited from project.add-motion-graphic). Pass any other bundled:sound/<id> to swap, or pass null explicitly to make the segment silent.",
696
696
  },
697
697
  soundVolume: {
698
698
  type: "number",
699
- description: "Sound volume 0–1. Default 1 when soundUrl is set.",
699
+ description: "Sound volume 0–1. Default 1. Ignored when soundUrl is null.",
700
700
  },
701
701
  anchorSourceMs: {
702
702
  type: "number",
@@ -1125,7 +1125,7 @@ const TOOLS = [
1125
1125
  {
1126
1126
  name: "project_remove_region",
1127
1127
  description:
1128
- "Delete an existing region (zoom, trim, speed, annotation, fx, lower-third, overlay, audio-overlay) by its id. Use project_read to find region ids — visual regions live under editor.*Regions; audio overlays live under audioOverlays[]. Returns the updated project.",
1128
+ "Delete an existing region (zoom, trim, speed, annotation, fx, lower-third, overlay, clip-transform, audio-overlay) by its id. Use project_read to find region ids — visual regions live under editor.*Regions; audio overlays live under audioOverlays[]. If the region belongs to a link group (designed-segment pair: a clip-transform parking the camera into one half + the panel motion-graphic on the other half), deleting either half also removes its peer so the pair stays coherent. Returns the updated project.",
1129
1129
  inputSchema: {
1130
1130
  type: "object",
1131
1131
  properties: {
@@ -1134,7 +1134,7 @@ const TOOLS = [
1134
1134
  regionType: {
1135
1135
  type: "string",
1136
1136
  description:
1137
- "zoom | trim | speed | annotation | fx | lower-third | overlay | audio-overlay",
1137
+ "zoom | trim | speed | annotation | fx | lower-third | overlay | clip-transform | audio-overlay",
1138
1138
  },
1139
1139
  regionId: { type: "string", description: "id of the region to delete" },
1140
1140
  expectedRevision: { type: "number" },
@@ -1165,7 +1165,7 @@ const TOOLS = [
1165
1165
  {
1166
1166
  name: "project_update_region",
1167
1167
  description:
1168
- "Patch fields on an existing region without replacing it. Accepts any subset of the region's own properties — only the supplied fields are changed, everything else is preserved. Works on zoom (depth, focusX, focusY), trim (startMs, endMs), speed (startMs, endMs, speed), lower-third (content, subtitle, atMs, durationMs, designType, accentColor, textColor, backgroundColor, backgroundRadius, fontSize, fontFamily), fx (atMs, durationMs), annotation, overlay, and audio-overlay (startMs, endMs, sourceStartMs, volume — lets you drag-trim an audio overlay without removing it).",
1168
+ "Patch fields on an existing region without replacing it. Accepts any subset of the region's own properties — only the supplied fields are changed, everything else is preserved. Works on zoom (depth, focusX, focusY), trim (startMs, endMs), speed (startMs, endMs, speed), lower-third (content, subtitle, atMs, durationMs, designType, accentColor, textColor, backgroundColor, backgroundRadius, fontSize, fontFamily), fx (atMs, durationMs), annotation, overlay, clip-transform (startMs, endMs, preset, transitionMs), and audio-overlay (startMs, endMs, sourceStartMs, volume — lets you drag-trim an audio overlay without removing it). Time shifts on a link-grouped region (e.g. one half of a designed segment) propagate to every peer in the group so the pair stays coherent.",
1169
1169
  inputSchema: {
1170
1170
  type: "object",
1171
1171
  properties: {
@@ -1174,7 +1174,7 @@ const TOOLS = [
1174
1174
  regionType: {
1175
1175
  type: "string",
1176
1176
  description:
1177
- "zoom | trim | speed | annotation | fx | lower-third | overlay | audio-overlay",
1177
+ "zoom | trim | speed | annotation | fx | lower-third | overlay | clip-transform | audio-overlay",
1178
1178
  },
1179
1179
  regionId: { type: "string", description: "id of the region to update" },
1180
1180
  patch: {
@@ -1509,12 +1509,17 @@ const TOOLS = [
1509
1509
  {
1510
1510
  name: "transcript_remove_fillers",
1511
1511
  description:
1512
- "Auto-detect filler words ('um', 'uh', 'like', 'you know', ...) plus immediately-repeated words and bulk-trim them.",
1512
+ "Auto-detect filler words and bulk-trim them. By DEFAULT removes only vocalised pauses (um, uh, uhm, umm, hmm, hm) — sounds with no lexical meaning, so removing every occurrence never breaks a sentence. Pass aggressive=true to ALSO catch lexical-word fillers (like, you know, i mean, sort of, kind of); these can false-positive on legitimate uses ('I like this template' loses 'like'), so the agent should only opt in when the user explicitly asks for a thorough cleanup. Also strips immediately-repeated words ('the the') unless includeRepeats=false.",
1513
1513
  inputSchema: {
1514
1514
  type: "object",
1515
1515
  properties: {
1516
1516
  id: { type: "string" },
1517
1517
  path: { type: "string" },
1518
+ aggressive: {
1519
+ type: "boolean",
1520
+ description:
1521
+ "Include lexical-word fillers (like, you know, i mean, sort of, kind of) in addition to vocalised pauses. False positives possible on legitimate uses. Default false.",
1522
+ },
1518
1523
  includeRepeats: { type: "boolean", description: "Default true" },
1519
1524
  expectedRevision: { type: "number" },
1520
1525
  },
@@ -2225,7 +2230,7 @@ const TOOLS = [
2225
2230
  const server = new Server(
2226
2231
  {
2227
2232
  name: "pandastudio",
2228
- version: "1.19.0",
2233
+ version: "1.55.0",
2229
2234
  },
2230
2235
  {
2231
2236
  capabilities: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.51.0",
3
+ "version": "1.55.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",