@writepanda/mcp 1.218.0 → 1.219.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 +11 -6
- package/package.json +1 -1
package/bin/server.mjs
CHANGED
|
@@ -1231,7 +1231,7 @@ const TOOLS = [
|
|
|
1231
1231
|
{
|
|
1232
1232
|
name: "export_publish_youtube",
|
|
1233
1233
|
description:
|
|
1234
|
-
"Publish an export entry to YouTube. Slow. Check the entry's youtubeVideoId before republishing. channelId optional (uploads go to the account's own channel; omit when channels can't be listed). Error code youtube_permission_missing: relay message, follow howToFix. Returns { videoUrl, channelId }.",
|
|
1234
|
+
"Publish an export entry to YouTube. Slow. Check the entry's youtubeVideoId before republishing. channelId optional (uploads go to the account's own channel; omit when channels can't be listed). Error code youtube_permission_missing: relay message, follow howToFix. Error code daily_limit or youtube_quota_exceeded (with resetsAt): tell the user when it resets; never retry before resetsAt. Returns { videoUrl, channelId }.",
|
|
1235
1235
|
inputSchema: {
|
|
1236
1236
|
type: "object",
|
|
1237
1237
|
properties: {
|
|
@@ -1296,7 +1296,7 @@ const TOOLS = [
|
|
|
1296
1296
|
{
|
|
1297
1297
|
name: "export_publish_social",
|
|
1298
1298
|
description:
|
|
1299
|
-
"Post an export entry to connected social accounts, now or scheduled. Public: confirm accounts + caption first. Returns { jobId }; job_wait gives { state, channels[{ permalink, error }], summary }.",
|
|
1299
|
+
"Post an export entry to connected social accounts, now or scheduled. Public: confirm accounts + caption first. Returns { jobId }; job_wait gives { state, channels[{ permalink, error }], summary }. A job failing with errorDetails.code daily_limit (posts per workspace per 24h) has errorDetails.resetsAt: tell the user; never retry before it.",
|
|
1300
1300
|
inputSchema: {
|
|
1301
1301
|
type: "object",
|
|
1302
1302
|
properties: {
|
|
@@ -1347,7 +1347,8 @@ const TOOLS = [
|
|
|
1347
1347
|
},
|
|
1348
1348
|
{
|
|
1349
1349
|
name: "export_update_youtube",
|
|
1350
|
-
description:
|
|
1350
|
+
description:
|
|
1351
|
+
"Update a published YouTube video's metadata (only fields to change). Error code daily_limit or youtube_quota_exceeded (with resetsAt): never retry before resetsAt.",
|
|
1351
1352
|
inputSchema: {
|
|
1352
1353
|
type: "object",
|
|
1353
1354
|
properties: {
|
|
@@ -1365,7 +1366,8 @@ const TOOLS = [
|
|
|
1365
1366
|
},
|
|
1366
1367
|
{
|
|
1367
1368
|
name: "export_update_youtube_thumbnail",
|
|
1368
|
-
description:
|
|
1369
|
+
description:
|
|
1370
|
+
"Replace a published YouTube video's thumbnail (local 1280x720 image). Error code daily_limit or youtube_quota_exceeded (with resetsAt): never retry before resetsAt.",
|
|
1369
1371
|
inputSchema: {
|
|
1370
1372
|
type: "object",
|
|
1371
1373
|
properties: {
|
|
@@ -4318,7 +4320,7 @@ const TOOLS = [
|
|
|
4318
4320
|
{
|
|
4319
4321
|
name: "audio_enhance",
|
|
4320
4322
|
description:
|
|
4321
|
-
"Enhance voice: THE audio cleanup step (one call). Runs the studio chain on speech, per source (a podcast's host and each guest separately): noise removal, coughs/bumps out of pauses, mouth-click repair, broadcast tone, boom control, level riding (lifts very quiet speech too), de-esser, quieter pauses, -16 LUFS / -1 dBTP. strength: natural (default), light (gentle tidy), strong (assertive broadcast). keepBackground true for vlogs / ambience where the room is part of the video (no noise removal, event remover or pause expander; level, EQ and loudness still run). Enhance voice already removes room echo with the Studio AI model; only use echo when the result reports the model did not run (fallback) (denoiser deepfilternet3, or keepBackground); when the model runs, echo is skipped and the result says echoSkipped: ai-model-removes-echo (relay echoSkippedReason, do not retry). restore true =
|
|
4323
|
+
"Enhance voice: THE audio cleanup step (one call). Runs the studio chain on speech, per source (a podcast's host and each guest separately): noise removal, coughs/bumps out of pauses, mouth-click repair, broadcast tone, boom control, level riding (lifts very quiet speech too), de-esser, quieter pauses, -16 LUFS / -1 dBTP. strength: natural (default), light (gentle tidy), strong (assertive broadcast). keepBackground true for vlogs / ambience where the room is part of the video (no noise removal, event remover or pause expander; level, EQ and loudness still run). Enhance voice already removes room echo with the Studio AI model; only use echo when the result reports the model did not run (fallback) (denoiser deepfilternet3, or keepBackground); when the model runs, echo is skipped and the result says echoSkipped: ai-model-removes-echo (relay echoSkippedReason, do not retry). restore true = Studio mic sound (the app's name) for thin, muffled or call-quality mics only (never on a good mic): TF-Restormer on Apple silicon, AP-BWE on Windows and Intel Macs (CPU, faster than real time); restoreEngine in the result says which ran. reference = a clip id or file whose voice tone to match. off true restores the original audio. The noise-removal engine is automatic. Every run processes the original media, so running again replaces the result (never stacks). ASYNC: { jobId }, job_wait; the result reports before/after loudness (LUFS, LRA, true peak, speech over pauses, tone deviation) and the engine per source: tell the user.",
|
|
4322
4324
|
inputSchema: {
|
|
4323
4325
|
type: "object",
|
|
4324
4326
|
properties: {
|
|
@@ -4348,7 +4350,8 @@ const TOOLS = [
|
|
|
4348
4350
|
restore: {
|
|
4349
4351
|
type: "boolean",
|
|
4350
4352
|
default: false,
|
|
4351
|
-
description:
|
|
4353
|
+
description:
|
|
4354
|
+
"Studio mic sound for a thin / low-bandwidth mic (TF-Restormer on Apple silicon, AP-BWE elsewhere).",
|
|
4352
4355
|
},
|
|
4353
4356
|
reference: { type: "string", description: "Clip id or audio/video file to sound like." },
|
|
4354
4357
|
off: { type: "boolean", description: "Remove the enhancement (original audio)." },
|
|
@@ -6252,6 +6255,8 @@ A single named operation ("just add captions", "remove the silences") is exactly
|
|
|
6252
6255
|
|
|
6253
6256
|
Destructive actions need the user's own confirmation: project_delete, workspace_delete, recipe_delete, memory_forget, export_delete, export_clear_thumbnail, youtube_disconnect, social_disconnect. Ask plainly in chat first ("Delete project 'Demo'? This can't be undone.") and call only after they agree. PandaStudio then confirms with them itself: in its own chat the call returns confirmation_required and changes nothing while a Delete / Cancel card waits (tell them to press it; don't call again; the outcome arrives as their next message); from other apps a dialog asks, and the call is refused when nobody is at the app. Nothing you send can approve it.
|
|
6254
6257
|
|
|
6258
|
+
Publishing has daily limits (YouTube uploads and updates per license, social posts per workspace, and PandaStudio's shared YouTube quota). A failure with code daily_limit or youtube_quota_exceeded carries resetsAt: tell the user when it resets and do not retry, loop or switch accounts to get around it before then. It is not a bug to report.
|
|
6259
|
+
|
|
6255
6260
|
PandaStudio problems (a capability gap like an imported font the export can't draw, a command failing unexpectedly, a render not matching the project): call system_report_issue yourself, then tell the user you reported it. Not for user mistakes, missing keys or taste.
|
|
6256
6261
|
|
|
6257
6262
|
Destination decides everything: infer it (Shorts/TikTok/vertical/<=90s: shorts; YouTube/tutorial/>8 min: youtube-long; LinkedIn; Loom/internal), else ask once.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@writepanda/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.219.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",
|