@writepanda/mcp 1.30.0 → 1.31.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 +18 -44
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -489,7 +489,7 @@ const TOOLS = [
489
489
  {
490
490
  name: "project_add_motion_graphic",
491
491
  description:
492
- "Drop a motion-graphic MP4 (typically the output of motion_generate) onto the timeline. Optional SFX plays when it appears.",
492
+ "Drop a motion-graphic MP4 (typically the output of motion_render_html) onto the timeline. Optional SFX plays when it appears.",
493
493
  inputSchema: {
494
494
  type: "object",
495
495
  properties: {
@@ -520,7 +520,7 @@ const TOOLS = [
520
520
  backdropBlurStrength: {
521
521
  type: "number",
522
522
  description:
523
- "Frosted-glass backdrop blur sigma in 1080p-px. The compositor blurs the camera through the overlay's alpha shape — blur follows the visible content, not the bounding box. Editor's 'Glass' default is 24; 12 is subtle, 36+ is heavy. Pair with a transparent / glassMode render (motion_generate --transparent --glassMode OR motion_render_html --transparent) so the overlay has alpha for the mask to read. Omit or pass 0 to disable.",
523
+ "Frosted-glass backdrop blur sigma in 1080p-px. The compositor blurs the camera through the overlay's alpha shape — blur follows the visible content, not the bounding box. Editor's 'Glass' default is 24; 12 is subtle, 36+ is heavy. Pair with a transparent render (motion_render_html --transparent) so the overlay has alpha for the mask to read. Omit or pass 0 to disable.",
524
524
  },
525
525
  backdropBlurTint: {
526
526
  type: "string",
@@ -1416,20 +1416,18 @@ const TOOLS = [
1416
1416
  },
1417
1417
 
1418
1418
  // ── motion graphics ─────────────────────────────────────────────
1419
- {
1420
- name: "motion_list",
1421
- description:
1422
- "List every motion-graphic template (id, name, slots, defaults, aspectRatios). 20 templates ship today, including youtube-lower-third for YouTube-style name plates.",
1423
- inputSchema: { type: "object", properties: {} },
1424
- command: "motion.list",
1425
- },
1426
- {
1427
- name: "motion_themes",
1428
- description:
1429
- "List every style-pack theme (color overrides). default, mr-beast, mkbhd, kurzgesagt, veritasium.",
1430
- inputSchema: { type: "object", properties: {} },
1431
- command: "motion.themes",
1432
- },
1419
+ // `motion_list`, `motion_themes`, and `motion_generate` were
1420
+ // removed in v1.31.0. Those bundled-template tools are for the
1421
+ // in-app Gemma E2B local model (which can't author HTML); they
1422
+ // were never on the agent's surface from a product standpoint
1423
+ // but the MCP schema previously exposed them, and the mere
1424
+ // presence of `motion_generate` in the tool list lured agents
1425
+ // into picking it over the architecturally-correct
1426
+ // `motion_render_html`. The bundled templates use flat
1427
+ // solid-color backgrounds and CSS keyframes — they don't meet
1428
+ // the aesthetic baseline (the Hyperframes example gallery)
1429
+ // that agents are expected to clear. Removing the tools
1430
+ // eliminates the temptation. Agents now author HTML directly.
1433
1431
  {
1434
1432
  name: "media_generate_image",
1435
1433
  description:
@@ -1464,32 +1462,8 @@ const TOOLS = [
1464
1462
  },
1465
1463
  command: "media.generate-image",
1466
1464
  },
1467
- {
1468
- name: "motion_generate",
1469
- description:
1470
- "Render a motion graphic asynchronously. Returns { jobId, outputPath }; call job_wait. Output is an MP4 you can pass to project_add_motion_graphic — OR a transparent WebM when `transparent` / `glassMode` is set. Use templateId=youtube-lower-third (slots: channelName, handle, accentColor) for YouTube-style name plates with avatar + Subscribe button. Set glassMode=true to render the template as a frosted-glass card on a transparent canvas — pair with backdropBlurStrength on project_add_motion_graphic for the full Apple/Premiere-grade glass look.",
1471
- inputSchema: {
1472
- type: "object",
1473
- properties: {
1474
- templateId: { type: "string", description: "From motion_list" },
1475
- slots: { type: "object", description: "Slot values (theme already resolved)" },
1476
- aspectRatio: { type: "string", description: "16:9 | 9:16 | 1:1" },
1477
- outputName: { type: "string", description: "Optional filename stem" },
1478
- transparent: {
1479
- type: "boolean",
1480
- description:
1481
- "Render with a transparent background (alpha WebM via VP9/yuva420p). Required when you intend to attach backdropBlurStrength on the resulting region — frosted-glass blur only reads through an alpha-shape mask. Output extension is .webm, not .mp4.",
1482
- },
1483
- glassMode: {
1484
- type: "boolean",
1485
- description:
1486
- "Apply the shared glass-mode CSS pass before rendering — hides the template's solid-bg decorations (vignette, perspective grid, film-grain) and wraps content in a translucent rounded glass card. Implies transparent=true (alpha WebM output). Pair with backdropBlurStrength=24 + backdropBlurTint='rgba(10,10,10,0.18)' on project_add_motion_graphic to deliver the full frosted-glass look the in-app 'Glass' background mode produces. The motion graphic's content (text, accents, items) renders crisp on top of the camera-blurred glass card.",
1487
- },
1488
- },
1489
- required: ["templateId", "slots"],
1490
- },
1491
- command: "motion.generate",
1492
- },
1465
+ // `motion_generate` removed in v1.31.0 — see comment above the
1466
+ // motion-graphics section. Authoring path is `motion_render_html`.
1493
1467
  {
1494
1468
  name: "motion_render_html",
1495
1469
  description:
@@ -1578,7 +1552,7 @@ const TOOLS = [
1578
1552
  {
1579
1553
  name: "motion_concat",
1580
1554
  description:
1581
- "Concatenate multiple MP4s into one final video using a lossless stream copy (no re-encode — fast). All clips must share the same resolution and codec; all motion_render_html / motion_generate outputs qualify automatically. Use this after rendering individual scenes to assemble the final promo. Returns { outputPath, clipCount } directly.",
1555
+ "Concatenate multiple MP4s into one final video using a lossless stream copy (no re-encode — fast). All clips must share the same resolution and codec; all motion_render_html outputs qualify automatically. Use this after rendering individual scenes to assemble the final promo. Returns { outputPath, clipCount } directly.",
1582
1556
  inputSchema: {
1583
1557
  type: "object",
1584
1558
  required: ["clips"],
@@ -1852,7 +1826,7 @@ const TOOLS = [
1852
1826
  {
1853
1827
  name: "job_wait",
1854
1828
  description:
1855
- "Block server-side until an async job (transcribe, audio_clean, motion_generate, export_start) reaches a terminal state. Default timeout 60s, max 5 min. Always call this after kicking off async work.",
1829
+ "Block server-side until an async job (transcribe, audio_clean, motion_render_html, export_start) reaches a terminal state. Default timeout 60s, max 5 min. Always call this after kicking off async work.",
1856
1830
  inputSchema: {
1857
1831
  type: "object",
1858
1832
  properties: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.30.0",
3
+ "version": "1.31.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",