@writepanda/mcp 1.19.0 → 1.21.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 +29 -12
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -558,7 +558,7 @@ const TOOLS = [
|
|
|
558
558
|
{
|
|
559
559
|
name: "project_remove_region",
|
|
560
560
|
description:
|
|
561
|
-
"Delete an existing region (zoom, trim, speed, annotation, fx, lower-third, overlay) by its
|
|
561
|
+
"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.",
|
|
562
562
|
inputSchema: {
|
|
563
563
|
type: "object",
|
|
564
564
|
properties: {
|
|
@@ -566,9 +566,10 @@ const TOOLS = [
|
|
|
566
566
|
path: { type: "string" },
|
|
567
567
|
regionType: {
|
|
568
568
|
type: "string",
|
|
569
|
-
description:
|
|
569
|
+
description:
|
|
570
|
+
"zoom | trim | speed | annotation | fx | lower-third | overlay | audio-overlay",
|
|
570
571
|
},
|
|
571
|
-
regionId: { type: "string", description: "
|
|
572
|
+
regionId: { type: "string", description: "id of the region to delete" },
|
|
572
573
|
expectedRevision: { type: "number" },
|
|
573
574
|
},
|
|
574
575
|
required: ["regionType", "regionId"],
|
|
@@ -578,7 +579,7 @@ const TOOLS = [
|
|
|
578
579
|
{
|
|
579
580
|
name: "project_update_region",
|
|
580
581
|
description:
|
|
581
|
-
"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, and overlay
|
|
582
|
+
"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).",
|
|
582
583
|
inputSchema: {
|
|
583
584
|
type: "object",
|
|
584
585
|
properties: {
|
|
@@ -586,13 +587,14 @@ const TOOLS = [
|
|
|
586
587
|
path: { type: "string" },
|
|
587
588
|
regionType: {
|
|
588
589
|
type: "string",
|
|
589
|
-
description:
|
|
590
|
+
description:
|
|
591
|
+
"zoom | trim | speed | annotation | fx | lower-third | overlay | audio-overlay",
|
|
590
592
|
},
|
|
591
|
-
regionId: { type: "string", description: "
|
|
593
|
+
regionId: { type: "string", description: "id of the region to update" },
|
|
592
594
|
patch: {
|
|
593
595
|
type: "object",
|
|
594
596
|
description:
|
|
595
|
-
"Fields to update (partial). E.g. { depth: 4 } to change zoom depth,
|
|
597
|
+
"Fields to update (partial). E.g. { depth: 4 } to change zoom depth, { content: 'New Name' } on a lower-third, or { startMs: 2000, endMs: 15000, sourceStartMs: 4000 } to shift + trim an audio overlay (play seconds 4–17 of the source from the 2s mark on the timeline).",
|
|
596
598
|
},
|
|
597
599
|
expectedRevision: { type: "number" },
|
|
598
600
|
},
|
|
@@ -758,7 +760,7 @@ const TOOLS = [
|
|
|
758
760
|
{
|
|
759
761
|
name: "project_add_audio",
|
|
760
762
|
description:
|
|
761
|
-
"Add a background audio
|
|
763
|
+
"Add a background audio overlay (music, VO, ambient) as a first-class timeline region. Plays from startMs to endMs on the edited timeline; sourceStartMs is the in-point into the source file. Waveform peaks are extracted automatically and stored on the overlay for the timeline UI. Use project_update_region (regionType=audio-overlay) to drag/trim it afterward. Returns { overlayId } — save this to trim/remove later.",
|
|
762
764
|
inputSchema: {
|
|
763
765
|
type: "object",
|
|
764
766
|
properties: {
|
|
@@ -770,12 +772,27 @@ const TOOLS = [
|
|
|
770
772
|
},
|
|
771
773
|
startMs: {
|
|
772
774
|
type: "number",
|
|
773
|
-
description: "Where
|
|
775
|
+
description: "Where on the edited timeline playback starts. Default 0.",
|
|
776
|
+
},
|
|
777
|
+
endMs: {
|
|
778
|
+
type: "number",
|
|
779
|
+
description:
|
|
780
|
+
"Where on the edited timeline playback ends. Precedence: endMs > maxDurationMs > durationMs. If all are omitted, defaults to the source file's real duration.",
|
|
781
|
+
},
|
|
782
|
+
sourceStartMs: {
|
|
783
|
+
type: "number",
|
|
784
|
+
description:
|
|
785
|
+
"In-point into the source file in ms. Default 0. Combine with endMs-startMs to play a window of the source (e.g. startMs=2000, endMs=15000, sourceStartMs=4000 plays seconds 4–17 of the source at timeline position 2–15s).",
|
|
786
|
+
},
|
|
787
|
+
durationMs: {
|
|
788
|
+
type: "number",
|
|
789
|
+
description: "Fallback duration when neither endMs nor maxDurationMs is given.",
|
|
774
790
|
},
|
|
775
791
|
volume: { type: "number", description: "Volume multiplier 0–2. Default 0.8." },
|
|
776
792
|
maxDurationMs: {
|
|
777
793
|
type: "number",
|
|
778
|
-
description:
|
|
794
|
+
description:
|
|
795
|
+
"[Legacy] Sets endMs = startMs + maxDurationMs when endMs is absent. Prefer endMs.",
|
|
779
796
|
},
|
|
780
797
|
expectedRevision: { type: "number" },
|
|
781
798
|
},
|
|
@@ -1058,7 +1075,7 @@ const TOOLS = [
|
|
|
1058
1075
|
{
|
|
1059
1076
|
name: "motion_render_html",
|
|
1060
1077
|
description:
|
|
1061
|
-
"Render arbitrary HTML/CSS/JS to video. Use this when the bundled motion-graphic templates don't fit the brief —
|
|
1078
|
+
"Render arbitrary HTML/CSS/JS to video via the HyperFrames engine — frame-perfect, seekable capture through chrome-headless-shell's BeginFrame API. Use this when the bundled motion-graphic templates don't fit the brief. The HTML MUST expose a paused GSAP timeline registered as `window.__timelines[<data-composition-id>] = tl` — NOT CSS keyframes, NOT setTimeout, NOT `window.__hf.seek` (that lower-level protocol skips the compositor invalidation wrapper and renders with 1-second stalls). See the SKILL.md `Custom motion graphics — HTML authoring` section for the required `data-composition-id`/`data-width`/`data-height`/`data-duration` root element, the canonical template, and pacing rules. Pass either inline `html` or `htmlPath`. Set `transparent: true` for a WebM+alpha overlay (lower thirds, watermarks). IMPORTANT: renders are sequential — call job_wait to completion before starting another render, or you'll get a RENDER_BUSY error. Async — returns { jobId, outputPath }; poll job_wait for the final file.",
|
|
1062
1079
|
inputSchema: {
|
|
1063
1080
|
type: "object",
|
|
1064
1081
|
properties: {
|
|
@@ -1177,7 +1194,7 @@ const TOOLS = [
|
|
|
1177
1194
|
{
|
|
1178
1195
|
name: "asset_list_music",
|
|
1179
1196
|
description:
|
|
1180
|
-
"List every bundled background music track
|
|
1197
|
+
"List every bundled background music track. Each track has: id, title, category, mood, durationMs, absolutePath, and agent-routing hints `intents` (e.g. product_video, kinetic_text, promo, intro, outro, tech_review, vlog, generic) and `recommendedFor` (youtube-long | shorts | linkedin | loom). Match on intents first when picking a track — use mood/category as tiebreakers. Use absolutePath with project_add_audio to attach a track to a project.",
|
|
1181
1198
|
inputSchema: { type: "object", properties: {} },
|
|
1182
1199
|
command: "asset.list-music",
|
|
1183
1200
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.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",
|