goatedit-mcp 1.1.10 → 1.1.12
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 +76 -5
- package/package.json +1 -1
package/bundle/goatedit-mcp.js
CHANGED
|
@@ -19858,6 +19858,11 @@ var HIDE_CLIP_IDS = {
|
|
|
19858
19858
|
items: { type: "string" },
|
|
19859
19859
|
description: "Render as if these clips were not there. The timeline is not changed."
|
|
19860
19860
|
};
|
|
19861
|
+
var TEXT_BOX_PROPS = {
|
|
19862
|
+
wrapWidth: num("Widest a line may run before it wraps, as a fraction of the frame width (0.05\u20131). Defaults to about 0.86. Set it to keep body copy inside a column or a card."),
|
|
19863
|
+
anchorX: num("Which point of the text block posX places: 0 its left edge, 0.5 its centre (default), 1 its right edge. Use 0 for left-aligned text so its left edge stays put when the words change."),
|
|
19864
|
+
anchorY: num("Which point of the text block posY places: 0 its top, 0.5 its middle (default), 1 its bottom.")
|
|
19865
|
+
};
|
|
19861
19866
|
var TEXT_STYLE_PROPS = {
|
|
19862
19867
|
fontSize: num("Font size in pixels, authored against a 1080p-tall frame."),
|
|
19863
19868
|
fontFamily: str("Font family name."),
|
|
@@ -19885,6 +19890,8 @@ var TEXT_STYLE_PROPS = {
|
|
|
19885
19890
|
textAccentColor: str("Colour for accent words. Mark an accent word in the text as *word*."),
|
|
19886
19891
|
textAccentFontFamily: str(`Font for accent words, e.g. "'Great Vibes', cursive" for a script word inside heavy caps.`),
|
|
19887
19892
|
textAccentScale: num("Size of accent words relative to the rest, e.g. 1.8."),
|
|
19893
|
+
textAccentFontWeight: { type: ["number", "string"], description: `Weight of accent words, 100\u2013900, "normal" or "bold". Default: bold with an accent font, else the text's own weight.` },
|
|
19894
|
+
textAccentFontStyle: { type: "string", enum: ["normal", "italic"], description: "Slant of accent words. Default: italic with an accent font, else the text's own style." },
|
|
19888
19895
|
textAccentGradientStart: str("Gradient start colour for accent words."),
|
|
19889
19896
|
textAccentGradientEnd: str("Gradient end colour for accent words."),
|
|
19890
19897
|
textSwooshUnderline: bool("Hand-drawn swoosh under the last line."),
|
|
@@ -19930,7 +19937,8 @@ var BASE_TOOLS = [
|
|
|
19930
19937
|
mediaFileId: str("Media bin file id. Omit to list every source that has a transcript."),
|
|
19931
19938
|
startTime: num("Only return segments overlapping at or after this source time, in seconds."),
|
|
19932
19939
|
endTime: num("Only return segments overlapping before this source time, in seconds."),
|
|
19933
|
-
includeWords: bool("Include per-word timings. Defaults to true; set false for a much smaller payload.")
|
|
19940
|
+
includeWords: bool("Include per-word timings. Defaults to true; set false for a much smaller payload."),
|
|
19941
|
+
onTimeline: bool("Return the words as they fall on the open sequence, through every cut and trim, in timeline seconds \u2014 what to time captions and shots against after the footage is edited. mediaFileId and the time range are ignored.")
|
|
19934
19942
|
}
|
|
19935
19943
|
},
|
|
19936
19944
|
method: "getTranscript"
|
|
@@ -20053,6 +20061,18 @@ var BASE_TOOLS = [
|
|
|
20053
20061
|
inputSchema: { type: "object", properties: {} },
|
|
20054
20062
|
method: "listSequences"
|
|
20055
20063
|
},
|
|
20064
|
+
{
|
|
20065
|
+
name: "export_design",
|
|
20066
|
+
description: "A sequence as design JSON \u2014 the format the Designs panel saves and inserts, with every sequence nested in it. Text, HTML and shape layers travel whole; media files are listed under files and not included. Read-only.",
|
|
20067
|
+
inputSchema: {
|
|
20068
|
+
type: "object",
|
|
20069
|
+
properties: {
|
|
20070
|
+
sequenceId: str("The sequence to export. Default: the open one."),
|
|
20071
|
+
name: str("Name to give the design. Default: the sequence name.")
|
|
20072
|
+
}
|
|
20073
|
+
},
|
|
20074
|
+
method: "exportDesign"
|
|
20075
|
+
},
|
|
20056
20076
|
{
|
|
20057
20077
|
name: "create_sequence",
|
|
20058
20078
|
description: "Make a new, empty sequence. It takes the project's frame size and rate unless width, height or fps say otherwise, and can be given a fixed length. By default it opens, so the edits that follow build it; pass open: false to stay where you are and place it later with add_sequence_clip. Returns its id.",
|
|
@@ -20267,7 +20287,8 @@ var BASE_TOOLS = [
|
|
|
20267
20287
|
duration: num("How long the card stays on screen, in seconds."),
|
|
20268
20288
|
startTime: num("Where it starts on the timeline, in seconds. Defaults to 0."),
|
|
20269
20289
|
trackId: str("Target video track. Defaults to the topmost one that is free across the card\u2019s span, creating a new track above everything if none is free."),
|
|
20270
|
-
...TEXT_STYLE_PROPS
|
|
20290
|
+
...TEXT_STYLE_PROPS,
|
|
20291
|
+
...TEXT_BOX_PROPS
|
|
20271
20292
|
},
|
|
20272
20293
|
required: ["text", "duration"]
|
|
20273
20294
|
},
|
|
@@ -20281,7 +20302,8 @@ var BASE_TOOLS = [
|
|
|
20281
20302
|
properties: {
|
|
20282
20303
|
clipId: CLIP_ID,
|
|
20283
20304
|
text: str("New text. Omit to change only the styling."),
|
|
20284
|
-
...TEXT_STYLE_PROPS
|
|
20305
|
+
...TEXT_STYLE_PROPS,
|
|
20306
|
+
...TEXT_BOX_PROPS
|
|
20285
20307
|
},
|
|
20286
20308
|
required: ["clipId"]
|
|
20287
20309
|
},
|
|
@@ -21553,7 +21575,7 @@ var BASE_TOOLS = [
|
|
|
21553
21575
|
},
|
|
21554
21576
|
{
|
|
21555
21577
|
name: "studio_tasks",
|
|
21556
|
-
description: 'The work GoatEdit Studio has for you in this project. Studio makes a video in stages (brief, research, script, breakdown (the script cut into parts), moodboard, styleGuide (the design language every part follows), storyboard, edit plan, combine (the parts joined into the final edit plan), timeline, mix, QC, export, plus any the user added, whose ids start "x-" and whose document is {"notes": string, "points"?: string[]}); a stage opens once the stages it reads are approved, so several are often open at once. Each task is kind "write" (write that stage\'s JSON document: follow `role` as your system prompt, read `inputs`, follow `lessons` when present (what this user has asked for before), and if `previousDraft` is there, revise it using `note` and `problems`) or kind "run" (ask the tab to do it with studio_run_stage). Open tasks in one run do not depend on each other: hand each to its own subagent and do them side by side. When a task names an `agent`, the user wants that subagent or skill of yours on it: hand the task to the subagent with that name, or use the skill with that name. In a batch of reels each run has `batch` (reel number, name, avatar); stages listed in batch.filled are filled by Studio itself (the locked script, the pilot\'s look), so leave them. For each write task: studio_claim it first (the person sees your agent working on that stage), then studio_submit the document. The reply to a submit names the stages it opened; call studio_tasks again for them. Stages waiting for the person are listed under waitingForPerson \u2014 stop there and tell the user to approve them in the Studio panel.',
|
|
21578
|
+
description: 'The work GoatEdit Studio has for you in this project. Studio makes a video in stages (brief, research, script, breakdown (the script cut into parts), moodboard, styleGuide (the design language every part follows), storyboard, edit plan, combine (the parts joined into the final edit plan), timeline, mix, QC, export, plus any the user added, whose ids start "x-" and whose document is {"notes": string, "points"?: string[]}); a stage opens once the stages it reads are approved, so several are often open at once. Each task is kind "write" (write that stage\'s JSON document: follow `role` as your system prompt, read `inputs`, follow `lessons` when present (what this user has asked for before), and if `previousDraft` is there, revise it using `note` and `problems`) or kind "run" (ask the tab to do it with studio_run_stage). Open tasks in one run do not depend on each other: hand each to its own subagent and do them side by side. When a task names an `agent`, the user wants that subagent or skill of yours on it: hand the task to the subagent with that name, or use the skill with that name. In a batch of reels each run has `batch` (reel number, name, avatar); stages listed in batch.filled are filled by Studio itself (the locked script, the pilot\'s look), so leave them. For each write task: studio_claim it first (the person sees your agent working on that stage), then studio_submit the document. The reply to a submit names the stages it opened; call studio_tasks again for them. Stages waiting for the person are listed under waitingForPerson \u2014 stop there and tell the user to approve them in the Studio panel, unless the user told you to approve them yourself (then studio_approve).',
|
|
21557
21579
|
inputSchema: {
|
|
21558
21580
|
type: "object",
|
|
21559
21581
|
properties: {
|
|
@@ -21586,12 +21608,61 @@ var BASE_TOOLS = [
|
|
|
21586
21608
|
runId: str("The run, from studio_tasks."),
|
|
21587
21609
|
stage: str("The stage id."),
|
|
21588
21610
|
document: { type: "object", description: "The stage's document, in the shape its role card gives." },
|
|
21589
|
-
agent: str("Who wrote it, as in studio_claim.")
|
|
21611
|
+
agent: str("Who wrote it, as in studio_claim."),
|
|
21612
|
+
part: str("For a stage written part by part (the task lists `parts`): the part id. The document then holds only that part's beats (storyboard) or scenes (edit plan), and the part is checked and shown in the Studio gallery on its own.")
|
|
21590
21613
|
},
|
|
21591
21614
|
required: ["runId", "stage", "document"]
|
|
21592
21615
|
},
|
|
21593
21616
|
method: "studioSubmit"
|
|
21594
21617
|
},
|
|
21618
|
+
{
|
|
21619
|
+
name: "studio_approve",
|
|
21620
|
+
description: "Approve a Studio stage that is waiting for the person (waitingForPerson in studio_tasks), on their behalf. Only when the user told you to approve it, or to run Studio on their own without stopping: otherwise tell them it is waiting for them in the Studio panel. personSaid keeps what they told you in the run's log, so the panel shows who approved it and why. A stage with rival drafts needs pick; a stage written part by part approves every part waiting. The reply names the stages that opened.",
|
|
21621
|
+
inputSchema: {
|
|
21622
|
+
type: "object",
|
|
21623
|
+
properties: {
|
|
21624
|
+
runId: str("The run, from studio_tasks."),
|
|
21625
|
+
stage: str("The stage id."),
|
|
21626
|
+
agent: str('Who is approving, shown in the log ("Claude Code").'),
|
|
21627
|
+
personSaid: str(`The user's words that let you approve it, e.g. "do everything by yourself".`),
|
|
21628
|
+
pick: num("With rival drafts: which one, 0-based.")
|
|
21629
|
+
},
|
|
21630
|
+
required: ["runId", "stage"]
|
|
21631
|
+
},
|
|
21632
|
+
method: "studioApprove"
|
|
21633
|
+
},
|
|
21634
|
+
{
|
|
21635
|
+
name: "studio_send_back",
|
|
21636
|
+
description: "Send a Studio stage in review back to whoever writes it, with what to change; it opens again with the note. Use it when a draft you are reviewing for the user is not good enough.",
|
|
21637
|
+
inputSchema: {
|
|
21638
|
+
type: "object",
|
|
21639
|
+
properties: {
|
|
21640
|
+
runId: str("The run, from studio_tasks."),
|
|
21641
|
+
stage: str("The stage id."),
|
|
21642
|
+
note: str("What to change.")
|
|
21643
|
+
},
|
|
21644
|
+
required: ["runId", "stage", "note"]
|
|
21645
|
+
},
|
|
21646
|
+
method: "studioSendBack"
|
|
21647
|
+
},
|
|
21648
|
+
{
|
|
21649
|
+
name: "studio_update_run",
|
|
21650
|
+
description: `Change a Studio run under way, for the stages still to come (approved, left-out or running stages keep theirs): who writes each stage and who approves it (the same settings as studio_save_workflow; brief, moodboard, styleGuide and export stay approved by the person), and editSequenceId: a sequence the person already edited, for the timeline and qc stages to restyle in place instead of building a new one. With editSequenceId set, timeline and qc can take writer "outside": you edit that sequence over MCP and studio_submit the stage's document. null for editSequenceId goes back to a new sequence.`,
|
|
21651
|
+
inputSchema: {
|
|
21652
|
+
type: "object",
|
|
21653
|
+
properties: {
|
|
21654
|
+
runId: str("The run, from studio_tasks."),
|
|
21655
|
+
stages: {
|
|
21656
|
+
type: "object",
|
|
21657
|
+
description: 'Stage id to { writer?, approver?: "person" | "auto", agent?, instructions?, tier?, review?, enabled? }.',
|
|
21658
|
+
additionalProperties: { type: "object" }
|
|
21659
|
+
},
|
|
21660
|
+
editSequenceId: { type: ["string", "null"], description: "A sequence id from list_sequences, or null." }
|
|
21661
|
+
},
|
|
21662
|
+
required: ["runId"]
|
|
21663
|
+
},
|
|
21664
|
+
method: "studioUpdateRun"
|
|
21665
|
+
},
|
|
21595
21666
|
{
|
|
21596
21667
|
name: "studio_run_stage",
|
|
21597
21668
|
description: `Start a Studio stage the tab does itself: "timeline" (build the edit from the approved plan) or "qc" (check it), or a stage the workflow gives to Studio's agent in the tab. Returns at once; the work goes on in the tab and the panel shows it. Poll studio_tasks to see it finish.`,
|
package/package.json
CHANGED