@writepanda/mcp 1.106.0 → 1.110.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 +75 -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:
@@ -2502,6 +2543,11 @@ const TOOLS = [
2502
2543
  description:
2503
2544
  "Font size in REM, e.g. '2.6rem'. Clamped to 1.0–5.0rem (the editor's slider range).",
2504
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
+ },
2505
2551
  expectedRevision: { type: "number" },
2506
2552
  },
2507
2553
  },
@@ -2958,6 +3004,33 @@ const TOOLS = [
2958
3004
  inputSchema: { type: "object", properties: {} },
2959
3005
  command: "export.list",
2960
3006
  },
3007
+ {
3008
+ name: "export_set_details",
3009
+ description:
3010
+ "Set an export's YouTube-facing details — title, description, and/or chapter timestamps (the fields in the export's Content tab). Pass only what you want to change. Call this when the user asks to update the title/description of an export. `id` is the export-library entry id; when the user is on the export page it is available to the agent as exportPage.entryId in the editor context (else call export_list to find it).",
3011
+ inputSchema: {
3012
+ type: "object",
3013
+ properties: {
3014
+ id: { type: "string", description: "Export-library entry id." },
3015
+ title: { type: "string", description: "New video title." },
3016
+ description: { type: "string", description: "New video description." },
3017
+ timestamps: {
3018
+ type: "array",
3019
+ description:
3020
+ "Chapter timestamps as an array of { timeMs, label } objects, sorted ascending. Omit to leave unchanged.",
3021
+ items: {
3022
+ type: "object",
3023
+ properties: {
3024
+ timeMs: { type: "number" },
3025
+ label: { type: "string" },
3026
+ },
3027
+ },
3028
+ },
3029
+ },
3030
+ required: ["id"],
3031
+ },
3032
+ command: "export.set-details",
3033
+ },
2961
3034
  {
2962
3035
  name: "export_generate_thumbnail",
2963
3036
  description:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.106.0",
3
+ "version": "1.110.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",