@zegazone_mcp/mcp 2.0.2 → 2.0.4

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
@@ -33,19 +33,26 @@ Set `ZEGA_API_BASE=https://api.zegaphone.com` in env if needed (defaults apply f
33
33
  - Keeps API as source of truth.
34
34
  - Applies safety defaults for destructive operations (`dry_run` when neither `confirm` nor `dry_run` is provided).
35
35
  - Adds `idempotency_key` automatically to mutating operations when absent.
36
+ - **2.0.4+:** every MCP tool exposes a typed Zod input schema (field names, types, and descriptions) so weak models can call tools without guessing `args`.
36
37
 
37
38
  ## Tool mapping
38
39
 
39
40
  Examples:
40
41
 
41
42
  - `operations_list` -> `operations.list`
43
+ - `collections_get` -> `collections.get`
44
+ - `collections_get_by_slug` -> `collections.get_by_slug`
42
45
  - `collections_delete` -> `collections.delete`
46
+ - `media_get` -> `media.get`
47
+ - `media_search` -> `media.search` (requires `query`)
43
48
  - `media_delete` -> `media.delete`
44
49
  - `media_move` -> `media.move`
45
50
  - `media_reorder` -> `media.reorder`
46
51
 
47
52
  Also includes generic `thirdparty_call` for forward compatibility.
48
53
 
54
+ **Lookup tip:** use `media_get` / `collections_get` when you know the id; use `media_search` when you only have a keyword.
55
+
49
56
  ## Configuration
50
57
 
51
58
  Copy `.env.example` to `.env.local`. You need `ZEGA_API_BASE` plus **either** a one-time OAuth pairing **or** a static access token.
package/dist/ops.js CHANGED
@@ -6,6 +6,8 @@ export const OP_TOOL_MAP = {
6
6
  ui_state_get: "ui.state.get",
7
7
  ui_state_set: "ui.state.set",
8
8
  collections_list: "collections.list",
9
+ collections_get: "collections.get",
10
+ collections_get_by_slug: "collections.get_by_slug",
9
11
  collections_batch_get: "collections.batch.get",
10
12
  collections_export: "collections.export",
11
13
  collections_create: "collections.create",
@@ -38,6 +40,7 @@ export const OP_TOOL_MAP = {
38
40
  collaborators_invite_accept: "collaborators.invite.accept",
39
41
  collaborators_invite_decline: "collaborators.invite.decline",
40
42
  media_list: "media.list",
43
+ media_get: "media.get",
41
44
  media_search: "media.search",
42
45
  media_batch_list: "media.batch.list",
43
46
  media_download: "media.download",
@@ -6,6 +6,8 @@ export const TOOL_CATEGORIES = {
6
6
  ui_state_get: "UI",
7
7
  ui_state_set: "UI",
8
8
  collections_list: "Collections",
9
+ collections_get: "Collections",
10
+ collections_get_by_slug: "Collections",
9
11
  collections_batch_get: "Collections",
10
12
  collections_export: "Collections",
11
13
  collections_create: "Collections",
@@ -38,6 +40,7 @@ export const TOOL_CATEGORIES = {
38
40
  collaborators_invite_accept: "Collaboration",
39
41
  collaborators_invite_decline: "Collaboration",
40
42
  media_list: "Media",
43
+ media_get: "Media",
41
44
  media_search: "Media",
42
45
  media_batch_list: "Media",
43
46
  media_download: "Media",
@@ -66,6 +69,8 @@ export const TOOL_DESCRIPTIONS = {
66
69
  ui_state_get: "Use when you need to know which collection and media item are currently open in the user's Zegazone UI — keeps agent actions aligned with what they see.",
67
70
  ui_state_set: "Use when the agent should drive the app: open a collection, select a media item, or sync the UI to match your workflow.",
68
71
  collections_list: "Use when you need to see what collections the user owns — names, tags, sharing level, thumbnails — before uploading media, publishing, or inviting collaborators.",
72
+ collections_get: "Look up a specific collection by its ID. Use this when you know the collection ID and need its name, description, sharing status, or other details.",
73
+ collections_get_by_slug: "Resolve a collection from a public share URL handle and slug (e.g. charliefairbairn/boating). Use when the agent has a link and needs the collection id or metadata.",
69
74
  collections_batch_get: "Use when you already have a list of collection ids and need full metadata for several at once without listing everything.",
70
75
  collections_export: "Use when the user wants a portable dump of a collection (metadata and media references) for backup or migration.",
71
76
  collections_create: "Use when starting a new collection from scratch. Set name, tags, NSFW flag, and optional parent for sub-collections.",
@@ -97,8 +102,9 @@ export const TOOL_DESCRIPTIONS = {
97
102
  collaborators_invites_received: "Use when the user asks what collections they were invited to.",
98
103
  collaborators_invite_accept: "Use after the user confirms they want access to a shared collection.",
99
104
  collaborators_invite_decline: "Use when refusing a collaboration invite.",
100
- media_list: "Use to list media inside a collectionthe main way to see what's already uploaded before adding more.",
101
- media_search: "Use when filtering media within one or more collections by name, tag, or type.",
105
+ media_list: "Use to list media inside accessible collectionsfilter by collection_id, viewer type, tags, or other metadata before adding more.",
106
+ media_get: "Look up a specific media item by its ID. Use this when you know the media ID and need its description, tags, thumbnail, or other details.",
107
+ media_search: "Search for media items by name, description, or tags. Use this to find a specific item when you don't know its ID.",
102
108
  media_batch_list: "Use when you have many media ids and need rows for all of them in one call.",
103
109
  media_download: "Use when you need a time-limited download URL for a media item's main file.",
104
110
  media_create: "Use when adding new content to a collection from a URL (image, video, website, etc.). Requires viewer type.",
@@ -14,11 +14,22 @@ const viewerEnum = z.enum([
14
14
  "html",
15
15
  ]);
16
16
  const shareAccessLevelEnum = z.enum(["private", "restricted", "registered", "public"]);
17
+ const displayModeEnum = z.enum(["plain", "markdown", "code"]);
18
+ const collectionsBrowseFilterEnum = z.enum(["own", "shared", "public", "following", "liked"]);
19
+ const mediaIdSchema = z.number().int().positive().describe("Integer ID of the media item.");
20
+ const collectionIdSchema = z.number().int().positive().describe("Integer ID of the collection.");
21
+ const limitSchema = z.number().int().positive().optional();
22
+ const offsetSchema = z.number().int().min(0).optional();
17
23
  const tagsSchema = z
18
24
  .array(z.string().min(1))
19
25
  .max(10)
20
26
  .optional()
21
27
  .describe("Highly encouraged for discovery and organization (max 10).");
28
+ const emptyToolSchema = z
29
+ .object({
30
+ args: z.record(z.unknown()).optional(),
31
+ })
32
+ .catchall(z.unknown());
22
33
  export const collectionsCreateSchema = z
23
34
  .object({
24
35
  args: z.record(z.unknown()).optional(),
@@ -43,7 +54,7 @@ export const collectionsCreateSchema = z
43
54
  .optional()
44
55
  .describe("Profile alias UUID; sets created_with_username publish handle."),
45
56
  playback_prefs: z.record(z.unknown()).optional().describe("JSON playback preferences."),
46
- parent_collection_id: z.number().int().positive().optional(),
57
+ parent_collection_id: collectionIdSchema.optional(),
47
58
  link_position: z.number().int().min(0).optional(),
48
59
  link_description: z.string().max(4000).optional(),
49
60
  })
@@ -51,7 +62,7 @@ export const collectionsCreateSchema = z
51
62
  export const collectionsUpdateSchema = z
52
63
  .object({
53
64
  args: z.record(z.unknown()).optional(),
54
- collection_id: z.number().int().positive(),
65
+ collection_id: collectionIdSchema,
55
66
  name: z.string().min(1).optional(),
56
67
  description: z.string().max(4000).nullable().optional(),
57
68
  tags: tagsSchema,
@@ -69,10 +80,125 @@ export const collectionsUpdateSchema = z
69
80
  playback_prefs: z.record(z.unknown()).nullable().optional(),
70
81
  })
71
82
  .catchall(z.unknown());
83
+ export const collectionsListSchema = z
84
+ .object({
85
+ args: z.record(z.unknown()).optional(),
86
+ parent_collection_id: collectionIdSchema.optional(),
87
+ include_archived: z.boolean().optional(),
88
+ limit: limitSchema,
89
+ offset: offsetSchema,
90
+ })
91
+ .catchall(z.unknown());
92
+ export const collectionsBatchGetSchema = z
93
+ .object({
94
+ args: z.record(z.unknown()).optional(),
95
+ collection_ids: z.array(collectionIdSchema).min(1),
96
+ })
97
+ .catchall(z.unknown());
98
+ export const collectionsExportSchema = z
99
+ .object({
100
+ args: z.record(z.unknown()).optional(),
101
+ collection_id: collectionIdSchema,
102
+ })
103
+ .catchall(z.unknown());
104
+ export const collectionsStatsGetSchema = z
105
+ .object({
106
+ args: z.record(z.unknown()).optional(),
107
+ collection_id: collectionIdSchema,
108
+ })
109
+ .catchall(z.unknown());
110
+ export const collectionsShareUrlSchema = z
111
+ .object({
112
+ args: z.record(z.unknown()).optional(),
113
+ collection_id: collectionIdSchema,
114
+ })
115
+ .catchall(z.unknown());
116
+ export const collectionsDeleteSchema = z
117
+ .object({
118
+ args: z.record(z.unknown()).optional(),
119
+ collection_id: collectionIdSchema,
120
+ dry_run: z.boolean().optional(),
121
+ confirm: z.boolean().optional(),
122
+ })
123
+ .catchall(z.unknown());
124
+ export const collectionsRestoreSchema = z
125
+ .object({
126
+ args: z.record(z.unknown()).optional(),
127
+ collection_id: collectionIdSchema,
128
+ })
129
+ .catchall(z.unknown());
130
+ export const collectionsArchiveSchema = z
131
+ .object({
132
+ args: z.record(z.unknown()).optional(),
133
+ collection_id: collectionIdSchema,
134
+ })
135
+ .catchall(z.unknown());
136
+ export const collectionsUnarchiveSchema = z
137
+ .object({
138
+ args: z.record(z.unknown()).optional(),
139
+ collection_id: collectionIdSchema,
140
+ })
141
+ .catchall(z.unknown());
142
+ export const collectionsReorderSchema = z
143
+ .object({
144
+ args: z.record(z.unknown()).optional(),
145
+ collection_id: collectionIdSchema,
146
+ ordered_ids: z.array(z.number().int().positive()).min(1),
147
+ })
148
+ .catchall(z.unknown());
149
+ export const collectionsPublishSchema = z
150
+ .object({
151
+ args: z.record(z.unknown()).optional(),
152
+ collection_id: collectionIdSchema,
153
+ slug: z.string().min(1),
154
+ handle: z.string().min(1).optional(),
155
+ })
156
+ .catchall(z.unknown());
157
+ export const collectionsUnpublishSchema = z
158
+ .object({
159
+ args: z.record(z.unknown()).optional(),
160
+ collection_id: collectionIdSchema,
161
+ })
162
+ .catchall(z.unknown());
163
+ export const collectionsLikeSchema = z
164
+ .object({
165
+ args: z.record(z.unknown()).optional(),
166
+ collection_id: collectionIdSchema,
167
+ })
168
+ .catchall(z.unknown());
169
+ export const collectionsUnlikeSchema = z
170
+ .object({
171
+ args: z.record(z.unknown()).optional(),
172
+ collection_id: collectionIdSchema,
173
+ })
174
+ .catchall(z.unknown());
175
+ export const collectionsLikedListSchema = z
176
+ .object({
177
+ args: z.record(z.unknown()).optional(),
178
+ limit: limitSchema,
179
+ offset: offsetSchema,
180
+ })
181
+ .catchall(z.unknown());
182
+ export const collectionsSearchSchema = z
183
+ .object({
184
+ args: z.record(z.unknown()).optional(),
185
+ query: z.string().min(3),
186
+ limit: limitSchema,
187
+ offset: offsetSchema,
188
+ })
189
+ .catchall(z.unknown());
190
+ export const collectionsBrowseSchema = z
191
+ .object({
192
+ args: z.record(z.unknown()).optional(),
193
+ filter: collectionsBrowseFilterEnum,
194
+ limit: limitSchema,
195
+ offset: offsetSchema,
196
+ })
197
+ .catchall(z.unknown());
72
198
  export const mediaCreateSchema = z
73
199
  .object({
74
200
  args: z.record(z.unknown()).optional(),
75
- collection_id: z.number().int().positive(),
201
+ collection_id: collectionIdSchema,
76
202
  source_url: z.string().url(),
77
203
  viewer: viewerEnum.describe("Hint for which viewer to use (required)."),
78
204
  name: z.string().max(180).optional(),
@@ -89,13 +215,13 @@ export const mediaCreateSchema = z
89
215
  screenshot_url: z.string().url().optional(),
90
216
  background_image_url: z.string().url().optional(),
91
217
  locked_for_collaborators: z.boolean().optional(),
92
- subcollection_collection_id: z.number().int().positive().nullable().optional(),
218
+ subcollection_collection_id: collectionIdSchema.nullable().optional(),
93
219
  })
94
220
  .catchall(z.unknown());
95
221
  export const mediaUpdateSchema = z
96
222
  .object({
97
223
  args: z.record(z.unknown()).optional(),
98
- media_id: z.number().int().positive(),
224
+ media_id: mediaIdSchema,
99
225
  name: z.string().max(180).optional(),
100
226
  description: z.string().max(4000).nullable().optional(),
101
227
  position: z.number().int().min(0).optional(),
@@ -110,18 +236,18 @@ export const mediaUpdateSchema = z
110
236
  type: z.string().optional(),
111
237
  tags: tagsSchema,
112
238
  text_note: z.string().max(524288).optional(),
113
- display_mode: z.enum(["plain", "markdown", "code"]).optional(),
239
+ display_mode: displayModeEnum.optional(),
114
240
  screenshot_url: z.string().url().nullable().optional(),
115
241
  background_image_url: z.string().url().nullable().optional(),
116
242
  locked_for_collaborators: z.boolean().optional(),
117
- subcollection_collection_id: z.number().int().positive().nullable().optional(),
243
+ subcollection_collection_id: collectionIdSchema.nullable().optional(),
118
244
  })
119
245
  .catchall(z.unknown());
120
246
  export const uiStateSetSchema = z
121
247
  .object({
122
248
  args: z.record(z.unknown()).optional(),
123
- collection_id: z.number().int().positive().nullable().optional(),
124
- media_id: z.number().int().positive().nullable().optional(),
249
+ collection_id: collectionIdSchema.nullable().optional(),
250
+ media_id: mediaIdSchema.nullable().optional(),
125
251
  source: z.enum(["agent", "user"]).optional(),
126
252
  agent_id: z.string().nullable().optional(),
127
253
  view_mode: z.enum(["carousel", "grid"]).nullable().optional(),
@@ -133,14 +259,289 @@ export const uiStateSetSchema = z
133
259
  export const mediaDescribeSchema = z
134
260
  .object({
135
261
  args: z.record(z.unknown()).optional(),
136
- media_id: z.number().int().positive(),
262
+ media_id: mediaIdSchema,
263
+ })
264
+ .catchall(z.unknown());
265
+ export const mediaGetSchema = z
266
+ .object({
267
+ args: z.record(z.unknown()).optional(),
268
+ media_id: mediaIdSchema,
269
+ })
270
+ .catchall(z.unknown());
271
+ export const collectionsGetSchema = z
272
+ .object({
273
+ args: z.record(z.unknown()).optional(),
274
+ collection_id: collectionIdSchema,
275
+ })
276
+ .catchall(z.unknown());
277
+ export const collectionsGetBySlugSchema = z
278
+ .object({
279
+ args: z.record(z.unknown()).optional(),
280
+ handle: z.string().min(1).describe("Publish handle from the share URL, without @."),
281
+ slug: z.string().min(1).describe("Collection slug from the share URL."),
282
+ })
283
+ .catchall(z.unknown());
284
+ export const mediaSearchSchema = z
285
+ .object({
286
+ args: z.record(z.unknown()).optional(),
287
+ query: z.string().min(1).describe("Search text matched against name, description, and tags."),
288
+ collection_id: collectionIdSchema.optional(),
289
+ include_archived: z.boolean().optional(),
290
+ limit: limitSchema,
291
+ offset: offsetSchema,
292
+ })
293
+ .catchall(z.unknown());
294
+ export const mediaListSchema = z
295
+ .object({
296
+ args: z.record(z.unknown()).optional(),
297
+ collection_id: collectionIdSchema.optional(),
298
+ tag: z.string().optional(),
299
+ tags: tagsSchema,
300
+ name_contains: z.string().optional(),
301
+ description_contains: z.string().optional(),
302
+ type: z.string().optional(),
303
+ viewer: viewerEnum.optional(),
304
+ created_after: z.string().optional(),
305
+ created_before: z.string().optional(),
306
+ is_nsfw: z.boolean().optional(),
307
+ include_archived: z.boolean().optional(),
308
+ limit: limitSchema,
309
+ offset: offsetSchema,
310
+ })
311
+ .catchall(z.unknown());
312
+ export const mediaBatchListSchema = z
313
+ .object({
314
+ args: z.record(z.unknown()).optional(),
315
+ media_ids: z.array(mediaIdSchema).min(1),
316
+ })
317
+ .catchall(z.unknown());
318
+ export const mediaDownloadSchema = z
319
+ .object({
320
+ args: z.record(z.unknown()).optional(),
321
+ media_id: mediaIdSchema,
322
+ })
323
+ .catchall(z.unknown());
324
+ export const mediaReplaceSchema = z
325
+ .object({
326
+ args: z.record(z.unknown()).optional(),
327
+ media_id: mediaIdSchema,
328
+ source_url: z.string().url(),
329
+ viewer: viewerEnum.optional(),
330
+ type: z.string().optional(),
331
+ })
332
+ .catchall(z.unknown());
333
+ export const mediaDeleteSchema = z
334
+ .object({
335
+ args: z.record(z.unknown()).optional(),
336
+ media_id: mediaIdSchema,
337
+ dry_run: z.boolean().optional(),
338
+ confirm: z.boolean().optional(),
339
+ })
340
+ .catchall(z.unknown());
341
+ export const mediaRestoreSchema = z
342
+ .object({
343
+ args: z.record(z.unknown()).optional(),
344
+ media_id: mediaIdSchema,
345
+ })
346
+ .catchall(z.unknown());
347
+ export const mediaMoveSchema = z
348
+ .object({
349
+ args: z.record(z.unknown()).optional(),
350
+ media_id: mediaIdSchema,
351
+ collection_id: collectionIdSchema,
352
+ position: z.number().int().min(0).optional(),
353
+ })
354
+ .catchall(z.unknown());
355
+ export const mediaCopySchema = z
356
+ .object({
357
+ args: z.record(z.unknown()).optional(),
358
+ media_id: mediaIdSchema,
359
+ collection_id: collectionIdSchema,
360
+ position: z.number().int().min(0).optional(),
361
+ })
362
+ .catchall(z.unknown());
363
+ export const mediaReorderSchema = z
364
+ .object({
365
+ args: z.record(z.unknown()).optional(),
366
+ collection_id: collectionIdSchema,
367
+ ordered_ids: z.array(mediaIdSchema).min(1),
368
+ })
369
+ .catchall(z.unknown());
370
+ export const mediaArchiveSchema = z
371
+ .object({
372
+ args: z.record(z.unknown()).optional(),
373
+ media_id: mediaIdSchema,
374
+ })
375
+ .catchall(z.unknown());
376
+ export const mediaUnarchiveSchema = z
377
+ .object({
378
+ args: z.record(z.unknown()).optional(),
379
+ media_id: mediaIdSchema,
380
+ })
381
+ .catchall(z.unknown());
382
+ export const mediaTextNoteAddSchema = z
383
+ .object({
384
+ args: z.record(z.unknown()).optional(),
385
+ collection_id: collectionIdSchema,
386
+ name: z.string().min(1),
387
+ body: z.string(),
388
+ display_mode: displayModeEnum.optional(),
389
+ position: z.number().int().min(0).optional(),
390
+ })
391
+ .catchall(z.unknown());
392
+ export const mediaTextNoteGetSchema = z
393
+ .object({
394
+ args: z.record(z.unknown()).optional(),
395
+ media_id: mediaIdSchema,
396
+ })
397
+ .catchall(z.unknown());
398
+ export const mediaTextNoteUpdateSchema = z
399
+ .object({
400
+ args: z.record(z.unknown()).optional(),
401
+ media_id: mediaIdSchema,
402
+ body: z.string().optional(),
403
+ name: z.string().min(1).optional(),
404
+ display_mode: displayModeEnum.optional(),
405
+ thumbnail_url: z.string().url().optional(),
406
+ })
407
+ .catchall(z.unknown());
408
+ export const mediaTextNoteDeleteSchema = z
409
+ .object({
410
+ args: z.record(z.unknown()).optional(),
411
+ media_id: mediaIdSchema,
412
+ dry_run: z.boolean().optional(),
413
+ confirm: z.boolean().optional(),
414
+ })
415
+ .catchall(z.unknown());
416
+ export const profileUpdateSchema = z
417
+ .object({
418
+ args: z.record(z.unknown()).optional(),
419
+ display_name: z.string().optional(),
420
+ bio: z.string().optional(),
421
+ })
422
+ .catchall(z.unknown());
423
+ export const aliasesFollowSchema = z
424
+ .object({
425
+ args: z.record(z.unknown()).optional(),
426
+ handle: z.string().min(1),
427
+ })
428
+ .catchall(z.unknown());
429
+ export const aliasesUnfollowSchema = z
430
+ .object({
431
+ args: z.record(z.unknown()).optional(),
432
+ handle: z.string().min(1),
433
+ })
434
+ .catchall(z.unknown());
435
+ export const aliasesFollowingListSchema = z
436
+ .object({
437
+ args: z.record(z.unknown()).optional(),
438
+ limit: limitSchema,
439
+ offset: offsetSchema,
440
+ })
441
+ .catchall(z.unknown());
442
+ export const collaboratorsListSchema = z
443
+ .object({
444
+ args: z.record(z.unknown()).optional(),
445
+ collection_id: collectionIdSchema,
446
+ })
447
+ .catchall(z.unknown());
448
+ export const collaboratorsInviteSchema = z
449
+ .object({
450
+ args: z.record(z.unknown()).optional(),
451
+ collection_id: collectionIdSchema,
452
+ username: z.string().min(1),
453
+ })
454
+ .catchall(z.unknown());
455
+ export const collaboratorsRevokeSchema = z
456
+ .object({
457
+ args: z.record(z.unknown()).optional(),
458
+ collection_id: collectionIdSchema,
459
+ username: z.string().min(1),
460
+ })
461
+ .catchall(z.unknown());
462
+ export const collaboratorsInvitesListSchema = z
463
+ .object({
464
+ args: z.record(z.unknown()).optional(),
465
+ collection_id: collectionIdSchema,
466
+ })
467
+ .catchall(z.unknown());
468
+ export const collaboratorsInviteAcceptSchema = z
469
+ .object({
470
+ args: z.record(z.unknown()).optional(),
471
+ invite_id: z.string().min(1),
472
+ })
473
+ .catchall(z.unknown());
474
+ export const collaboratorsInviteDeclineSchema = z
475
+ .object({
476
+ args: z.record(z.unknown()).optional(),
477
+ invite_id: z.string().min(1),
478
+ })
479
+ .catchall(z.unknown());
480
+ export const operationDescribeSchema = z
481
+ .object({
482
+ args: z.record(z.unknown()).optional(),
483
+ name: z.string().min(1).describe("Operation name from operations_list, e.g. collections.list."),
137
484
  })
138
485
  .catchall(z.unknown());
139
486
  export const TYPED_TOOL_SCHEMAS = {
487
+ ping: emptyToolSchema,
488
+ schema_get: emptyToolSchema,
489
+ operations_list: emptyToolSchema,
490
+ operation_describe: operationDescribeSchema,
491
+ ui_state_get: emptyToolSchema,
492
+ ui_state_set: uiStateSetSchema,
493
+ collections_list: collectionsListSchema,
494
+ collections_get: collectionsGetSchema,
495
+ collections_get_by_slug: collectionsGetBySlugSchema,
496
+ collections_batch_get: collectionsBatchGetSchema,
497
+ collections_export: collectionsExportSchema,
140
498
  collections_create: collectionsCreateSchema,
141
499
  collections_update: collectionsUpdateSchema,
500
+ collections_delete: collectionsDeleteSchema,
501
+ collections_restore: collectionsRestoreSchema,
502
+ collections_reorder: collectionsReorderSchema,
503
+ collections_archive: collectionsArchiveSchema,
504
+ collections_unarchive: collectionsUnarchiveSchema,
505
+ collections_like: collectionsLikeSchema,
506
+ collections_unlike: collectionsUnlikeSchema,
507
+ collections_liked_list: collectionsLikedListSchema,
508
+ collections_search: collectionsSearchSchema,
509
+ collections_browse: collectionsBrowseSchema,
510
+ collections_stats_get: collectionsStatsGetSchema,
511
+ collections_share_url: collectionsShareUrlSchema,
512
+ collections_publish: collectionsPublishSchema,
513
+ collections_unpublish: collectionsUnpublishSchema,
514
+ aliases_list: emptyToolSchema,
515
+ aliases_follow: aliasesFollowSchema,
516
+ aliases_unfollow: aliasesUnfollowSchema,
517
+ aliases_following_list: aliasesFollowingListSchema,
518
+ profile_get: emptyToolSchema,
519
+ profile_update: profileUpdateSchema,
520
+ collaborators_list: collaboratorsListSchema,
521
+ collaborators_invite: collaboratorsInviteSchema,
522
+ collaborators_revoke: collaboratorsRevokeSchema,
523
+ collaborators_invites_list: collaboratorsInvitesListSchema,
524
+ collaborators_invites_received: emptyToolSchema,
525
+ collaborators_invite_accept: collaboratorsInviteAcceptSchema,
526
+ collaborators_invite_decline: collaboratorsInviteDeclineSchema,
527
+ media_list: mediaListSchema,
528
+ media_get: mediaGetSchema,
529
+ media_search: mediaSearchSchema,
530
+ media_batch_list: mediaBatchListSchema,
531
+ media_download: mediaDownloadSchema,
142
532
  media_create: mediaCreateSchema,
143
533
  media_update: mediaUpdateSchema,
144
- ui_state_set: uiStateSetSchema,
145
534
  media_describe: mediaDescribeSchema,
535
+ media_replace: mediaReplaceSchema,
536
+ media_delete: mediaDeleteSchema,
537
+ media_restore: mediaRestoreSchema,
538
+ media_move: mediaMoveSchema,
539
+ media_copy: mediaCopySchema,
540
+ media_reorder: mediaReorderSchema,
541
+ media_archive: mediaArchiveSchema,
542
+ media_unarchive: mediaUnarchiveSchema,
543
+ media_text_note_add: mediaTextNoteAddSchema,
544
+ media_text_note_get: mediaTextNoteGetSchema,
545
+ media_text_note_update: mediaTextNoteUpdateSchema,
546
+ media_text_note_delete: mediaTextNoteDeleteSchema,
146
547
  };
package/package.json CHANGED
@@ -1,37 +1,37 @@
1
- {
2
- "name": "@zegazone_mcp/mcp",
3
- "version": "2.0.2",
4
- "type": "module",
5
- "description": "MCP server wrapper for Zegazone thirdparty-v1 API",
6
- "publishConfig": {
7
- "access": "public"
8
- },
9
- "bin": {
10
- "zegazone-mcp": "dist/index.js"
11
- },
12
- "files": [
13
- "dist/",
14
- "README.md",
15
- "scripts/oauth-pair.mjs"
16
- ],
17
- "scripts": {
18
- "build": "tsc -p tsconfig.json && node scripts/add-shebang.mjs",
19
- "start": "node dist/index.js",
20
- "dev": "tsx src/index.ts",
21
- "oauth-pair": "node scripts/oauth-pair.mjs",
22
- "smoke": "node tests/smoke.mjs",
23
- "smoke:full": "node tests/smoke-thirdparty-v1.mjs",
24
- "test:error-format": "npm run build && node tests/error-format.mjs",
25
- "test:token-provider": "npm run build && node tests/token-provider-file-priority.mjs",
26
- "test": "npm run build && node tests/error-format.mjs && node tests/token-provider-file-priority.mjs"
27
- },
28
- "dependencies": {
29
- "@modelcontextprotocol/sdk": "^1.12.0",
30
- "zod": "^3.24.1"
31
- },
32
- "devDependencies": {
33
- "@types/node": "^22.10.2",
34
- "tsx": "^4.19.2",
35
- "typescript": "^5.8.3"
36
- }
37
- }
1
+ {
2
+ "name": "@zegazone_mcp/mcp",
3
+ "version": "2.0.4",
4
+ "type": "module",
5
+ "description": "MCP server wrapper for Zegazone thirdparty-v1 API",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "bin": {
10
+ "zegazone-mcp": "dist/index.js"
11
+ },
12
+ "files": [
13
+ "dist/",
14
+ "README.md",
15
+ "scripts/oauth-pair.mjs"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc -p tsconfig.json && node scripts/add-shebang.mjs",
19
+ "start": "node dist/index.js",
20
+ "dev": "tsx src/index.ts",
21
+ "oauth-pair": "node scripts/oauth-pair.mjs",
22
+ "smoke": "node tests/smoke.mjs",
23
+ "smoke:full": "node tests/smoke-thirdparty-v1.mjs",
24
+ "test:error-format": "npm run build && node tests/error-format.mjs",
25
+ "test:token-provider": "npm run build && node tests/token-provider-file-priority.mjs",
26
+ "test": "npm run build && node tests/error-format.mjs && node tests/token-provider-file-priority.mjs"
27
+ },
28
+ "dependencies": {
29
+ "@modelcontextprotocol/sdk": "^1.12.0",
30
+ "zod": "^3.24.1"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^22.10.2",
34
+ "tsx": "^4.19.2",
35
+ "typescript": "^5.8.3"
36
+ }
37
+ }