@writepanda/mcp 1.271.0 → 1.272.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 +17 -3
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -623,6 +623,11 @@ const MOTION_ELEMENT_PROPS = {
|
|
|
623
623
|
accent: { type: "string" },
|
|
624
624
|
highlight: { type: "string" },
|
|
625
625
|
text: { type: "string" },
|
|
626
|
+
surface: {
|
|
627
|
+
type: "string",
|
|
628
|
+
description:
|
|
629
|
+
"The element's own plate / pill / band colour (lowerThird plate, chip, endCard, ticker band). Default: the family's (clean = light card). Text left unset picks a readable ink.",
|
|
630
|
+
},
|
|
626
631
|
font: { type: "string" },
|
|
627
632
|
size: { type: "string", enum: ["xs", "s", "m", "l", "xl"] },
|
|
628
633
|
outline: { type: "boolean" },
|
|
@@ -783,6 +788,10 @@ const TOOLS = [
|
|
|
783
788
|
type: "string",
|
|
784
789
|
description: "What happened and your diagnosis (no user content).",
|
|
785
790
|
},
|
|
791
|
+
description: {
|
|
792
|
+
type: "string",
|
|
793
|
+
description: "Same as details; pass either.",
|
|
794
|
+
},
|
|
786
795
|
kind: {
|
|
787
796
|
type: "string",
|
|
788
797
|
enum: ["capability-gap", "command-failed", "wrong-output", "crash", "confusing", "other"],
|
|
@@ -800,7 +809,7 @@ const TOOLS = [
|
|
|
800
809
|
userContent: { type: "string" },
|
|
801
810
|
userConsented: { type: "boolean" },
|
|
802
811
|
},
|
|
803
|
-
required: ["title"
|
|
812
|
+
required: ["title"],
|
|
804
813
|
},
|
|
805
814
|
command: "system.report-issue",
|
|
806
815
|
},
|
|
@@ -3725,7 +3734,7 @@ const TOOLS = [
|
|
|
3725
3734
|
{
|
|
3726
3735
|
name: "project_check_broll",
|
|
3727
3736
|
description:
|
|
3728
|
-
"B-roll, the LAST step of an edit. YOU pick the moments from what's said (transcript_get; any language, any topic; in a Short ~1 per 6-8 s with the first right after the opening line, in long-form ~1 per 10-15 s) and what each picture shows; this checks them: span, clashes with the steps list / end card /
|
|
3737
|
+
"B-roll, the LAST step of an edit. YOU pick the moments from what's said (transcript_get; any language, any topic; in a Short ~1 per 6-8 s with the first right after the opening line, in long-form ~1 per 10-15 s) and what each picture shows; this checks them: span, clashes with the steps list / end card / pictures it would hide / graphics covering most of it (by position and stacking: a thin header or logo strip over it is fine), spacing, a nearby suggestion when blocked, insetSide (card away from the face). No moments: free stretches. Returns imageConnector. Never makes images: show the user your moments and ASK: their own images, generate on their connector (uses credits), or none. No one to ask: skip it and say so.",
|
|
3729
3738
|
inputSchema: {
|
|
3730
3739
|
type: "object",
|
|
3731
3740
|
properties: {
|
|
@@ -3741,6 +3750,11 @@ const TOOLS = [
|
|
|
3741
3750
|
endWordId: { type: "string" },
|
|
3742
3751
|
durationMs: { type: "number" },
|
|
3743
3752
|
picture: { type: "string", description: "What the picture shows." },
|
|
3753
|
+
layout: {
|
|
3754
|
+
type: "string",
|
|
3755
|
+
enum: ["full", "inset"],
|
|
3756
|
+
description: "The add-broll layout you plan (default full).",
|
|
3757
|
+
},
|
|
3744
3758
|
},
|
|
3745
3759
|
},
|
|
3746
3760
|
},
|
|
@@ -5730,7 +5744,7 @@ const TOOLS = [
|
|
|
5730
5744
|
{
|
|
5731
5745
|
name: "transcript_transcribe",
|
|
5732
5746
|
description:
|
|
5733
|
-
"Transcribe clips with word timestamps (default: only clips without words). Engine: language auto/english = Parakeet; any other named language = local Whisper LOCKED to it (engine override). Returns { jobId, plan } (plan = engine + reason, ranges, totalAudioMs: the audio that will be processed, estimate/estimatedMs: how long on this computer, advice: faster options for a long Whisper run; tell the user for long jobs). Long Whisper runs are saved chunk by chunk: stalls restart from the last chunk automatically; after job_cancel, a crash or an app restart, transcribing again resumes there. Progress is real (audio decoded); time left in progress.message and progress.data.etaMs. To REDO a transcript (wrong language, bad run) confirm language, pass per-run language and provider overrides, then force: true (all clips) or clipId. Word fixes are re-applied; tell the user about result droppedWordEdits[] (fixes that may need redoing). Each clip is transcribed only over the part it plays (head trim to tail trim, e.g. one half of a split; only the kept parts when cuts hide most of a long recording; result transcribedRanges[]). Clips with no audio track are skipped (result noAudioClips), not failed. ASYNC: { jobId }, job_wait. Concurrent saves are merged and retried (three attempts). Exhausted conflicts report code revision_conflict / status 409 (job.errorDetails for async jobs).",
|
|
5747
|
+
"Transcribe clips with word timestamps (default: only clips without words). Engine: language auto/english = Parakeet; any other named language = local Whisper LOCKED to it (engine override). Returns { jobId, plan } (plan = engine + reason, ranges, totalAudioMs: the audio that will be processed, estimate/estimatedMs: how long on this computer, advice: faster options for a long Whisper run; tell the user for long jobs). Long Whisper runs are saved chunk by chunk: stalls restart from the last chunk automatically; after job_cancel, a crash or an app restart, transcribing again resumes there. Progress is real (audio decoded); time left in progress.message and progress.data.etaMs. To REDO a transcript (wrong language, bad run) confirm language, pass per-run language and provider overrides, then force: true (all clips) or clipId. Word fixes are re-applied; tell the user about result droppedWordEdits[] (fixes that may need redoing). Each clip is transcribed only over the part it plays (head trim to tail trim, e.g. one half of a split; only the kept parts when cuts hide most of a long recording; result transcribedRanges[]). Clips with no audio track are skipped (result noAudioClips), not failed. Result warnings[] flags words that can't cover the audio (sound with no words, too few words: music, noise, another language) and a re-run with the same words as before: surface it, and get a second reading with engine whisper or a cloud provider (Parakeet isn't locked by language english, so retrying the same way repeats it). ASYNC: { jobId }, job_wait. Concurrent saves are merged and retried (three attempts). Exhausted conflicts report code revision_conflict / status 409 (job.errorDetails for async jobs).",
|
|
5734
5748
|
inputSchema: {
|
|
5735
5749
|
type: "object",
|
|
5736
5750
|
properties: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.272.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",
|