@writepanda/mcp 1.17.0 → 1.18.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 +66 -2
  2. package/package.json +1 -1
package/bin/server.mjs CHANGED
@@ -171,6 +171,13 @@ const TOOLS = [
171
171
  inputSchema: { type: "object", properties: {} },
172
172
  command: "project.list",
173
173
  },
174
+ {
175
+ name: "project_current",
176
+ description:
177
+ "Return the project currently loaded in the editor window: { project: {id, path, name, revision, clipCount} | null }. Use this when the user says 'edit what I'm working on' / 'the project that's open' — no need to ask them for an id. Returns { project: null } when no editor window is open.",
178
+ inputSchema: { type: "object", properties: {} },
179
+ command: "project.current",
180
+ },
174
181
  {
175
182
  name: "project_show",
176
183
  description:
@@ -253,7 +260,7 @@ const TOOLS = [
253
260
  {
254
261
  name: "project_add_motion_graphic",
255
262
  description:
256
- "Drop a motion-graphic MP4 (typically the output of motion_generate) onto the timeline.",
263
+ "Drop a motion-graphic MP4 (typically the output of motion_generate) onto the timeline. Optional SFX plays when it appears.",
257
264
  inputSchema: {
258
265
  type: "object",
259
266
  properties: {
@@ -262,6 +269,15 @@ const TOOLS = [
262
269
  file: { type: "string", description: "Absolute path to MP4" },
263
270
  durationMs: { type: "number" },
264
271
  atMs: { type: "number", description: "Default: end of timeline" },
272
+ soundUrl: {
273
+ type: "string",
274
+ description:
275
+ "Optional SFX played when the motion graphic appears. Bundled id (bundled:sound/<id>) like bundled:sound/message-pop, bundled:sound/swoosh-fast, etc. — use asset_list_sounds to discover. No default.",
276
+ },
277
+ soundVolume: {
278
+ type: "number",
279
+ description: "Sound volume 0–1. Default 1 when soundUrl is set.",
280
+ },
265
281
  expectedRevision: { type: "number" },
266
282
  },
267
283
  required: ["file", "durationMs"],
@@ -318,6 +334,15 @@ const TOOLS = [
318
334
  },
319
335
  fontSize: { type: "number", description: "Primary text font size in px. Default 28" },
320
336
  fontFamily: { type: "string", description: "CSS font family name. Default Inter" },
337
+ soundUrl: {
338
+ type: "string",
339
+ description:
340
+ 'SFX played when the lower third enters. Bundled id (bundled:sound/<id>). Default bundled:sound/mouse-click. Pass "none" for silent.',
341
+ },
342
+ soundVolume: {
343
+ type: "number",
344
+ description: "Sound volume 0–1. Default 0.8.",
345
+ },
321
346
  expectedRevision: { type: "number" },
322
347
  },
323
348
  required: ["content", "atMs"],
@@ -329,7 +354,7 @@ const TOOLS = [
329
354
  {
330
355
  name: "project_add_zoom",
331
356
  description:
332
- "Add a zoom region — highlight a UI moment. Typical pattern: find 'click X' in transcript, drop zoom there.",
357
+ "Add a zoom region — highlight a UI moment. Typical pattern: find 'click X' in transcript, drop zoom there. Ships with a short swoosh SFX by default; pass soundUrl=\"none\" for silent.",
333
358
  inputSchema: {
334
359
  type: "object",
335
360
  properties: {
@@ -340,12 +365,51 @@ const TOOLS = [
340
365
  depth: { type: "number", description: "1 (mild) - 6 (extreme). Default 3" },
341
366
  focusX: { type: "number", description: "Normalised 0-1 horizontal center. Default 0.5" },
342
367
  focusY: { type: "number", description: "Normalised 0-1 vertical center. Default 0.5" },
368
+ soundUrl: {
369
+ type: "string",
370
+ description:
371
+ 'SFX played at the zoom\'s leading edge. Bundled id (bundled:sound/<id>). Default bundled:sound/swoosh-fast. Pass "none" for silent.',
372
+ },
373
+ soundVolume: {
374
+ type: "number",
375
+ description: "Sound volume 0–1. Default 1.",
376
+ },
343
377
  expectedRevision: { type: "number" },
344
378
  },
345
379
  required: ["atMs", "durationMs"],
346
380
  },
347
381
  command: "project.add-zoom",
348
382
  },
383
+ {
384
+ name: "project_set_region_sound",
385
+ description:
386
+ 'Set or clear the sound effect on an existing region (zoom / motionGraphic / lowerThird / fx). Use to swap the default zoom swoosh, add a ding to a motion graphic, or mute a lower-third click. Pass soundUrl="none" to clear.',
387
+ inputSchema: {
388
+ type: "object",
389
+ properties: {
390
+ id: { type: "string" },
391
+ path: { type: "string" },
392
+ regionId: { type: "string", description: "Target region id" },
393
+ regionType: {
394
+ type: "string",
395
+ enum: ["zoom", "motionGraphic", "lowerThird", "fx"],
396
+ description: "Region kind that owns the id",
397
+ },
398
+ soundUrl: {
399
+ type: "string",
400
+ description:
401
+ 'Bundled id (bundled:sound/<id>), absolute path, or file:// URL. Pass "none" to clear.',
402
+ },
403
+ soundVolume: {
404
+ type: "number",
405
+ description: 'Sound volume 0–1. Ignored when soundUrl is "none". Default 1.',
406
+ },
407
+ expectedRevision: { type: "number" },
408
+ },
409
+ required: ["regionId", "regionType", "soundUrl"],
410
+ },
411
+ command: "project.set-region-sound",
412
+ },
349
413
  {
350
414
  name: "project_add_trim",
351
415
  description: "Mark a span the exporter SKIPS. Use directly for manual cuts.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@writepanda/mcp",
3
- "version": "1.17.0",
3
+ "version": "1.18.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",