@writepanda/mcp 1.58.0 → 1.62.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 +46 -2
- package/package.json +43 -43
package/bin/server.mjs
CHANGED
|
@@ -646,6 +646,12 @@ const TOOLS = [
|
|
|
646
646
|
description:
|
|
647
647
|
"Optional CSS color string composited over the blurred backdrop. Editor default: 'rgba(10,10,10,0.18)' (slight dark glass). Only applied when backdropBlurStrength > 0.",
|
|
648
648
|
},
|
|
649
|
+
layer: {
|
|
650
|
+
type: "string",
|
|
651
|
+
enum: ["overlay", "background"],
|
|
652
|
+
description:
|
|
653
|
+
"'background' renders this full-frame graphic BEHIND the camera (graphic-background + talking-head-card layout) — pair it with a CARD camera clip-transform (cam-right-portrait / cam-bottom-right-quarter) over the same span. The camera card composites on top in preview AND export. Default 'overlay' (on top).",
|
|
654
|
+
},
|
|
649
655
|
expectedRevision: { type: "number" },
|
|
650
656
|
},
|
|
651
657
|
required: ["durationMs"],
|
|
@@ -1001,6 +1007,7 @@ const TOOLS = [
|
|
|
1001
1007
|
"cam-bottom-half",
|
|
1002
1008
|
"cam-top-half",
|
|
1003
1009
|
"cam-right-portrait",
|
|
1010
|
+
"cam-right-portrait-sm",
|
|
1004
1011
|
"cam-left-portrait",
|
|
1005
1012
|
"cam-bottom-right-quarter",
|
|
1006
1013
|
"cam-bottom-left-quarter",
|
|
@@ -1014,7 +1021,7 @@ const TOOLS = [
|
|
|
1014
1021
|
"layout-guest-full",
|
|
1015
1022
|
],
|
|
1016
1023
|
description:
|
|
1017
|
-
"cam-* (camera reposition into a sub-rect): cam-bottom-half / cam-top-half (9:16); cam-right-portrait / cam-left-portrait (16:9 ~35% card); cam-bottom-right-quarter / cam-bottom-left-quarter (corner card); cam-right-55/left-55/right-50/left-50 (designed splits). layout-* (PODCAST ONLY — whole-composite swap over time): layout-side-by-side, layout-podcast (two equal tiles), layout-host-full (speaker 1 only), layout-guest-full (speaker 2 only). IMPORTANT: layout-* presets only do anything on a PODCAST clip (kind='podcast' — a clip with BOTH a host and a guest source). On any other clip there is no second speaker, so they are a no-op; use cam-* there. Check clip.kind via project_read before using layout-*.",
|
|
1024
|
+
"cam-* (camera reposition into a sub-rect): cam-bottom-half / cam-top-half (9:16); cam-right-portrait / cam-left-portrait (16:9 ~35% card); cam-right-portrait-sm (small ~25% host card — for a full-frame graphic background); cam-bottom-right-quarter / cam-bottom-left-quarter (corner card); cam-right-55/left-55/right-50/left-50 (designed splits). layout-* (PODCAST ONLY — whole-composite swap over time): layout-side-by-side, layout-podcast (two equal tiles), layout-host-full (speaker 1 only), layout-guest-full (speaker 2 only). IMPORTANT: layout-* presets only do anything on a PODCAST clip (kind='podcast' — a clip with BOTH a host and a guest source). On any other clip there is no second speaker, so they are a no-op; use cam-* there. Check clip.kind via project_read before using layout-*.",
|
|
1018
1025
|
},
|
|
1019
1026
|
transitionMs: {
|
|
1020
1027
|
type: "number",
|
|
@@ -1843,7 +1850,7 @@ const TOOLS = [
|
|
|
1843
1850
|
slots: {
|
|
1844
1851
|
type: "object",
|
|
1845
1852
|
description:
|
|
1846
|
-
"Editable values keyed by slot key (see motion_list / the SKILL catalog): text strings, color hex strings, or list arrays. Omitted slots fall back to the template default.",
|
|
1853
|
+
"Editable values keyed by slot key (see motion_list / the SKILL catalog): text strings, color hex strings, or list arrays. An 'image'-typed slot (see its `type` in motion_list) takes an ABSOLUTE FILE PATH to an image — the server stages the file into the render, so you can pass a project-media path or a generated image (e.g. from media_generate_image). Omitted slots fall back to the template default.",
|
|
1847
1854
|
},
|
|
1848
1855
|
aspectRatio: {
|
|
1849
1856
|
type: "string",
|
|
@@ -1862,6 +1869,43 @@ const TOOLS = [
|
|
|
1862
1869
|
},
|
|
1863
1870
|
command: "motion.generate",
|
|
1864
1871
|
},
|
|
1872
|
+
// Video templates ("storyboards") — multi-scene, parameterized videos that
|
|
1873
|
+
// render several templates and concatenate them into one finished clip.
|
|
1874
|
+
{
|
|
1875
|
+
name: "motion_list_storyboards",
|
|
1876
|
+
description:
|
|
1877
|
+
"List the bundled VIDEO templates (storyboards). Unlike single-scene templates (motion_list), a storyboard is a whole short video: an ordered set of scenes plus a `params` brief you fill in once. Returns each storyboard's id, name, audience (youtube|podcaster|course), description, aspectRatios, and `params` (the brief: key, label, type string|color|asset, required, default — color params default to the workspace brand kit via brand.* sentinels). Use a storyboard when the user wants a finished intro/outro/episode-open/lesson-open rather than a single overlay. Render one with motion_generate_storyboard.",
|
|
1878
|
+
inputSchema: { type: "object", properties: {} },
|
|
1879
|
+
command: "motion.list-storyboards",
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
name: "motion_generate_storyboard",
|
|
1883
|
+
description:
|
|
1884
|
+
"Render a multi-scene VIDEO template (storyboard) by id. Fill the brief via `params`; missing color params fall back to the workspace brand kit, missing required text params fail fast. The server renders each scene and concatenates them into one MP4. Async — returns { jobId, outputPath, sceneCount }; call job_wait, then pass that jobId as `fromJob` to project_add_motion_graphic. Discover storyboards + their params with motion_list_storyboards.",
|
|
1885
|
+
inputSchema: {
|
|
1886
|
+
type: "object",
|
|
1887
|
+
properties: {
|
|
1888
|
+
storyboardId: {
|
|
1889
|
+
type: "string",
|
|
1890
|
+
description:
|
|
1891
|
+
"Storyboard id from motion_list_storyboards (e.g. youtube-creator-intro, podcast-episode-open, course-lesson-open).",
|
|
1892
|
+
},
|
|
1893
|
+
params: {
|
|
1894
|
+
type: "object",
|
|
1895
|
+
description:
|
|
1896
|
+
"The brief, keyed by param key (see motion_list_storyboards). Text and color values. Omitted color params fall back to the workspace brand kit; omitted required text params cause a fast failure.",
|
|
1897
|
+
},
|
|
1898
|
+
aspectRatio: {
|
|
1899
|
+
type: "string",
|
|
1900
|
+
enum: ["16:9", "9:16", "1:1"],
|
|
1901
|
+
description: "Defaults to the storyboard's first listed aspect.",
|
|
1902
|
+
},
|
|
1903
|
+
outputName: { type: "string", description: "Optional filename stem (no extension)." },
|
|
1904
|
+
},
|
|
1905
|
+
required: ["storyboardId"],
|
|
1906
|
+
},
|
|
1907
|
+
command: "motion.generate-storyboard",
|
|
1908
|
+
},
|
|
1865
1909
|
// Custom HTML authoring path is `motion_render_html` (for briefs no
|
|
1866
1910
|
// bundled template fits).
|
|
1867
1911
|
{
|
package/package.json
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
2
|
+
"name": "@writepanda/mcp",
|
|
3
|
+
"version": "1.62.0",
|
|
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
|
+
"keywords": [
|
|
6
|
+
"pandastudio",
|
|
7
|
+
"mcp",
|
|
8
|
+
"model-context-protocol",
|
|
9
|
+
"video-editor",
|
|
10
|
+
"agent",
|
|
11
|
+
"cursor",
|
|
12
|
+
"continue",
|
|
13
|
+
"cline",
|
|
14
|
+
"claude-desktop"
|
|
15
|
+
],
|
|
16
|
+
"author": "Kamala Kannan Sankarraj",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"homepage": "https://www.writepanda.ai/cli",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/kamskans/openscreen.git",
|
|
22
|
+
"directory": "packages/mcp"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/kamskans/openscreen/issues"
|
|
26
|
+
},
|
|
27
|
+
"type": "module",
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=18"
|
|
30
|
+
},
|
|
31
|
+
"bin": {
|
|
32
|
+
"writepanda-mcp": "./bin/server.mjs"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"bin",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
38
|
+
],
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.0.4"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
}
|
|
45
45
|
}
|