@writepanda/mcp 1.11.1 → 1.12.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 +64 -1
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -684,6 +684,54 @@ const TOOLS = [
|
|
|
684
684
|
command: "project.set-style",
|
|
685
685
|
},
|
|
686
686
|
|
|
687
|
+
{
|
|
688
|
+
name: "project_add_audio",
|
|
689
|
+
description:
|
|
690
|
+
"Add a background audio track (music, VO, ambient sound) to the project. The audio plays over the full mix from startMs and is exported automatically. Use project_remove_audio to remove it. Returns { overlayId } — save this to remove it later.",
|
|
691
|
+
inputSchema: {
|
|
692
|
+
type: "object",
|
|
693
|
+
properties: {
|
|
694
|
+
id: { type: "string" },
|
|
695
|
+
path: { type: "string" },
|
|
696
|
+
audioPath: {
|
|
697
|
+
type: "string",
|
|
698
|
+
description: "Absolute path to audio file (mp3, wav, aac, m4a, ogg)",
|
|
699
|
+
},
|
|
700
|
+
startMs: {
|
|
701
|
+
type: "number",
|
|
702
|
+
description: "Where in the edited timeline playback starts. Default 0.",
|
|
703
|
+
},
|
|
704
|
+
volume: { type: "number", description: "Volume multiplier 0–2. Default 0.8." },
|
|
705
|
+
maxDurationMs: {
|
|
706
|
+
type: "number",
|
|
707
|
+
description: "Clip the audio at this duration. Omit to play the full file.",
|
|
708
|
+
},
|
|
709
|
+
expectedRevision: { type: "number" },
|
|
710
|
+
},
|
|
711
|
+
required: ["audioPath"],
|
|
712
|
+
},
|
|
713
|
+
command: "project.add-audio",
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
name: "project_remove_audio",
|
|
717
|
+
description:
|
|
718
|
+
"Remove a background audio overlay by its id. Use project_read to find overlay ids in project.audioOverlays.",
|
|
719
|
+
inputSchema: {
|
|
720
|
+
type: "object",
|
|
721
|
+
properties: {
|
|
722
|
+
id: { type: "string" },
|
|
723
|
+
path: { type: "string" },
|
|
724
|
+
overlayId: {
|
|
725
|
+
type: "string",
|
|
726
|
+
description: "Audio overlay id (e.g. audio-1) from project.audioOverlays",
|
|
727
|
+
},
|
|
728
|
+
expectedRevision: { type: "number" },
|
|
729
|
+
},
|
|
730
|
+
required: ["overlayId"],
|
|
731
|
+
},
|
|
732
|
+
command: "project.remove-audio",
|
|
733
|
+
},
|
|
734
|
+
|
|
687
735
|
// ── transcript-based editing ────────────────────────────────────
|
|
688
736
|
{
|
|
689
737
|
name: "transcript_transcribe",
|
|
@@ -914,7 +962,7 @@ const TOOLS = [
|
|
|
914
962
|
{
|
|
915
963
|
name: "motion_render_html",
|
|
916
964
|
description:
|
|
917
|
-
"Render arbitrary HTML/CSS/JS to an MP4. Use this when the bundled motion-graphic templates don't fit the brief
|
|
965
|
+
"Render arbitrary HTML/CSS/JS to an MP4. Use this when the bundled motion-graphic templates don't fit the brief. Pass either inline `html` or a `htmlPath`. Animations should auto-start on DOMContentLoaded. 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 MP4.",
|
|
918
966
|
inputSchema: {
|
|
919
967
|
type: "object",
|
|
920
968
|
properties: {
|
|
@@ -935,6 +983,21 @@ const TOOLS = [
|
|
|
935
983
|
durationMs: { type: "number", description: "How long to capture. Default 2500." },
|
|
936
984
|
frameRate: { type: "number", description: "Default 30." },
|
|
937
985
|
outputName: { type: "string", description: "Optional filename stem." },
|
|
986
|
+
audioPath: {
|
|
987
|
+
type: "string",
|
|
988
|
+
description:
|
|
989
|
+
"Absolute path to an audio file (mp3, wav, aac, m4a) to mux into the MP4. Without this the output is silent.",
|
|
990
|
+
},
|
|
991
|
+
audioVolume: {
|
|
992
|
+
type: "number",
|
|
993
|
+
description: "Volume multiplier for audioPath. Range 0–2. Default 1.0.",
|
|
994
|
+
},
|
|
995
|
+
assets: {
|
|
996
|
+
type: "array",
|
|
997
|
+
items: { type: "string" },
|
|
998
|
+
description:
|
|
999
|
+
"Absolute paths to local files to stage alongside inline HTML. Reference them by basename: pass [\"/path/logo.png\"] and use <img src=\"logo.png\"> in the HTML. Avoids base64-encoding large images.",
|
|
1000
|
+
},
|
|
938
1001
|
},
|
|
939
1002
|
},
|
|
940
1003
|
command: "motion.render-html",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.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",
|