@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.
Files changed (2) hide show
  1. package/bin/server.mjs +76 -2
  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
- "Draw a person OUTLINE (colored keyline + drop shadow) around the cutout. Enable on 'remove' over a cream wallpaper for the VOX magazine-cutout look; also composes with 'blur'.",
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: "Whether the outline casts a drop shadow (lifted-sticker look). Default true.",
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.105.0",
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",