@writepanda/mcp 1.105.0 → 1.109.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 +76 -2
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -1287,7 +1287,7 @@ const TOOLS = [
|
|
|
1287
1287
|
outline: {
|
|
1288
1288
|
type: "boolean",
|
|
1289
1289
|
description:
|
|
1290
|
-
"
|
|
1290
|
+
"Person OUTLINE (colored keyline + drop shadow) around the cutout — the VOX magazine-cutout look. DEFAULTS ON for mode 'remove'; pass outline:false to remove the background with no keyline. For 'blur' it's off unless set true.",
|
|
1291
1291
|
},
|
|
1292
1292
|
outlineWidth: {
|
|
1293
1293
|
type: "number",
|
|
@@ -1299,7 +1299,8 @@ const TOOLS = [
|
|
|
1299
1299
|
},
|
|
1300
1300
|
outlineShadow: {
|
|
1301
1301
|
type: "boolean",
|
|
1302
|
-
description:
|
|
1302
|
+
description:
|
|
1303
|
+
"Whether the outline casts a drop shadow (lifted-sticker look). Default true.",
|
|
1303
1304
|
},
|
|
1304
1305
|
matteContract: {
|
|
1305
1306
|
type: "number",
|
|
@@ -1925,6 +1926,46 @@ const TOOLS = [
|
|
|
1925
1926
|
},
|
|
1926
1927
|
command: "project.set-focal-point",
|
|
1927
1928
|
},
|
|
1929
|
+
{
|
|
1930
|
+
name: "project_auto_reframe",
|
|
1931
|
+
description:
|
|
1932
|
+
"ACTIVE-SPEAKER AUTO-REFRAME — a tracked virtual camera (Opus-Clip style) for director-cut footage (talk shows, interviews, multi-cam) reframed into a vertical/square canvas. Detects shot cuts, then densely tracks faces (MediaPipe, bundled offline, with tiling for small/far faces) and, on multi-person shots, frames WHOEVER IS TALKING (mouth-open × audio speech-energy) rather than the biggest face. The crop smoothly PANS to follow the subject within a shot and CUTS at shot boundaries, with a safe-zone clamp so the face never leaves frame. This is the right tool (not project_set_focal_point) when a landscape source with multiple/alternating people is cut to 9:16 — set-focal-point sets one static point for the whole clip. Async: opens a renderer for the dense pass (allow a couple minutes for a few-minute source). Optional zoom = fixed punch-in (omit for adaptive). Skips clips already matching the canvas aspect. clear=true reverts to the static crop. Preview and export render the crop identically, per frame.",
|
|
1933
|
+
inputSchema: {
|
|
1934
|
+
type: "object",
|
|
1935
|
+
properties: {
|
|
1936
|
+
id: { type: "string" },
|
|
1937
|
+
path: { type: "string" },
|
|
1938
|
+
clipId: {
|
|
1939
|
+
type: "string",
|
|
1940
|
+
description:
|
|
1941
|
+
"Target one clip (from project.read clipStates). Omit to reframe every landscape clip.",
|
|
1942
|
+
},
|
|
1943
|
+
threshold: {
|
|
1944
|
+
type: "number",
|
|
1945
|
+
description: "Scene-cut sensitivity 0-1 (default 0.3). Lower = more cuts.",
|
|
1946
|
+
},
|
|
1947
|
+
minShotMs: {
|
|
1948
|
+
type: "number",
|
|
1949
|
+
description: "Minimum shot length ms (default 500); closer cuts are merged.",
|
|
1950
|
+
},
|
|
1951
|
+
samplesPerShot: {
|
|
1952
|
+
type: "number",
|
|
1953
|
+
description: "Frames sampled per shot for the focal median (default 3).",
|
|
1954
|
+
},
|
|
1955
|
+
zoom: {
|
|
1956
|
+
type: "number",
|
|
1957
|
+
description:
|
|
1958
|
+
"Fixed punch-in (≥1) for every shot. Omit for the default ADAPTIVE zoom that sizes each speaker's face to a consistent fraction of the frame. Pass e.g. 1.3 to force a uniform punch-in.",
|
|
1959
|
+
},
|
|
1960
|
+
clear: {
|
|
1961
|
+
type: "boolean",
|
|
1962
|
+
description: "Remove the auto-reframe track(s), reverting to the static cover-crop.",
|
|
1963
|
+
},
|
|
1964
|
+
expectedRevision: { type: "number" },
|
|
1965
|
+
},
|
|
1966
|
+
},
|
|
1967
|
+
command: "project.auto-reframe",
|
|
1968
|
+
},
|
|
1928
1969
|
{
|
|
1929
1970
|
name: "project_set_export_settings",
|
|
1930
1971
|
description:
|
|
@@ -2257,6 +2298,34 @@ const TOOLS = [
|
|
|
2257
2298
|
},
|
|
2258
2299
|
command: "transcript.delete-words",
|
|
2259
2300
|
},
|
|
2301
|
+
{
|
|
2302
|
+
name: "transcript_insert_words",
|
|
2303
|
+
description:
|
|
2304
|
+
"Add word(s) the transcription MISSED — the counterpart to transcript_find_replace (which only rewrites words that already exist). Speech-to-text sometimes drops a spoken word; this inserts it with plausible timing (fills the gap the drop left, sized to the local speaking rate; borrows a few ms from the previous word when neighbours are flush). Anchor with EITHER afterWordId (insert right after that word — usual) OR beforeWordId (insert right before it — to add at the very start). Word ids come from transcript_get. `text` may be multiple space-separated words. Non-destructive — existing word ids are untouched, so trims/zooms/captions anchored elsewhere are unaffected. Does NOT re-transcribe.",
|
|
2305
|
+
inputSchema: {
|
|
2306
|
+
type: "object",
|
|
2307
|
+
properties: {
|
|
2308
|
+
id: { type: "string" },
|
|
2309
|
+
path: { type: "string" },
|
|
2310
|
+
afterWordId: {
|
|
2311
|
+
type: "string",
|
|
2312
|
+
description: "Insert immediately AFTER this word id (from transcript_get).",
|
|
2313
|
+
},
|
|
2314
|
+
beforeWordId: {
|
|
2315
|
+
type: "string",
|
|
2316
|
+
description:
|
|
2317
|
+
"Insert immediately BEFORE this word id (use to add at the very start). Provide exactly one of afterWordId / beforeWordId.",
|
|
2318
|
+
},
|
|
2319
|
+
text: {
|
|
2320
|
+
type: "string",
|
|
2321
|
+
description: "The word(s) to insert. Space-separated text inserts multiple words.",
|
|
2322
|
+
},
|
|
2323
|
+
expectedRevision: { type: "number" },
|
|
2324
|
+
},
|
|
2325
|
+
required: ["text"],
|
|
2326
|
+
},
|
|
2327
|
+
command: "transcript.insert-words",
|
|
2328
|
+
},
|
|
2260
2329
|
{
|
|
2261
2330
|
name: "transcript_restore_words",
|
|
2262
2331
|
description:
|
|
@@ -2474,6 +2543,11 @@ const TOOLS = [
|
|
|
2474
2543
|
description:
|
|
2475
2544
|
"Font size in REM, e.g. '2.6rem'. Clamped to 1.0–5.0rem (the editor's slider range).",
|
|
2476
2545
|
},
|
|
2546
|
+
uppercase: {
|
|
2547
|
+
type: "boolean",
|
|
2548
|
+
description:
|
|
2549
|
+
"Force ALL-CAPS caption text. true uppercases every caption word; false restores the template's own casing (use false to turn OFF a template that ships uppercase, e.g. 'editorial').",
|
|
2550
|
+
},
|
|
2477
2551
|
expectedRevision: { type: "number" },
|
|
2478
2552
|
},
|
|
2479
2553
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.109.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",
|