@writepanda/mcp 1.98.0 → 1.99.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.
- package/bin/server.mjs +48 -6
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -854,7 +854,7 @@ const TOOLS = [
|
|
|
854
854
|
{
|
|
855
855
|
name: "project_add_motion_graphic",
|
|
856
856
|
description:
|
|
857
|
-
"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. Also accepts `file: 'bundled:transition/<id>'` (ids from asset_list_transitions) — the house-opener pattern: a bundled transition placed as an overlay auto-stamps transitionId so it COVER-fits any canvas (a 16:9 sweep fills a 9:16 frame) and carries its SFX via soundUrl. **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.",
|
|
857
|
+
"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. Also accepts `file: 'bundled:transition/<id>'` (ids from asset_list_transitions) — the house-opener pattern: a bundled transition placed as an overlay auto-stamps transitionId so it COVER-fits any canvas (a 16:9 sweep fills a 9:16 frame) and carries its SFX via soundUrl. Image files (png/jpg/webp/gif/avif) are detected and render as image overlays; pair `file: <image>` with `layer: 'background'` for a timed BACKGROUND-IMAGE underlay (cover-fills the canvas behind the camera — with a background-effect remove region over the same span, the image replaces the speaker's real background for just that duration). **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.",
|
|
858
858
|
inputSchema: {
|
|
859
859
|
type: "object",
|
|
860
860
|
properties: {
|
|
@@ -1223,6 +1223,48 @@ const TOOLS = [
|
|
|
1223
1223
|
},
|
|
1224
1224
|
command: "project.add-spotlight",
|
|
1225
1225
|
},
|
|
1226
|
+
{
|
|
1227
|
+
name: "project_add_background_effect",
|
|
1228
|
+
description:
|
|
1229
|
+
"Add a BACKGROUND EFFECT region on the camera video: AI person segmentation runs between startMs and endMs and either BLURS the background behind the speaker (mode 'blur' — video-call style) or REMOVES it so the project wallpaper shows through behind them (mode 'remove'). Behaves exactly like a zoom region on the timeline: draggable, trimmable, source-anchored (pass anchorSourceMs when placing from a transcript word so it survives later trims). Camera / talking-head footage only. Preview and export render it identically. Find placed regions via project_read under editor.backgroundEffectRegions[]; retime/restyle with project_update_region (regionType 'background-effect'), delete with project_remove_region.",
|
|
1230
|
+
inputSchema: {
|
|
1231
|
+
type: "object",
|
|
1232
|
+
properties: {
|
|
1233
|
+
id: { type: "string" },
|
|
1234
|
+
path: { type: "string" },
|
|
1235
|
+
atMs: { type: "number", description: "Edited-time start (ms). Or pass startMs." },
|
|
1236
|
+
startMs: { type: "number", description: "Alias for atMs (edited-time start, ms)." },
|
|
1237
|
+
endMs: { type: "number", description: "Edited-time end (ms). Alternative to durationMs." },
|
|
1238
|
+
durationMs: {
|
|
1239
|
+
type: "number",
|
|
1240
|
+
description: "Duration in ms. Default 5000 when neither durationMs nor endMs given.",
|
|
1241
|
+
},
|
|
1242
|
+
mode: {
|
|
1243
|
+
type: "string",
|
|
1244
|
+
enum: ["blur", "remove"],
|
|
1245
|
+
description:
|
|
1246
|
+
'"blur" = person sharp, background gaussian-blurred. "remove" = background cut away; the project wallpaper/background shows through behind the person.',
|
|
1247
|
+
},
|
|
1248
|
+
strength: {
|
|
1249
|
+
type: "number",
|
|
1250
|
+
description:
|
|
1251
|
+
"Blur strength in px sigma at 1080p (mode='blur' only; ignored for 'remove'). 1-120, default 18.",
|
|
1252
|
+
},
|
|
1253
|
+
anchorSourceMs: {
|
|
1254
|
+
type: "number",
|
|
1255
|
+
description:
|
|
1256
|
+
"Anchor to a SOURCE-time moment (transcript word startMs). The region then re-anchors automatically on subsequent trim/speed edits.",
|
|
1257
|
+
},
|
|
1258
|
+
anchorSourceEndMs: {
|
|
1259
|
+
type: "number",
|
|
1260
|
+
description: "Optional anchor end (source ms) for ranged anchoring.",
|
|
1261
|
+
},
|
|
1262
|
+
expectedRevision: { type: "number" },
|
|
1263
|
+
},
|
|
1264
|
+
required: ["mode"],
|
|
1265
|
+
},
|
|
1266
|
+
command: "project.add-background-effect",
|
|
1267
|
+
},
|
|
1226
1268
|
{
|
|
1227
1269
|
name: "project_update_spotlight",
|
|
1228
1270
|
description:
|
|
@@ -1624,7 +1666,7 @@ const TOOLS = [
|
|
|
1624
1666
|
{
|
|
1625
1667
|
name: "project_remove_region",
|
|
1626
1668
|
description:
|
|
1627
|
-
"Delete an existing region (zoom, trim, speed, annotation, fx, 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.",
|
|
1669
|
+
"Delete an existing region (zoom, trim, speed, annotation, fx, overlay, clip-transform, background-effect, 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.",
|
|
1628
1670
|
inputSchema: {
|
|
1629
1671
|
type: "object",
|
|
1630
1672
|
properties: {
|
|
@@ -1633,7 +1675,7 @@ const TOOLS = [
|
|
|
1633
1675
|
regionType: {
|
|
1634
1676
|
type: "string",
|
|
1635
1677
|
description:
|
|
1636
|
-
"zoom | trim | speed | annotation | fx | overlay | clip-transform | audio-overlay",
|
|
1678
|
+
"zoom | trim | speed | annotation | fx | overlay | clip-transform | background-effect | audio-overlay",
|
|
1637
1679
|
},
|
|
1638
1680
|
regionId: { type: "string", description: "id of the region to delete" },
|
|
1639
1681
|
expectedRevision: { type: "number" },
|
|
@@ -1664,7 +1706,7 @@ const TOOLS = [
|
|
|
1664
1706
|
{
|
|
1665
1707
|
name: "project_update_region",
|
|
1666
1708
|
description:
|
|
1667
|
-
"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. Overlay geometry (x/y/width/height) is PERCENT of canvas 0-100; values <= 1 are treated as 0-1 fractions and scaled. Works on zoom (depth, focusX, focusY, focusMode: 'static'|'auto' — set 'auto' for the cursor-follow camera), trim (startMs, endMs), speed (startMs, endMs, speed), fx (atMs, durationMs, opacity, blendMode, speed), 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.",
|
|
1709
|
+
"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. Overlay geometry (x/y/width/height) is PERCENT of canvas 0-100; values <= 1 are treated as 0-1 fractions and scaled. Works on zoom (depth, focusX, focusY, focusMode: 'static'|'auto' — set 'auto' for the cursor-follow camera), trim (startMs, endMs), speed (startMs, endMs, speed), fx (atMs, durationMs, opacity, blendMode, speed), annotation, overlay, clip-transform (startMs, endMs, preset, transitionMs), background-effect (startMs, endMs, mode: 'blur'|'remove', strength), 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.",
|
|
1668
1710
|
inputSchema: {
|
|
1669
1711
|
type: "object",
|
|
1670
1712
|
properties: {
|
|
@@ -1673,7 +1715,7 @@ const TOOLS = [
|
|
|
1673
1715
|
regionType: {
|
|
1674
1716
|
type: "string",
|
|
1675
1717
|
description:
|
|
1676
|
-
"zoom | trim | speed | annotation | fx | overlay | clip-transform | audio-overlay",
|
|
1718
|
+
"zoom | trim | speed | annotation | fx | overlay | clip-transform | background-effect | audio-overlay",
|
|
1677
1719
|
},
|
|
1678
1720
|
regionId: { type: "string", description: "id of the region to update" },
|
|
1679
1721
|
patch: {
|
|
@@ -3012,7 +3054,7 @@ const TOOLS = [
|
|
|
3012
3054
|
const server = new Server(
|
|
3013
3055
|
{
|
|
3014
3056
|
name: "pandastudio",
|
|
3015
|
-
version: "1.
|
|
3057
|
+
version: "1.72.0",
|
|
3016
3058
|
},
|
|
3017
3059
|
{
|
|
3018
3060
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.99.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",
|