creavit-studio-mcp 1.3.8 → 1.3.9

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/README.md CHANGED
@@ -7,6 +7,11 @@ and **see the canvas** to verify the result.
7
7
 
8
8
  macOS only (Creavit Studio is a macOS app). Requires Node 18+.
9
9
 
10
+ > This MCP server is client-agnostic — any MCP client can drive the app.
11
+ > That is separate from the **in-app Agent panel**, which shells out to a CLI
12
+ > installed on your Mac and detects only Claude Code and Codex
13
+ > (see `electron/aiAgent/agentCatalog.cjs`).
14
+
10
15
  ## Install
11
16
 
12
17
  ### Claude Code
@@ -50,9 +55,9 @@ npx creavit-studio-mcp --doctor
50
55
  ```
51
56
 
52
57
  ```
53
- creavit-studio v1.2.0
58
+ creavit-studio v1.3.9
54
59
 
55
- 50 MCP tools defined
60
+ 104 MCP tools defined
56
61
  ✓ Offline project reading available (.crvt files readable without the app)
57
62
  ✓ Connected to the app (v3.0.5, pid 61068)
58
63
  Open windows: 2
@@ -106,7 +111,8 @@ files directly and work with the app closed.
106
111
  `creavit_editor_set_settings`, `creavit_editor_list_zooms`,
107
112
  `creavit_editor_add_zoom`, `creavit_editor_update_zoom`,
108
113
  `creavit_editor_remove_zoom`, `creavit_editor_segments`,
109
- `creavit_editor_set_segments`, `creavit_editor_seek`,
114
+ `creavit_editor_set_segments`, `creavit_editor_timeline`,
115
+ `creavit_editor_canvas_elements`, `creavit_editor_seek`,
110
116
  `creavit_editor_playback`, `creavit_editor_screenshot`,
111
117
  `creavit_editor_export`, `creavit_editor_history`
112
118
 
@@ -162,6 +168,24 @@ Timeline & assets: `creavit_motion_segments`, `creavit_motion_library`,
162
168
  **Recording** — `creavit_devices_list`, `creavit_recording_status`,
163
169
  `creavit_recording_start`, `creavit_recording_stop`
164
170
 
171
+ `creavit_recording_start` treats `cameraEnabled`, `micEnabled`, and
172
+ `systemAudioEnabled` as authoritative. Passing `false` updates both capture and
173
+ the recorder UI; disabling the camera also stops and hides its live window.
174
+
175
+ ### Every timeline track and canvas element
176
+
177
+ `creavit_editor_segments` remains the compact clip/cut API. For the complete
178
+ editor use `creavit_editor_timeline action=list`: it discovers clips, steps,
179
+ zooms, layouts, perspectives, titles, sounds, shortcuts, masks, motion scenes,
180
+ code snippets, media/GIFs, subtitles, and manual-cursor segments. Pass
181
+ `detail=full` to read complete objects, then use get/add/update/remove/replace on
182
+ one returned track type.
183
+
184
+ `creavit_editor_canvas_elements action=list` returns every transformable item on
185
+ the main canvas. Each item advertises its exact `supports` array and coordinate
186
+ units. Updating the advertised fields can move, resize/scale, rotate, change
187
+ opacity, or hide an element without guessing its internal state shape.
188
+
165
189
  **Browser walkthrough** — `creavit_browser_open`, `creavit_browser_inspect`,
166
190
  `creavit_browser_focus`, `creavit_browser_interact`, `creavit_browser_scroll`,
167
191
  `creavit_browser_close`, `creavit_record_url_walkthrough`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "creavit-studio-mcp",
3
- "version": "1.3.8",
3
+ "version": "1.3.9",
4
4
  "description": "MCP server that lets AI coding agents (Claude Code, Codex, Cursor) drive the Creavit Studio screen recording app",
5
5
  "keywords": [
6
6
  "mcp",
@@ -126,6 +126,32 @@ export function editorTools() {
126
126
  inputSchema: schema(),
127
127
  }),
128
128
 
