@writepanda/mcp 1.205.0 → 1.207.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 +64 -6
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -577,7 +577,7 @@ const MOTION_ELEMENT_PROPS = {
|
|
|
577
577
|
content: {
|
|
578
578
|
type: ["object", "string", "array"],
|
|
579
579
|
description:
|
|
580
|
-
'keyword/chip/stamp/slam/behind/highlight { text } (or a bare string); count { value, to?, prefix?, suffix?, label?, decimals? } (value "20-30" = range); steps { items[], cues? (ms offsets from start) }; lowerThird { title, subtitle? (<=320 chars, wraps), look?: plate|plain|typewriter }; endCard { lines: [a, b] }; progress { label?, fromMs?, toMs? }; iconPop { emoji } | { icon }; frame { look: viewfinder | selection | corners, label? }; sticker { image: transparent PNG path, label? }; ticker { text (one story per line, <=2000 chars), label?, speed? (40-600 px/s) }; credits { title?, entries: [{ role?, name }] | "Role: Name" strings (<=200) }; crawl { title?, text (<=6000 chars), tilt? (0-80), turn? (-60..60) }. Any script, symbols and emoji draw.',
|
|
580
|
+
'keyword/chip/stamp/slam/behind/highlight { text } (or a bare string); count { value, to?, prefix?, suffix?, label?, decimals? } (value "20-30" = range); steps { items[], cues? (ms offsets from start) }; lowerThird { title, subtitle? (<=320 chars, wraps), look?: plate|plain|typewriter, typeSpeed? (typewriter pace, 5-80 chars/s, default ~22) }; endCard { lines: [a, b] }; progress { label?, fromMs?, toMs? }; iconPop { emoji } | { icon }; frame { look: viewfinder | selection | corners, label? }; sticker { image: transparent PNG path, label? }; ticker { text (one story per line, <=2000 chars), label?, speed? (40-600 px/s) }; credits { title?, entries: [{ role?, name }] | "Role: Name" strings (<=200) }; crawl { title?, text (<=6000 chars), tilt? (0-80), turn? (-60..60) }. Any script, symbols and emoji draw.',
|
|
581
581
|
},
|
|
582
582
|
atMs: { type: "number", description: "Start, edited ms. Or wordId." },
|
|
583
583
|
wordId: {
|
|
@@ -635,7 +635,7 @@ const TOOLS = [
|
|
|
635
635
|
{
|
|
636
636
|
name: "system_status",
|
|
637
637
|
description:
|
|
638
|
-
"App version and license; automationGated true = trial expired, every other tool fails; license.socialPublishing.allowed false = the plan has no Instagram/TikTok/social publishing (Creator, Team, Pro only). Call first.",
|
|
638
|
+
"App version and license; automationGated true = trial expired, or the Solo plan (license.agentEditing.allowed false: no agent editing, relay license.agentEditing.message to the user), and every other tool fails; license.socialPublishing.allowed false = the plan has no Instagram/TikTok/social publishing (Creator, Team, Pro only). Call first.",
|
|
639
639
|
inputSchema: { type: "object", properties: {} },
|
|
640
640
|
command: "system.status",
|
|
641
641
|
},
|
|
@@ -1300,7 +1300,8 @@ const TOOLS = [
|
|
|
1300
1300
|
},
|
|
1301
1301
|
{
|
|
1302
1302
|
name: "project_current",
|
|
1303
|
-
description:
|
|
1303
|
+
description:
|
|
1304
|
+
"The project open in the editor, or null, plus the editor's LIVE playhead read at call time: playhead { ms, timeBase: 'edited', durationMs, inCut, playing } (null + playheadNote when unavailable). playhead.ms is EDITED (output) ms, what add-* atMs takes. Call it when the user says 'here' / 'at the playhead' / 'now': the chat context's playhead is from when the message was sent.",
|
|
1304
1305
|
inputSchema: { type: "object", properties: {} },
|
|
1305
1306
|
command: "project.current",
|
|
1306
1307
|
},
|
|
@@ -1560,7 +1561,7 @@ const TOOLS = [
|
|
|
1560
1561
|
{
|
|
1561
1562
|
name: "project_add_designed_segment",
|
|
1562
1563
|
description:
|
|
1563
|
-
"Designed segment: host live on one half, a graphic panel on the other, in one call. The panel is a full-frame transparent render with the camera's half left empty (
|
|
1564
|
+
"Designed segment: host live on one half, a graphic panel on the other, in one call. The panel is a full-frame transparent render with the camera's half left empty (skill_read file='motion-templates' section='designed segments').",
|
|
1564
1565
|
inputSchema: {
|
|
1565
1566
|
type: "object",
|
|
1566
1567
|
properties: {
|
|
@@ -4520,6 +4521,24 @@ const TOOLS = [
|
|
|
4520
4521
|
},
|
|
4521
4522
|
command: "recipe.list",
|
|
4522
4523
|
},
|
|
4524
|
+
{
|
|
4525
|
+
name: "recipe_prepare_reference",
|
|
4526
|
+
description:
|
|
4527
|
+
"Prepare evidence for learning a reference video's editing style, without editing any project. Async job: whole-video contact sheets, dense motion samples, transition candidates and mixed-audio excerpts. Inspect the evidence and save a portable reference-specific recipe; do not assume generic effects or exact source sound files.",
|
|
4528
|
+
inputSchema: {
|
|
4529
|
+
type: "object",
|
|
4530
|
+
properties: {
|
|
4531
|
+
file: {
|
|
4532
|
+
type: "string",
|
|
4533
|
+
description: "Absolute local video path (download links with media_download_url first).",
|
|
4534
|
+
},
|
|
4535
|
+
title: { type: "string" },
|
|
4536
|
+
sourceUrl: { type: "string" },
|
|
4537
|
+
},
|
|
4538
|
+
required: ["file"],
|
|
4539
|
+
},
|
|
4540
|
+
command: "recipe.prepare-reference",
|
|
4541
|
+
},
|
|
4523
4542
|
{
|
|
4524
4543
|
name: "recipe_pick",
|
|
4525
4544
|
description:
|
|
@@ -4732,7 +4751,8 @@ const TOOLS = [
|
|
|
4732
4751
|
},
|
|
4733
4752
|
{
|
|
4734
4753
|
name: "motion_craft",
|
|
4735
|
-
description:
|
|
4754
|
+
description:
|
|
4755
|
+
"Launch / promo film craft library (story arcs, blueprints, GSAP rules, design presets): no id lists topics; id returns the doc. An unknown id fails with the closest ids and every valid id. Not the custom motion-graphic HTML contract: that is skill_read section='custom motion graphics'.",
|
|
4736
4756
|
inputSchema: {
|
|
4737
4757
|
type: "object",
|
|
4738
4758
|
properties: {
|
|
@@ -4782,7 +4802,7 @@ const TOOLS = [
|
|
|
4782
4802
|
{
|
|
4783
4803
|
name: "motion_render_html",
|
|
4784
4804
|
description:
|
|
4785
|
-
"Render custom HTML to video when no template fits. Contract (
|
|
4805
|
+
"Render custom HTML to video when no template fits. Contract (skill_read section='custom motion graphics'; render details in skill_read file='custom-html'): a paused GSAP timeline at window.__timelines[<data-composition-id>] and a root with data-composition-id / width / height / duration. Lint and STATIC_RENDER failures must be fixed, never placed. ASYNC: { jobId }.",
|
|
4786
4806
|
inputSchema: {
|
|
4787
4807
|
type: "object",
|
|
4788
4808
|
properties: {
|
|
@@ -4862,6 +4882,44 @@ const TOOLS = [
|
|
|
4862
4882
|
},
|
|
4863
4883
|
|
|
4864
4884
|
// ── assets ──────────────────────────────────────────────────────
|
|
4885
|
+
{
|
|
4886
|
+
name: "asset_list_sound_patterns",
|
|
4887
|
+
description:
|
|
4888
|
+
"List shared motion sound recipes: counted entrances, scroll ratchets, slides, swipes and presses. Use asset_plan_sound_pattern with actual animation timings.",
|
|
4889
|
+
inputSchema: { type: "object", properties: { query: { type: "string" } } },
|
|
4890
|
+
command: "asset.list-sound-patterns",
|
|
4891
|
+
},
|
|
4892
|
+
{
|
|
4893
|
+
name: "asset_plan_sound_pattern",
|
|
4894
|
+
description:
|
|
4895
|
+
"Plan motion-synced sounds without writing a project. Returns cues for project_add_sound_cues; use a unique group per animation. One cue per actual event, variant rotation, quiet starting gain, tails bounded by settle. Preview below narration.",
|
|
4896
|
+
inputSchema: {
|
|
4897
|
+
type: "object",
|
|
4898
|
+
properties: {
|
|
4899
|
+
pattern: { type: "string", description: "Id from asset_list_sound_patterns." },
|
|
4900
|
+
atMs: { type: "integer", minimum: 0, description: "Edited-timeline motion start." },
|
|
4901
|
+
endMs: { type: "integer", description: "Edited-timeline motion end/settle." },
|
|
4902
|
+
eventOffsetsMs: {
|
|
4903
|
+
type: "array",
|
|
4904
|
+
items: { type: "integer", minimum: 0 },
|
|
4905
|
+
minItems: 1,
|
|
4906
|
+
maxItems: 500,
|
|
4907
|
+
description:
|
|
4908
|
+
"Actual entrance/crossing/gesture offsets relative to atMs; strictly increasing. Follow easing, not an assumed uniform stagger.",
|
|
4909
|
+
},
|
|
4910
|
+
volume: { type: "number", minimum: 0, maximum: 2 },
|
|
4911
|
+
sounds: {
|
|
4912
|
+
type: "array",
|
|
4913
|
+
items: { type: "string" },
|
|
4914
|
+
minItems: 1,
|
|
4915
|
+
maxItems: 500,
|
|
4916
|
+
description: "Optional alternate ids/paths, rotated.",
|
|
4917
|
+
},
|
|
4918
|
+
},
|
|
4919
|
+
required: ["pattern", "atMs", "endMs", "eventOffsetsMs"],
|
|
4920
|
+
},
|
|
4921
|
+
command: "asset.plan-sound-pattern",
|
|
4922
|
+
},
|
|
4865
4923
|
{
|
|
4866
4924
|
name: "asset_list_emoji",
|
|
4867
4925
|
description: "List animated emoji for project_add_emoji.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.207.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",
|