goatedit-mcp 1.1.23 → 1.1.25
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/bundle/goatedit-mcp.js +31 -8
- package/package.json +1 -1
package/bundle/goatedit-mcp.js
CHANGED
|
@@ -20208,7 +20208,8 @@ var BASE_TOOLS = [
|
|
|
20208
20208
|
detail: { type: "string", enum: ["lean", "full"], description: "lean (default) or full, which adds effect parameters and every field." },
|
|
20209
20209
|
trackId: str("Only this track."),
|
|
20210
20210
|
from: num("Only clips that end after this time, in seconds."),
|
|
20211
|
-
to: num("Only clips that start before this time, in seconds.")
|
|
20211
|
+
to: num("Only clips that start before this time, in seconds."),
|
|
20212
|
+
clipIds: { type: "array", items: { type: "string" }, description: 'Only these clips. Every filter applies to detail "full" too, so full detail for a few clips stays small.' }
|
|
20212
20213
|
}
|
|
20213
20214
|
},
|
|
20214
20215
|
method: "getTimeline"
|
|
@@ -20219,10 +20220,10 @@ var BASE_TOOLS = [
|
|
|
20219
20220
|
inputSchema: {
|
|
20220
20221
|
type: "object",
|
|
20221
20222
|
properties: {
|
|
20223
|
+
clipId: str("One clip id. Use clipIds for several."),
|
|
20222
20224
|
clipIds: { type: "array", items: { type: "string" }, description: "Clip ids from get_timeline, up to 50." },
|
|
20223
20225
|
includeHtml: bool("For HTML clips, also return the markup (html), its slot fills and vars \u2014 what update_html_clip starts from. Long markup is cut at 200 KB.")
|
|
20224
|
-
}
|
|
20225
|
-
required: ["clipIds"]
|
|
20226
|
+
}
|
|
20226
20227
|
},
|
|
20227
20228
|
method: "getClips"
|
|
20228
20229
|
},
|
|
@@ -20250,8 +20251,16 @@ var BASE_TOOLS = [
|
|
|
20250
20251
|
},
|
|
20251
20252
|
{
|
|
20252
20253
|
name: "get_media_bin",
|
|
20253
|
-
description:
|
|
20254
|
-
inputSchema: {
|
|
20254
|
+
description: 'List the media files imported into the project. A bin of 40 files or fewer, asked with no filter, comes back whole. A bigger one, or any filtered ask, comes back as one short row per file (id, name, type, duration, size, status) under { total, matched, files }; narrow it with name, type or ids, and pass detail: "full" for whole records. To see what a file looks like, use preview_media.',
|
|
20255
|
+
inputSchema: {
|
|
20256
|
+
type: "object",
|
|
20257
|
+
properties: {
|
|
20258
|
+
name: str("Only files whose name contains this (any case)."),
|
|
20259
|
+
type: { type: "string", description: "Only this type: video, audio, image, html, lottie, model3d, showcase, text." },
|
|
20260
|
+
ids: { type: "array", items: { type: "string" }, description: "Only these file ids." },
|
|
20261
|
+
detail: { type: "string", enum: ["lean", "full"], description: "full: whole records for the files matched." }
|
|
20262
|
+
}
|
|
20263
|
+
},
|
|
20255
20264
|
method: "getMediaFiles"
|
|
20256
20265
|
},
|
|
20257
20266
|
{
|
|
@@ -21177,6 +21186,7 @@ var BASE_TOOLS = [
|
|
|
21177
21186
|
items: { type: "object" }
|
|
21178
21187
|
},
|
|
21179
21188
|
clear: bool("Remove this property's keyframes instead of setting them, leaving the clip's flat value in charge again."),
|
|
21189
|
+
offset: { description: 'With prop "position" or "scale" and no keyframes: move the animation as it is. Every existing key of both halves is shifted ([dx, dy] added to position) or scaled (a number or [sx, sy] multiplying scale), times and eases kept; a track with no keys has its resting value moved instead. The way to nudge an animated layer or a whole pile without rewriting its keys.' },
|
|
21180
21190
|
relative: bool("Values are relative to where the layer rests: multiples of its scale/opacity (1.1 = 10% bigger than it is), offsets for everything else (posX +0.05, rotation +15). A punch-in on a card scaled 0.3 stays a punch-in instead of jumping to full size."),
|
|
21181
21191
|
expression: {
|
|
21182
21192
|
type: "string",
|
|
@@ -21196,7 +21206,7 @@ var BASE_TOOLS = [
|
|
|
21196
21206
|
clipId: CLIP_ID,
|
|
21197
21207
|
type: {
|
|
21198
21208
|
type: "string",
|
|
21199
|
-
description: "Effect type: blur, invert, hue, saturation, brightness, contrast, exposure, grayscale, sepia, gradientMap, vignette, filmGrain, flicker, posterizeTime, lensDistortion, chromaticAberration, lensFlare, liquidGlass, opacityFx, colorCorrection, depthMap, depthParticles, gradientMap, vegas, glow, pixelDissolve, motionBlur, dropShadow, reflection, colorama, outline, echo, flutedGlass, lightRays, halftone, datamosh, roughenEdges, filmStock, halation, starGlow, filmDamage, lightLeak, thermal, colorBalance, duotone, levels, monochrome, channelMixer, dither, threshold, fourColorGradient, lensBlur, boxBlur, directionalBlur, spinBlur, zoomBlur, sharpen, cameraShake, bulge, twirl, ripple, waveWarp, polarCoords, turbulentDisplace, elasticGrid, gridSplit, cubify, glitch, vhs, ntsc, crtScreen, ledScreen, rgbSplit, jpegGlitch, ascii, macpaint, modulation, stripe, risograph, emboss, bevel, inkBleed, paperTexture, paperCutout, crossHatch, scatter, blobTracker, edgeGlow, pageTurn, lightSweep, deepGlow, twister, fill, compositeOriginal, grid, repeater, plus transform, cornerPin (AE Corner Pin: perspective quad from four corners), layer3d, camera3d (on a camera clip; use set_camera), model3d and showcase. Call describe_effect with a type for its parameters, their ranges and what they do before setting anything but the obvious. An unknown name comes back with the full list."
|
|
21209
|
+
description: "Effect type: blur, invert, hue, saturation, brightness, contrast, exposure, grayscale, sepia, gradientMap, vignette, filmGrain, flicker, posterizeTime, lensDistortion, chromaticAberration, lensFlare, liquidGlass, opacityFx, colorCorrection, depthMap, depthParticles, gradientMap, vegas, glow, pixelDissolve, motionBlur, dropShadow, reflection, colorama, outline, echo, flutedGlass, lightRays, halftone, datamosh, roughenEdges, filmStock, halation, starGlow, filmDamage, lightLeak, thermal, colorBalance, duotone, levels, monochrome, channelMixer, dither, threshold, fourColorGradient, fractalNoise, lensBlur, boxBlur, directionalBlur, spinBlur, zoomBlur, sharpen, cameraShake, bulge, twirl, ripple, waveWarp, polarCoords, turbulentDisplace, elasticGrid, gridSplit, cubify, glitch, vhs, ntsc, crtScreen, ledScreen, rgbSplit, jpegGlitch, ascii, macpaint, modulation, stripe, risograph, emboss, bevel, inkBleed, paperTexture, paperCutout, crossHatch, scatter, blobTracker, edgeGlow, pageTurn, lightSweep, deepGlow, twister, fill, compositeOriginal, grid, repeater, plus transform, cornerPin (AE Corner Pin: perspective quad from four corners), layer3d, camera3d (on a camera clip; use set_camera), model3d and showcase. Call describe_effect with a type for its parameters, their ranges and what they do before setting anything but the obvious. An unknown name comes back with the full list."
|
|
21200
21210
|
},
|
|
21201
21211
|
params: {
|
|
21202
21212
|
type: "object",
|
|
@@ -21438,7 +21448,8 @@ var BASE_TOOLS = [
|
|
|
21438
21448
|
posX: num("Horizontal centre as a fraction of the frame, 0..1. 0.5 is centre."),
|
|
21439
21449
|
posY: num("Vertical centre as a fraction of the frame, 0..1. 0.5 is centre."),
|
|
21440
21450
|
scale: num('Uniform scale, 1 being unchanged. With size "native", a multiplier on the native size.'),
|
|
21441
|
-
|
|
21451
|
+
rotation: num("Rotation in degrees."),
|
|
21452
|
+
size: str(`"fit" (default): like any picture, the width x height box is fitted inside the frame, so a 600x200 card fills the frame width. "native": one authored px is one frame px, so a 600x200 card is 600x200 on screen. Use native for UI pieces authored at their real size. The result's onScreen gives the box in frame px either way. The clip's stored scale stays relative to the fitted box (onScreen.nativeScale is native size), so set_clip_transform and scale keys later take that number, not 1; set_clip_transform on an html clip replies with onScreen too.`),
|
|
21442
21453
|
opacity: num("Opacity, 0..1. Defaults to 1."),
|
|
21443
21454
|
name: str("Display name for the clip and its bin entry.")
|
|
21444
21455
|
},
|
|
@@ -21448,12 +21459,17 @@ var BASE_TOOLS = [
|
|
|
21448
21459
|
},
|
|
21449
21460
|
{
|
|
21450
21461
|
name: "update_html_clip",
|
|
21451
|
-
description: "Change an HTML clip made with create_html_clip in place: new markup, some of its --custom-property `vars`, its `slots`, or its render size. The clip keeps its id, position, keyframes, parent and effects \u2014 revise a snippet with this, never by removing and re-creating it. `vars` and `slots` merge over the current values, so pass only what changes. New `html` clears slot overrides (slot ids are element order) unless `slots` is given in the same call. Every clip playing the same snippet changes with it; the reply says how many.",
|
|
21462
|
+
description: "Change an HTML clip made with create_html_clip in place: new markup (or a find-and-replace patch on it), some of its --custom-property `vars`, its `slots`, or its render size. The clip keeps its id, position, keyframes, parent and effects \u2014 revise a snippet with this, never by removing and re-creating it. `vars` and `slots` merge over the current values, so pass only what changes. New `html` clears slot overrides (slot ids are element order) unless `slots` is given in the same call. Every clip playing the same snippet changes with it; the reply says how many.",
|
|
21452
21463
|
inputSchema: {
|
|
21453
21464
|
type: "object",
|
|
21454
21465
|
properties: {
|
|
21455
21466
|
clipId: str("The HTML clip."),
|
|
21456
21467
|
html: str("Replacement markup, with its <style> inline."),
|
|
21468
|
+
replace: {
|
|
21469
|
+
type: "array",
|
|
21470
|
+
description: "Patch the current markup instead of resending it: [{ find, with, all? }], exact text, applied in order. Each find must appear once unless all: true. Read the markup with get_clip includeHtml: true. Not with html.",
|
|
21471
|
+
items: { type: "object", properties: { find: { type: "string" }, with: { type: "string" }, all: { type: "boolean" } }, required: ["find", "with"] }
|
|
21472
|
+
},
|
|
21457
21473
|
vars: { type: "object", description: 'CSS custom properties to change, e.g. { "--accent": "#ff5a1f" }. Merged over the current ones.' },
|
|
21458
21474
|
slots: { type: "object", description: "Slot fills to change, keyed by slot id, as in create_html_clip. Merged over the current ones." },
|
|
21459
21475
|
width: num("New render width in pixels."),
|
|
@@ -25694,6 +25710,13 @@ async function callTool(name, args) {
|
|
|
25694
25710
|
}
|
|
25695
25711
|
if (name === "import_local_file") return withOpIdHint(importLocalFile(forwarded, target), forwarded.opId);
|
|
25696
25712
|
const result = await withOpIdHint(sendToBrowser(tool.method, forwarded, target), forwarded.opId);
|
|
25713
|
+
if (!projectId && target && !READ_ONLY_TOOLS.has(tool.name) && result && typeof result === "object" && !Array.isArray(result)) {
|
|
25714
|
+
const open = connectedProjects();
|
|
25715
|
+
if (open.length > 1) {
|
|
25716
|
+
const landed = open.find((p) => p.projectId === target);
|
|
25717
|
+
result.routedTo = `${landed?.name ?? "untitled"} (${target}), the use_project default. ${open.length} projects are open; pass projectId if you meant another.`;
|
|
25718
|
+
}
|
|
25719
|
+
}
|
|
25697
25720
|
const withFile = saveFileToDisk(result);
|
|
25698
25721
|
return saveToDisk ? saveFramesToDisk(withFile, name) : withFile;
|
|
25699
25722
|
}
|
package/package.json
CHANGED