129
+ bridgeTool({
130
+ name: "creavit_editor_perspective_poses",
131
+ command: "editor.listPerspectivePoses",
132
+ description:
133
+ "Lists the balanced perspective poses (flat, desk, hero, peek-up, lean/iso/float left-right) with their angles. Read this before setting a pose so you pick a real one.",
134
+ inputSchema: schema(),
135
+ }),
136
+
137
+ bridgeTool({
138
+ name: "creavit_editor_perspective_pose",
139
+ command: "editor.setPerspectivePose",
140
+ description:
141
+ "Gives a perspective range a balanced camera angle and computes its pivot from a focus point — prefer this over writing raw tiltX/tiltY/skew, which is how lopsided angles happen. `pose` picks the look, `strength` (0..2) makes it subtle or dramatic, `focus` is the canvas point the tilt pivots around as {x,y} in 0..1 (e.g. the UI element the viewer should look at). Add `endPose`/`focusEnd` to animate from one angle/pivot to another across the range. Call creavit_project_save afterwards.",
142
+ inputSchema: schema({
143
+ id: S.string("Perspective range id"),
144
+ index: S.number("Range index when id is unknown (default 0)"),
145
+ pose: S.string("flat | desk | hero | peek-up | lean-left | lean-right | iso-left | iso-right | float-left | float-right"),
146
+ endPose: S.string("Pose the range animates towards"),
147
+ strength: S.number("0..2, default 1"),
148
+ focus: S.object("Pivot point {x,y} normalized 0..1"),
149
+ focusEnd: S.object("Pivot point the origin travels to"),
150
+ scale: S.number("Plane scale at the start"),
151
+ scaleEnd: S.number("Plane scale at the end"),
152
+ }),
153
+ }),
154
+
129
155
  bridgeTool({
130
156
  name: "creavit_editor_reframe",
131
157
  command: "editor.reframe",
@@ -304,6 +330,48 @@ export function editorTools() {
304
330
  ),
305
331
  }),
306
332
 
333
+ bridgeTool({
334
+ name: "creavit_editor_timeline",
335
+ command: "editor.timelineSegments",
336
+ description:
337
+ "Unified access to EVERY editor timeline track, not just video clips: clips, steps, zooms, layouts, perspectives, titles, sound effects, shortcuts, sensitive masks, motion scenes, code snippets, media/GIFs, subtitles and manual-cursor segments. action='list' discovers track types/counts; use detail='full' to read complete objects. get/add/update/remove/replace target one `type`. Updates are deep-merged so nested transform/style objects are preserved. Call creavit_project_save afterwards.",
338
+ inputSchema: schema({
339
+ action: S.string("list, get, add, update, remove or replace (default list)", {
340
+ enum: ["list", "get", "add", "update", "remove", "replace"],
341
+ }),
342
+ types: S.array("Track types to include when listing", { type: "string" }),
343
+ type: S.string("Target track type for get/add/update/remove/replace"),
344
+ id: S.string("Segment id"),
345
+ index: S.number("Zero-based segment index when it has no id"),
346
+ segment: S.object("Complete segment object to add"),
347
+ patch: S.object("Fields to update; nested objects are deep-merged"),
348
+ segments: S.array("Complete replacement list", { type: "object" }),
349
+ detail: S.string("summary or full (list only)", {
350
+ enum: ["summary", "full"],
351
+ }),
352
+ }),
353
+ }),
354
+
355
+ bridgeTool({
356
+ name: "creavit_editor_canvas_elements",
357
+ command: "editor.canvasElements",
358
+ description:
359
+ "Lists or transforms every editable element on the MAIN editor canvas: screen, camera, captured windows, GIF/image/video overlays, code snippets, titles, motion scenes and sensitive masks. action='list' returns each element's id, transform, units and exact `supports` fields. action='update' can move (x/y), resize (width/height/size/scale), rotate and change opacity where that element advertises support. Motion Studio's internal layers remain available through creavit_motion_elements / creavit_motion_element_update.",
360
+ inputSchema: schema({
361
+ action: S.string("list, get or update (default list)", {
362
+ enum: ["list", "get", "update"],
363
+ }),
364
+ type: S.string(
365
+ "screen, camera, window, gif, media, codeSnippet, title, motion or sensitive",
366
+ ),
367
+ id: S.string("Canvas element id"),
368
+ index: S.number("Index among elements of that type"),
369
+ patch: S.object(
370
+ "Transform fields advertised by the element's supports array, e.g. {x,y,width,height,scale,size,rotation,opacity,visible}",
371
+ ),
372
+ }),
373
+ }),
374
+
307
375
  bridgeTool({
308
376
  name: "creavit_editor_seek",
309
377
  command: "editor.seek",
@@ -74,7 +74,7 @@ export function systemTools() {
74
74
  name: "creavit_recording_start",
75
75
  command: "recording.start",
76
76
  description:
77
- "Starts a screen recording idempotently: retries while starting share the same native operation, and calling it while active does not restart. Get source IDs from creavit_devices_list first. For a multi-step website recording, use ONE creavit_record_url_walkthrough call instead of this manual tool.",
77
+ "Starts a screen recording idempotently: retries while starting share the same native operation, and calling it while active does not restart. cameraEnabled, micEnabled and systemAudioEnabled are authoritative booleans: false also updates the recorder UI/state and cameraEnabled:false stops/hides the live camera window before capture. Get source IDs from creavit_devices_list first. For a multi-step website recording, use ONE creavit_record_url_walkthrough call instead of this manual tool.",
78
78
  inputSchema: schema({
79
79
  options: S.object(
80
80
  "Recording options: {sourceType:'display'|'window'|'area', sourceId, cameraEnabled, micEnabled, systemAudioEnabled, delayMs, area:{x,y,width,height}}. cameraEnabled:false also turns the camera off and hides its window, so it does not appear in a screen recording; cameraEnabled:true opens and starts it.",