maeve-cli 0.11.0 → 0.12.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/README.md +765 -731
- package/dist/index.js +772 -52
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -80,11 +80,14 @@ var require_dist = __commonJS({
|
|
|
80
80
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
81
81
|
exports.taskBoardListMcpInputSchema = exports.taskBoardListInputSchema = exports.contentGetCountsMcpInputSchema = exports.contentGetMcpInputSchema = exports.contentGetInputSchema = exports.contentGetCountsInputSchema = exports.contentListAgentInputSchema = exports.contentListInputSchema = exports.contentListMcpInputSchema = exports.COMPOSER_PATCH_MEDIA_CONTRACT = exports.COMPOSER_PATCH_TAXONOMY_CONTRACT = exports.COMPOSER_PATCH_SCHEDULE_CONTRACT = exports.COMPOSER_PATCH_CAPTION_CONTRACT = exports.composerPatchOutputSchema = exports.composerPatchArtifactMetadataSchema = exports.composerPatchMediaArtifactMetadataSchema = exports.composerPatchTaxonomyArtifactMetadataSchema = exports.composerPatchScheduleArtifactMetadataSchema = exports.composerPatchCaptionArtifactMetadataSchema = exports.composerPatchMediaInputSchema = exports.composerPatchTaxonomyInputSchema = exports.composerPatchScheduleInputSchema = exports.composerPatchCaptionInputSchema = exports.MEDIA_SEARCH_CONTRACT = exports.mediaSearchOutputSchema = exports.mediaSearchInputSchema = exports.CALENDAR_SUGGEST_PUBLISH_TIMES_CONTRACT = exports.calendarSuggestPublishTimesOutputSchema = exports.calendarSuggestPublishTimesInputSchema = exports.CALENDAR_READ_RANGE_CONTRACT = exports.scheduledPostsListOutputSchema = exports.SCHEDULED_POSTS_PRESENTATION_NOTE_KINDS = exports.calendarReadRangeInputSchema = exports.CONTENT_FIND_RECENT_CONTRACT = exports.contentFindRecentOutputSchema = exports.contentFindRecentInputSchema = exports.MEMORY_REMEMBER_CONTRACT = exports.MEMORY_LIST_CONTRACT = exports.memoryRememberOutputSchema = exports.memoryListOutputSchema = exports.memoryRememberInputSchema = exports.memoryListInputSchema = exports.WORKSPACE_SUMMARY_CONTRACT = exports.workspaceSummaryOutputSchema = exports.workspaceSummaryInputSchema = exports.TIMEZONE_QUALIFIED_ISO8601_TIMESTAMP_ERROR = exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS = exports.TOOL_CAPABILITIES = exports.TOOL_WIRE_NAMES = exports.TOOL_OPERATION_IDS = void 0;
|
|
82
82
|
exports.TASK_CHECKLIST_ITEM_CREATE_CONTRACT = exports.TASK_COMMENT_CREATE_CONTRACT = exports.TASK_DELETE_CONTRACT = exports.TASK_RESTORE_CONTRACT = exports.TASK_ARCHIVE_CONTRACT = exports.TASK_MOVE_CONTRACT = exports.TASK_UPDATE_CONTRACT = exports.TASK_CREATE_CONTRACT = exports.TASK_LIST_ARCHIVED_CONTRACT = exports.TASK_LIST_FOR_POST_CONTRACT = exports.TASK_GET_CONTRACT = exports.TASK_BOARD_LIST_CONTRACT = exports.CONTENT_GET_COUNTS_CONTRACT = exports.CONTENT_GET_CONTRACT = exports.CONTENT_LIST_CONTRACT = exports.deleteTaskChecklistItemMcpInputSchema = exports.deleteTaskChecklistItemInputSchema = exports.moveTaskChecklistItemMcpInputSchema = exports.moveTaskChecklistItemInputSchema = exports.moveTaskChecklistItemBodySchema = exports.updateTaskChecklistItemMcpInputSchema = exports.updateTaskChecklistItemInputSchema = exports.updateTaskChecklistItemBodySchema = exports.createTaskChecklistItemMcpInputSchema = exports.createTaskChecklistItemInputSchema = exports.createTaskChecklistItemBodySchema = exports.createTaskCommentMcpInputSchema = exports.createTaskCommentInputSchema = exports.createTaskCommentBodySchema = exports.deleteTaskMcpInputSchema = exports.deleteTaskInputSchema = exports.restoreTaskMcpInputSchema = exports.restoreTaskInputSchema = exports.archiveTaskMcpInputSchema = exports.archiveTaskInputSchema = exports.moveTaskMcpInputSchema = exports.moveTaskInputSchema = exports.moveTaskBodySchema = exports.updateTaskMcpInputSchema = exports.updateTaskInputSchema = exports.updateTaskBodySchema = exports.createTaskMcpInputSchema = exports.createTaskInputSchema = exports.createTaskBodySchema = exports.taskListArchivedMcpInputSchema = exports.taskListArchivedInputSchema = exports.taskListForPostMcpInputSchema = exports.taskListForPostInputSchema = exports.taskGetMcpInputSchema = exports.taskGetInputSchema = void 0;
|
|
83
|
-
exports.
|
|
84
|
-
exports.
|
|
85
|
-
exports.
|
|
86
|
-
exports.TOOL_CONTRACTS = exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT = exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT = exports.INBOX_AUTOMATION_RULE_UPDATE_CONTRACT = exports.INBOX_AUTOMATION_RULE_CREATE_CONTRACT = void 0;
|
|
83
|
+
exports.MEDIA_GET_FOLDER_PATH_CONTRACT = exports.MEDIA_GET_FOLDER_CONTRACT = exports.MEDIA_LIST_FOLDERS_CONTRACT = exports.MEDIA_LIST_CONTRACT = exports.mediaGetUsageHistoryAgentInputSchema = exports.mediaGetUsageHistoryInputSchema = exports.mediaGetInputSchema = exports.mediaListLabelsInputSchema = exports.mediaGetFolderPathInputSchema = exports.mediaGetFolderInputSchema = exports.mediaListFoldersInputSchema = exports.mediaListAgentInputSchema = exports.mediaListInputSchema = exports.mediaGetUsageHistoryMcpInputSchema = exports.mediaGetMcpInputSchema = exports.mediaListLabelsMcpInputSchema = exports.mediaGetFolderPathMcpInputSchema = exports.mediaGetFolderMcpInputSchema = exports.mediaListFoldersMcpInputSchema = exports.mediaListMcpInputSchema = exports.HASHTAG_GROUPS_LIST_CONTRACT = exports.CAMPAIGNS_LIST_CONTRACT = exports.TAXONOMY_LIST_CONTRACT = exports.INTEGRATIONS_GET_OPTIONS_CONTRACT = exports.PINTEREST_CREATE_BOARD_CONTRACT = exports.pinterestCreateBoardOutputSchema = exports.pinterestCreateBoardMcpInputSchema = exports.pinterestCreateBoardInputSchema = exports.INTEGRATIONS_GET_CAPABILITIES_CONTRACT = exports.INTEGRATIONS_LIST_CONTRACT = exports.hashtagGroupsListOutputSchema = exports.campaignsListOutputSchema = exports.taxonomyListOutputSchema = exports.integrationsListOutputSchema = exports.hashtagGroupsListMcpInputSchema = exports.hashtagGroupsListInputSchema = exports.campaignsListMcpInputSchema = exports.campaignsListInputSchema = exports.taxonomyListMcpInputSchema = exports.taxonomyListInputSchema = exports.integrationsGetOptionsMcpInputSchema = exports.integrationsGetOptionsInputSchema = exports.integrationsGetCapabilitiesMcpInputSchema = exports.integrationsGetCapabilitiesInputSchema = exports.INTEGRATION_OPTION_KEYS = exports.integrationsListMcpInputSchema = exports.integrationsListInputSchema = exports.TASK_CHECKLIST_ITEM_DELETE_CONTRACT = exports.TASK_CHECKLIST_ITEM_MOVE_CONTRACT = exports.TASK_CHECKLIST_ITEM_UPDATE_CONTRACT = void 0;
|
|
84
|
+
exports.contentScheduleBatchInputSchema = exports.SCHEDULE_BATCH_MAX_ITEMS = exports.contentScheduleOutputSchema = exports.contentScheduleMcpInputSchema = exports.contentScheduleInputSchema = exports.CONTENT_UPDATE_NOTES_CONTRACT = exports.CONTENT_UPDATE_METADATA_CONTRACT = exports.updateContentNotesOutputSchema = exports.updateContentMetadataOutputSchema = exports.updateContentNotesMcpInputSchema = exports.updateContentNotesInputSchema = exports.updateContentMetadataMcpInputSchema = exports.updateContentMetadataInputSchema = exports.CONTENT_UPDATE_DRAFT_CONTRACT = exports.updateDraftContentOutputSchema = exports.updateDraftContentMcpInputSchema = exports.updateDraftContentInputSchema = exports.CONTENT_CREATE_DRAFTS_CONTRACT = exports.createDraftsContentOutputSchema = exports.createDraftsContentInputSchema = exports.CREATE_DRAFTS_MAX_ITEMS = exports.CONTENT_CREATE_DRAFT_CONTRACT = exports.createDraftContentMcpOutputSchema = exports.createDraftContentOutputSchema = exports.createDraftContentMcpInputSchema = exports.createDraftContentAgentInputSchema = exports.createDraftContentInputSchema = exports.ANALYTICS_GET_POST_CONTRACT = exports.ANALYTICS_GET_POSTS_AGGREGATE_CONTRACT = exports.ANALYTICS_GET_POSTS_CONTRACT = exports.ANALYTICS_GET_DEMOGRAPHICS_CONTRACT = exports.ANALYTICS_GET_HEALTH_CONTRACT = exports.ANALYTICS_GET_AGGREGATE_CONTRACT = exports.ANALYTICS_GET_SUMMARY_CONTRACT = exports.postAnalyticsInputSchema = exports.analyticsPostsAgentInputSchema = exports.analyticsPostsInputSchema = exports.analyticsIntegrationInputSchema = exports.analyticsAggregateAgentInputSchema = exports.analyticsAggregateInputSchema = exports.postAnalyticsMcpInputSchema = exports.analyticsPostsAggregateInputSchema = exports.analyticsPostsAggregateMcpInputSchema = exports.analyticsPostsMcpInputSchema = exports.analyticsIntegrationMcpInputSchema = exports.analyticsAggregateMcpInputSchema = exports.MEDIA_GET_USAGE_HISTORY_CONTRACT = exports.MEDIA_GET_CONTRACT = exports.MEDIA_INSPECT_AUDIO_CONTRACT = exports.MEDIA_LIST_LABELS_CONTRACT = void 0;
|
|
85
|
+
exports.contentSetIntendedPublishTimeMcpOutputSchema = exports.contentSetIntendedPublishTimeOutputSchema = exports.contentSetIntendedPublishTimeMcpInputSchema = exports.contentSetIntendedPublishTimeInputSchema = exports.CONTENT_DELETE_BATCH_CONTRACT = exports.CONTENT_DELETE_CONTRACT = exports.CONTENT_RETRY_CONTRACT = exports.CONTENT_RESTORE_CONTRACT = exports.CONTENT_ARCHIVE_CONTRACT = exports.CONTENT_PUBLISH_NOW_BATCH_CONTRACT = exports.CONTENT_PUBLISH_NOW_CONTRACT = exports.CONTENT_UNSCHEDULE_CONTRACT = exports.contentUnscheduleOutputSchema = exports.CONTENT_REVERT_TO_DRAFT_CONTRACT = exports.contentRevertToDraftOutputSchema = exports.contentRevertToDraftMcpInputSchema = exports.CONTENT_RESOLVE_PUBLISHING_RESULT_CONTRACT = exports.resolvePublishingResultOutputSchema = exports.resolvePublishingResultMcpInputSchema = exports.resolvePublishingResultInputSchema = exports.CONTENT_UPDATE_PUBLISHED_CAPTION_CONTRACT = exports.updatePublishedCaptionOutputSchema = exports.updatePublishedCaptionMcpInputSchema = exports.updatePublishedCaptionInputSchema = exports.contentRevertToDraftInputSchema = exports.contentUnscheduleInputSchema = exports.CONTENT_SCHEDULE_BATCH_CONTRACT = exports.CONTENT_SCHEDULE_CONTRACT = exports.deleteBatchOutputSchema = exports.deleteBatchInputSchema = exports.DELETE_BATCH_MAX_ITEMS = exports.publishNowBatchOutputSchema = exports.publishNowBatchInputSchema = exports.PUBLISH_NOW_BATCH_MAX_ITEMS = exports.deleteContentOutputSchema = exports.deleteContentMcpInputSchema = exports.deleteContentInputSchema = exports.retryContentOutputSchema = exports.retryContentMcpInputSchema = exports.retryContentInputSchema = exports.restoreContentOutputSchema = exports.restoreContentMcpInputSchema = exports.restoreContentInputSchema = exports.archiveContentOutputSchema = exports.archiveContentMcpInputSchema = exports.archiveContentInputSchema = exports.publishNowOutputSchema = exports.publishNowMcpInputSchema = exports.publishNowInputSchema = exports.contentScheduleBatchOutputSchema = void 0;
|
|
86
|
+
exports.completeMediaUploadInputSchema = exports.uploadMediaInputSchema = exports.TOOL_CONTRACTS = exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT = exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT = exports.INBOX_AUTOMATION_RULE_UPDATE_CONTRACT = exports.INBOX_AUTOMATION_RULE_CREATE_CONTRACT = exports.INBOX_AUTOMATION_RULE_GET_CONTRACT = exports.INBOX_AUTOMATION_RULES_LIST_CONTRACT = exports.listInboxAutomationExecutionsOutputSchema = exports.deleteInboxAutomationRuleOutputSchema = exports.inboxAutomationRuleResultOutputSchema = exports.inboxAutomationRulesListOutputSchema = exports.listInboxAutomationExecutionsMcpInputSchema = exports.listInboxAutomationExecutionsInputSchema = exports.deleteInboxAutomationRuleMcpInputSchema = exports.deleteInboxAutomationRuleInputSchema = exports.updateInboxAutomationRuleMcpInputSchema = exports.updateInboxAutomationRuleInputSchema = exports.createInboxAutomationRuleMcpInputSchema = exports.createInboxAutomationRuleInputSchema = exports.inboxAutomationRuleGetMcpInputSchema = exports.inboxAutomationRuleGetInputSchema = exports.inboxAutomationRulesListMcpInputSchema = exports.inboxAutomationRulesListInputSchema = exports.CLIENT_REVIEW_BATCH_SEND_CONTRACT = exports.CLIENT_REVIEW_BATCH_REMOVE_CONTENT_CONTRACT = exports.CLIENT_REVIEW_BATCH_CREATE_CONTRACT = exports.clientReviewBatchSendOutputSchema = exports.clientReviewBatchRemoveContentOutputSchema = exports.clientReviewBatchCreateOutputSchema = exports.clientReviewBatchSendMcpInputSchema = exports.clientReviewBatchSendInputSchema = exports.clientReviewBatchRemoveContentMcpInputSchema = exports.clientReviewBatchRemoveContentInputSchema = exports.clientReviewBatchCreateMcpInputSchema = exports.clientReviewBatchCreateInputSchema = exports.CONTENT_REVIEW_WITHDRAW_CONTRACT = exports.CONTENT_REVIEW_REQUEST_INTERNAL_CONTRACT = exports.WORKSPACE_MEMBERS_LIST_CONTRACT = exports.contentReviewWithdrawOutputSchema = exports.contentReviewRequestInternalOutputSchema = exports.contentReviewWithdrawMcpInputSchema = exports.contentReviewWithdrawInputSchema = exports.contentReviewRequestInternalMcpInputSchema = exports.contentReviewRequestInternalInputSchema = exports.workspaceMembersListOutputSchema = exports.workspaceMembersListMcpInputSchema = exports.workspaceMembersListInputSchema = exports.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT = void 0;
|
|
87
|
+
exports.MCP_BATCH_TOOL_CONTRACTS = exports.completeMediaUploadBatchInputSchema = exports.uploadMediaBatchInputSchema = exports.scheduleContentBatchMcpInputSchema = exports.scheduleContentBatchItemSchema = exports.createDraftContentBatchInputSchema = void 0;
|
|
87
88
|
exports.isTimezoneQualifiedIso8601Timestamp = isTimezoneQualifiedIso8601Timestamp;
|
|
89
|
+
exports.buildMcpBatchSummary = buildMcpBatchSummary;
|
|
90
|
+
exports.buildMcpBatchIdempotencyKey = buildMcpBatchIdempotencyKey;
|
|
88
91
|
var z9 = __importStar(__require("zod/v4"));
|
|
89
92
|
exports.TOOL_OPERATION_IDS = {
|
|
90
93
|
workspaceSummary: "workspace.summary",
|
|
@@ -119,6 +122,7 @@ var require_dist = __commonJS({
|
|
|
119
122
|
integrationsList: "integrations.list",
|
|
120
123
|
integrationsGetCapabilities: "integrations.get_capabilities",
|
|
121
124
|
integrationsGetOptions: "integrations.get_options",
|
|
125
|
+
pinterestCreateBoard: "integrations.create_pinterest_board",
|
|
122
126
|
taxonomyList: "taxonomy.list",
|
|
123
127
|
campaignsList: "campaigns.list",
|
|
124
128
|
hashtagGroupsList: "hashtag_groups.list",
|
|
@@ -130,6 +134,9 @@ var require_dist = __commonJS({
|
|
|
130
134
|
contentSchedule: "content.schedule",
|
|
131
135
|
contentScheduleBatch: "content.schedule_batch",
|
|
132
136
|
contentUnschedule: "content.unschedule",
|
|
137
|
+
contentRevertToDraft: "content.revert_to_draft",
|
|
138
|
+
contentUpdatePublishedCaption: "content.update_published_caption",
|
|
139
|
+
contentResolvePublishingResult: "content.resolve_publishing_result",
|
|
133
140
|
contentPublishNow: "content.publish_now",
|
|
134
141
|
contentPublishNowBatch: "content.publish_now_batch",
|
|
135
142
|
contentArchive: "content.archive",
|
|
@@ -138,11 +145,18 @@ var require_dist = __commonJS({
|
|
|
138
145
|
contentDelete: "content.delete",
|
|
139
146
|
contentDeleteBatch: "content.delete_batch",
|
|
140
147
|
contentSetIntendedPublishTime: "content.set_intended_publish_time",
|
|
148
|
+
workspaceMembersList: "workspace.members.list",
|
|
149
|
+
contentReviewRequestInternal: "content.review.request_internal",
|
|
150
|
+
contentReviewWithdraw: "content.review.withdraw",
|
|
151
|
+
clientReviewBatchCreate: "client_review.batch.create",
|
|
152
|
+
clientReviewBatchRemoveContent: "client_review.batch.remove_content",
|
|
153
|
+
clientReviewBatchSend: "client_review.batch.send",
|
|
141
154
|
mediaList: "media.list",
|
|
142
155
|
mediaListFolders: "media.list_folders",
|
|
143
156
|
mediaGetFolder: "media.get_folder",
|
|
144
157
|
mediaGetFolderPath: "media.get_folder_path",
|
|
145
158
|
mediaListLabels: "media.list_labels",
|
|
159
|
+
mediaInspectAudio: "media.inspect_audio",
|
|
146
160
|
mediaGet: "media.get",
|
|
147
161
|
mediaGetUsageHistory: "media.get_usage_history",
|
|
148
162
|
analyticsGetSummary: "analytics.get_summary",
|
|
@@ -258,6 +272,7 @@ var require_dist = __commonJS({
|
|
|
258
272
|
agent: exports.TOOL_OPERATION_IDS.integrationsGetCapabilities,
|
|
259
273
|
mcp: "get_integration_capabilities"
|
|
260
274
|
},
|
|
275
|
+
pinterestCreateBoard: { mcp: "create_pinterest_board" },
|
|
261
276
|
integrationsGetOptions: {
|
|
262
277
|
agent: exports.TOOL_OPERATION_IDS.integrationsGetOptions,
|
|
263
278
|
mcp: "get_integration_options"
|
|
@@ -303,6 +318,13 @@ var require_dist = __commonJS({
|
|
|
303
318
|
contentUnschedule: {
|
|
304
319
|
agent: exports.TOOL_OPERATION_IDS.contentUnschedule
|
|
305
320
|
},
|
|
321
|
+
contentRevertToDraft: {
|
|
322
|
+
mcp: "revert_content_to_draft"
|
|
323
|
+
},
|
|
324
|
+
contentUpdatePublishedCaption: { mcp: "update_published_caption" },
|
|
325
|
+
contentResolvePublishingResult: {
|
|
326
|
+
mcp: "resolve_publishing_result"
|
|
327
|
+
},
|
|
306
328
|
contentPublishNow: {
|
|
307
329
|
agent: exports.TOOL_OPERATION_IDS.contentPublishNow,
|
|
308
330
|
mcp: "publish_now"
|
|
@@ -333,6 +355,24 @@ var require_dist = __commonJS({
|
|
|
333
355
|
agent: exports.TOOL_OPERATION_IDS.contentSetIntendedPublishTime,
|
|
334
356
|
mcp: "set_intended_publish_time"
|
|
335
357
|
},
|
|
358
|
+
workspaceMembersList: {
|
|
359
|
+
mcp: "list_workspace_members"
|
|
360
|
+
},
|
|
361
|
+
contentReviewRequestInternal: {
|
|
362
|
+
mcp: "request_internal_approval"
|
|
363
|
+
},
|
|
364
|
+
contentReviewWithdraw: {
|
|
365
|
+
mcp: "withdraw_approval_request"
|
|
366
|
+
},
|
|
367
|
+
clientReviewBatchCreate: {
|
|
368
|
+
mcp: "create_client_review_batch"
|
|
369
|
+
},
|
|
370
|
+
clientReviewBatchRemoveContent: {
|
|
371
|
+
mcp: "remove_content_from_client_review_batch"
|
|
372
|
+
},
|
|
373
|
+
clientReviewBatchSend: {
|
|
374
|
+
mcp: "send_client_review_batch"
|
|
375
|
+
},
|
|
336
376
|
mediaList: {
|
|
337
377
|
agent: exports.TOOL_OPERATION_IDS.mediaList,
|
|
338
378
|
mcp: "list_media"
|
|
@@ -353,6 +393,7 @@ var require_dist = __commonJS({
|
|
|
353
393
|
agent: exports.TOOL_OPERATION_IDS.mediaListLabels,
|
|
354
394
|
mcp: "list_media_labels"
|
|
355
395
|
},
|
|
396
|
+
mediaInspectAudio: { mcp: "inspect_media_audio" },
|
|
356
397
|
mediaGet: {
|
|
357
398
|
agent: exports.TOOL_OPERATION_IDS.mediaGet,
|
|
358
399
|
mcp: "get_media"
|
|
@@ -417,12 +458,17 @@ var require_dist = __commonJS({
|
|
|
417
458
|
contentDraftRestore: "content.draft.restore",
|
|
418
459
|
contentDraftDelete: "content.draft.delete",
|
|
419
460
|
contentSchedule: "content.schedule",
|
|
461
|
+
contentReschedule: "content.reschedule",
|
|
420
462
|
contentPublishNow: "content.publish_now",
|
|
421
463
|
contentRetryPublish: "content.retry_publish",
|
|
422
464
|
contentReviewSetIntendedPublishTime: "content.review.set_intended_publish_time",
|
|
465
|
+
contentReviewRequest: "content.review.request",
|
|
466
|
+
contentReviewWithdraw: "content.review.withdraw",
|
|
467
|
+
clientReviewSend: "client_review.send",
|
|
423
468
|
mediaRead: "media.read",
|
|
424
469
|
analyticsRead: "analytics.read",
|
|
425
470
|
integrationsRead: "integrations.read",
|
|
471
|
+
integrationsManage: "integrations.manage",
|
|
426
472
|
taskBoardRead: "task_board.read",
|
|
427
473
|
taskBoardManage: "task_board.manage",
|
|
428
474
|
inboxRead: "inbox.read",
|
|
@@ -1056,7 +1102,6 @@ var require_dist = __commonJS({
|
|
|
1056
1102
|
"internal_review_approved",
|
|
1057
1103
|
"internal_review_outdated",
|
|
1058
1104
|
"internal_changes_requested",
|
|
1059
|
-
"internal_review_withdrawn",
|
|
1060
1105
|
"waiting_internal_before_client",
|
|
1061
1106
|
"ready_to_send_to_client",
|
|
1062
1107
|
"client_review_active",
|
|
@@ -1363,7 +1408,7 @@ var require_dist = __commonJS({
|
|
|
1363
1408
|
exports.CONTENT_LIST_CONTRACT = {
|
|
1364
1409
|
canonicalName: exports.TOOL_OPERATION_IDS.contentList,
|
|
1365
1410
|
wireNames: exports.TOOL_WIRE_NAMES.contentList,
|
|
1366
|
-
description: "List Maeve content for a workspace using public API filters and sanitized output. Defaults intentionally exclude review-held pending_approval content; explicit reviewLifecycle filters opt into review-held content and include reviewLifecycle on items.",
|
|
1411
|
+
description: "List Maeve content for a workspace using public API filters and sanitized output. TikTok deliveryMode distinguishes drafts delivered for completion in TikTok from direct publishing. Defaults intentionally exclude review-held pending_approval content; explicit reviewLifecycle filters opt into review-held content and include reviewLifecycle on items.",
|
|
1367
1412
|
inputSchema: exports.contentListInputSchema,
|
|
1368
1413
|
wireInputSchemas: {
|
|
1369
1414
|
agent: exports.contentListAgentInputSchema,
|
|
@@ -1387,7 +1432,7 @@ var require_dist = __commonJS({
|
|
|
1387
1432
|
mcp: {
|
|
1388
1433
|
name: exports.TOOL_WIRE_NAMES.contentList.mcp,
|
|
1389
1434
|
title: "List Content",
|
|
1390
|
-
description: "List Maeve content for a workspace using public API filters and sanitized output. Defaults intentionally exclude review-held pending_approval content; explicit reviewLifecycle filters opt into review-held content and include reviewLifecycle on items.",
|
|
1435
|
+
description: "List Maeve content for a workspace using public API filters and sanitized output. TikTok deliveryMode distinguishes drafts delivered for completion in TikTok from direct publishing. Defaults intentionally exclude review-held pending_approval content; explicit reviewLifecycle filters opt into review-held content and include reviewLifecycle on items.",
|
|
1391
1436
|
scope: "mcp:read",
|
|
1392
1437
|
toolsets: contentSelectionToolsets,
|
|
1393
1438
|
annotations: mcpReadAnnotations
|
|
@@ -1397,7 +1442,7 @@ var require_dist = __commonJS({
|
|
|
1397
1442
|
exports.CONTENT_GET_CONTRACT = {
|
|
1398
1443
|
canonicalName: exports.TOOL_OPERATION_IDS.contentGet,
|
|
1399
1444
|
wireNames: exports.TOOL_WIRE_NAMES.contentGet,
|
|
1400
|
-
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1445
|
+
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. For TikTok, deliveryMode tiktok_drafts means finish in TikTok even when status is sent. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1401
1446
|
inputSchema: exports.contentGetInputSchema,
|
|
1402
1447
|
wireInputSchemas: {
|
|
1403
1448
|
mcp: exports.contentGetMcpInputSchema
|
|
@@ -1417,7 +1462,7 @@ var require_dist = __commonJS({
|
|
|
1417
1462
|
mcp: {
|
|
1418
1463
|
name: exports.TOOL_WIRE_NAMES.contentGet.mcp,
|
|
1419
1464
|
title: "Get Content",
|
|
1420
|
-
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1465
|
+
description: "Get one Maeve content item with public API detail fields, sanitized media, and sanitized platform settings. For TikTok, deliveryMode tiktok_drafts means finish in TikTok even when status is sent. When reviewLifecycle is present, use its state, blockers, and nextAction instead of content.status alone for review workflow decisions.",
|
|
1421
1466
|
scope: "mcp:read",
|
|
1422
1467
|
toolsets: contentSelectionToolsets,
|
|
1423
1468
|
annotations: mcpReadAnnotations
|
|
@@ -1576,9 +1621,9 @@ var require_dist = __commonJS({
|
|
|
1576
1621
|
toolsets: taskBoardWorkflowToolsets,
|
|
1577
1622
|
annotations: {
|
|
1578
1623
|
readOnlyHint: false,
|
|
1579
|
-
destructiveHint:
|
|
1624
|
+
destructiveHint: true,
|
|
1580
1625
|
idempotentHint: false,
|
|
1581
|
-
openWorldHint:
|
|
1626
|
+
openWorldHint: true
|
|
1582
1627
|
}
|
|
1583
1628
|
}
|
|
1584
1629
|
}
|
|
@@ -1607,9 +1652,9 @@ var require_dist = __commonJS({
|
|
|
1607
1652
|
toolsets: taskBoardWorkflowToolsets,
|
|
1608
1653
|
annotations: {
|
|
1609
1654
|
readOnlyHint: false,
|
|
1610
|
-
destructiveHint:
|
|
1655
|
+
destructiveHint: true,
|
|
1611
1656
|
idempotentHint: true,
|
|
1612
|
-
openWorldHint:
|
|
1657
|
+
openWorldHint: true
|
|
1613
1658
|
}
|
|
1614
1659
|
}
|
|
1615
1660
|
}
|
|
@@ -1767,9 +1812,9 @@ var require_dist = __commonJS({
|
|
|
1767
1812
|
toolsets: taskBoardWorkflowToolsets,
|
|
1768
1813
|
annotations: {
|
|
1769
1814
|
readOnlyHint: false,
|
|
1770
|
-
destructiveHint:
|
|
1815
|
+
destructiveHint: true,
|
|
1771
1816
|
idempotentHint: false,
|
|
1772
|
-
openWorldHint:
|
|
1817
|
+
openWorldHint: true
|
|
1773
1818
|
}
|
|
1774
1819
|
}
|
|
1775
1820
|
}
|
|
@@ -1835,7 +1880,7 @@ var require_dist = __commonJS({
|
|
|
1835
1880
|
toolsets: taskBoardWorkflowToolsets,
|
|
1836
1881
|
annotations: {
|
|
1837
1882
|
readOnlyHint: false,
|
|
1838
|
-
destructiveHint:
|
|
1883
|
+
destructiveHint: true,
|
|
1839
1884
|
idempotentHint: true,
|
|
1840
1885
|
openWorldHint: false
|
|
1841
1886
|
}
|
|
@@ -1948,9 +1993,11 @@ var require_dist = __commonJS({
|
|
|
1948
1993
|
exports.INTEGRATION_OPTION_KEYS = [
|
|
1949
1994
|
"pinterest-boards",
|
|
1950
1995
|
"tiktok-creator-info",
|
|
1996
|
+
"tiktok-cml-tracks",
|
|
1951
1997
|
"locations",
|
|
1952
1998
|
"instagram-catalogs",
|
|
1953
1999
|
"instagram-products",
|
|
2000
|
+
"instagram-collaborators",
|
|
1954
2001
|
"instagram-audio",
|
|
1955
2002
|
"youtube-video-categories"
|
|
1956
2003
|
];
|
|
@@ -1962,8 +2009,11 @@ var require_dist = __commonJS({
|
|
|
1962
2009
|
integrationId: z9.string().uuid().describe("Maeve integration ID.")
|
|
1963
2010
|
}).strict();
|
|
1964
2011
|
var integrationOptionRequestShape = {
|
|
2012
|
+
countryCode: z9.string().trim().regex(/^[A-Za-z]{2}$/).optional().describe("Required for tiktok-cml-tracks: chart country, for example AU. Not a licensing guarantee."),
|
|
2013
|
+
genre: z9.string().max(128).optional().describe("Optional TikTok CML chart genre, for example ALL or POP. Defaults to ALL."),
|
|
2014
|
+
dateRange: z9.enum(["1DAY", "7DAY", "30DAY", "90DAY"]).optional().describe("Optional TikTok CML chart date range. Defaults to 7DAY."),
|
|
1965
2015
|
regionCode: z9.string().max(2).optional().describe("Optional ISO country code, for example US."),
|
|
1966
|
-
query: z9.string().max(255).optional().describe("Search text for locations, products, or audio."),
|
|
2016
|
+
query: z9.string().max(255).optional().describe("Search text for locations, products, or audio; exact username for instagram-collaborators."),
|
|
1967
2017
|
catalogId: z9.string().max(255).optional().describe("Instagram catalog ID for product search."),
|
|
1968
2018
|
audioType: z9.enum(["music", "original_sound"]).optional().describe("Required for instagram-audio: search licensed music or original sounds.")
|
|
1969
2019
|
};
|
|
@@ -2155,6 +2205,39 @@ var require_dist = __commonJS({
|
|
|
2155
2205
|
}
|
|
2156
2206
|
}
|
|
2157
2207
|
};
|
|
2208
|
+
exports.pinterestCreateBoardInputSchema = z9.object({
|
|
2209
|
+
integrationId: z9.uuid(),
|
|
2210
|
+
name: z9.string().trim().min(1).describe("Board name."),
|
|
2211
|
+
privacy: z9.enum(["PUBLIC", "SECRET"]).optional().describe("Defaults to PUBLIC, as in the web composer.")
|
|
2212
|
+
}).strict();
|
|
2213
|
+
exports.pinterestCreateBoardMcpInputSchema = exports.pinterestCreateBoardInputSchema.extend({
|
|
2214
|
+
workspaceId: z9.uuid(),
|
|
2215
|
+
confirmationText: z9.string().optional().describe("After approval, pass create_pinterest_board:<integrationId>.")
|
|
2216
|
+
}).strict();
|
|
2217
|
+
exports.pinterestCreateBoardOutputSchema = z9.object({
|
|
2218
|
+
board: z9.object({ id: z9.string(), name: z9.string(), privacy: z9.string() }).strict()
|
|
2219
|
+
}).strict();
|
|
2220
|
+
exports.PINTEREST_CREATE_BOARD_CONTRACT = {
|
|
2221
|
+
canonicalName: exports.TOOL_OPERATION_IDS.pinterestCreateBoard,
|
|
2222
|
+
wireNames: exports.TOOL_WIRE_NAMES.pinterestCreateBoard,
|
|
2223
|
+
description: "Create a public or secret Pinterest board using the existing web board creation operation.",
|
|
2224
|
+
inputSchema: exports.pinterestCreateBoardInputSchema,
|
|
2225
|
+
wireInputSchemas: { mcp: exports.pinterestCreateBoardMcpInputSchema },
|
|
2226
|
+
outputSchema: exports.pinterestCreateBoardOutputSchema,
|
|
2227
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.integrationsManage],
|
|
2228
|
+
confirmation: { required: true },
|
|
2229
|
+
idempotency: { required: false },
|
|
2230
|
+
surfaces: {
|
|
2231
|
+
mcp: {
|
|
2232
|
+
name: exports.TOOL_WIRE_NAMES.pinterestCreateBoard.mcp,
|
|
2233
|
+
title: "Create Pinterest Board",
|
|
2234
|
+
description: "Create one PUBLIC or SECRET board on the identified Pinterest account. Requires integrations.manage and explicit confirmationText create_pinterest_board:<integrationId>. This writes to Pinterest, even from Maeve staging. No automatic replay: if the response is lost, inspect pinterest-boards and native Pinterest before trying again. Board deletion is not exposed.",
|
|
2235
|
+
scope: "mcp:dangerous",
|
|
2236
|
+
toolsets: ["content_dangerous", "content_workflow_all"],
|
|
2237
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }
|
|
2238
|
+
}
|
|
2239
|
+
}
|
|
2240
|
+
};
|
|
2158
2241
|
exports.INTEGRATIONS_GET_OPTIONS_CONTRACT = {
|
|
2159
2242
|
canonicalName: exports.TOOL_OPERATION_IDS.integrationsGetOptions,
|
|
2160
2243
|
wireNames: exports.TOOL_WIRE_NAMES.integrationsGetOptions,
|
|
@@ -2185,7 +2268,7 @@ var require_dist = __commonJS({
|
|
|
2185
2268
|
readOnlyHint: true,
|
|
2186
2269
|
destructiveHint: false,
|
|
2187
2270
|
idempotentHint: true,
|
|
2188
|
-
openWorldHint:
|
|
2271
|
+
openWorldHint: false
|
|
2189
2272
|
}
|
|
2190
2273
|
}
|
|
2191
2274
|
}
|
|
@@ -2517,6 +2600,27 @@ var require_dist = __commonJS({
|
|
|
2517
2600
|
}
|
|
2518
2601
|
}
|
|
2519
2602
|
};
|
|
2603
|
+
exports.MEDIA_INSPECT_AUDIO_CONTRACT = {
|
|
2604
|
+
canonicalName: exports.TOOL_OPERATION_IDS.mediaInspectAudio,
|
|
2605
|
+
wireNames: exports.TOOL_WIRE_NAMES.mediaInspectAudio,
|
|
2606
|
+
description: "Inspect and cache video audio metadata before using Instagram licensed audio. Does not transform media.",
|
|
2607
|
+
inputSchema: exports.mediaGetInputSchema,
|
|
2608
|
+
wireInputSchemas: { mcp: exports.mediaGetMcpInputSchema },
|
|
2609
|
+
outputSchema: mcpStructuredContentOutputSchema,
|
|
2610
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.mediaRead],
|
|
2611
|
+
confirmation: { required: false },
|
|
2612
|
+
idempotency: { required: false },
|
|
2613
|
+
surfaces: {
|
|
2614
|
+
mcp: {
|
|
2615
|
+
name: exports.TOOL_WIRE_NAMES.mediaInspectAudio.mcp,
|
|
2616
|
+
title: "Inspect Media Audio",
|
|
2617
|
+
description: "Before publishing an Instagram Reel with licensed audio, inspect its video to preserve source audio mixing. Returns hasAudio and inspected. If hasAudio is null, inspection was inconclusive; do not claim the source mix is verified. Existing metadata is reused.",
|
|
2618
|
+
scope: "mcp:write",
|
|
2619
|
+
toolsets: mediaSelectionToolsets,
|
|
2620
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
2621
|
+
}
|
|
2622
|
+
}
|
|
2623
|
+
};
|
|
2520
2624
|
exports.MEDIA_GET_CONTRACT = {
|
|
2521
2625
|
canonicalName: exports.TOOL_OPERATION_IDS.mediaGet,
|
|
2522
2626
|
wireNames: exports.TOOL_WIRE_NAMES.mediaGet,
|
|
@@ -3071,7 +3175,7 @@ var require_dist = __commonJS({
|
|
|
3071
3175
|
})).max(10);
|
|
3072
3176
|
var createDraftCaptionsObjectSchema = z9.object({
|
|
3073
3177
|
canonical: z9.string().max(25e3).nullable().optional(),
|
|
3074
|
-
overrides: z9.record(z9.string(), z9.string().max(25e3))
|
|
3178
|
+
overrides: z9.record(z9.string(), z9.string().max(25e3)).optional()
|
|
3075
3179
|
});
|
|
3076
3180
|
var createDraftCaptionsSchema = createDraftCaptionsObjectSchema.optional();
|
|
3077
3181
|
var createDraftLinkedinPollSchema = z9.object({
|
|
@@ -3082,12 +3186,13 @@ var require_dist = __commonJS({
|
|
|
3082
3186
|
isVoterVisibleToAuthor: z9.boolean().optional()
|
|
3083
3187
|
}).strict();
|
|
3084
3188
|
var createDraftContentInputShape = {
|
|
3189
|
+
scheduledAt: z9.string().optional().describe("Optional scheduled time. Explicit offsets are preserved; local ISO 8601 times use the workspace timezone."),
|
|
3085
3190
|
idempotencyKey: z9.string().max(255).optional().describe("Optional create idempotency key. Generated and returned when omitted."),
|
|
3086
3191
|
integrationId: z9.string().uuid().describe("Target social integration ID."),
|
|
3087
3192
|
internalTitle: z9.string().max(500).nullable().optional().describe("Optional internal planning title. Never published."),
|
|
3088
3193
|
publishTitle: z9.string().max(500).nullable().optional().describe("Optional provider-facing title for platforms that support or require one."),
|
|
3089
3194
|
notes: z9.string().max(1e5).optional().describe("Optional rich-text notes (HTML) attached to the content. Internal - never published."),
|
|
3090
|
-
captions: createDraftCaptionsSchema.describe("Optional canonical and platform
|
|
3195
|
+
captions: createDraftCaptionsSchema.describe("Optional canonical caption and platform overrides. Omit overrides to preserve them on edits; overrides: {} explicitly clears them."),
|
|
3091
3196
|
contentMedia: createDraftContentMediaSchema.optional().describe("Canonical media relationship input with per-content crops, tags, ordering, and cover metadata."),
|
|
3092
3197
|
poll: createDraftLinkedinPollSchema.nullable().optional().describe("LinkedIn poll content. Required when postType is poll."),
|
|
3093
3198
|
settings: createDraftContentSettingsSchema.optional().describe("Optional strict platform-specific provider settings."),
|
|
@@ -3102,12 +3207,14 @@ var require_dist = __commonJS({
|
|
|
3102
3207
|
priority: z9.enum(WORKBENCH_PRIORITY_VALUES).optional().describe("Optional workbench priority."),
|
|
3103
3208
|
assigneeIds: z9.array(z9.string().uuid()).optional().describe("Optional assignee user IDs."),
|
|
3104
3209
|
threadMessages: z9.array(z9.object({
|
|
3105
|
-
captions: createDraftCaptionsObjectSchema
|
|
3210
|
+
captions: createDraftCaptionsObjectSchema.extend({
|
|
3211
|
+
overrides: z9.record(z9.string(), z9.never()).optional()
|
|
3212
|
+
}),
|
|
3106
3213
|
contentMedia: createDraftContentMediaSchema.optional()
|
|
3107
|
-
})).max(20).optional().describe("Optional
|
|
3214
|
+
})).max(20).optional().describe("Optional replies. Use captions.canonical; overrides are rejected.")
|
|
3108
3215
|
};
|
|
3109
3216
|
exports.createDraftContentInputSchema = z9.object(createDraftContentInputShape).strict();
|
|
3110
|
-
exports.createDraftContentAgentInputSchema = exports.createDraftContentInputSchema.extend({
|
|
3217
|
+
exports.createDraftContentAgentInputSchema = exports.createDraftContentInputSchema.omit({ scheduledAt: true }).extend({
|
|
3111
3218
|
settings: createDraftContentAgentSettingsSchema.optional().describe("Optional strict platform-specific provider settings.")
|
|
3112
3219
|
});
|
|
3113
3220
|
exports.createDraftContentMcpInputSchema = z9.object({
|
|
@@ -3123,7 +3230,9 @@ var require_dist = __commonJS({
|
|
|
3123
3230
|
platform: z9.string().nullable(),
|
|
3124
3231
|
accountLabel: z9.string().nullable(),
|
|
3125
3232
|
groupId: z9.string().optional(),
|
|
3126
|
-
contentIds: z9.array(z9.string()).optional()
|
|
3233
|
+
contentIds: z9.array(z9.string()).optional(),
|
|
3234
|
+
scheduledAt: z9.string().optional(),
|
|
3235
|
+
workspaceId: z9.string().optional()
|
|
3127
3236
|
}).strict();
|
|
3128
3237
|
var createDraftIdempotencyResultSchema = z9.object({
|
|
3129
3238
|
key: z9.string(),
|
|
@@ -3133,7 +3242,25 @@ var require_dist = __commonJS({
|
|
|
3133
3242
|
ok: z9.literal(true),
|
|
3134
3243
|
renderHint: z9.literal("draft_created"),
|
|
3135
3244
|
content: createDraftContentResultSchema,
|
|
3136
|
-
idempotency: createDraftIdempotencyResultSchema
|
|
3245
|
+
idempotency: createDraftIdempotencyResultSchema,
|
|
3246
|
+
nextReviewState: z9.object({ status: z9.string(), action: z9.literal("scheduled") }).strict().optional()
|
|
3247
|
+
}).strict();
|
|
3248
|
+
exports.createDraftContentMcpOutputSchema = z9.object({
|
|
3249
|
+
content: z9.object({
|
|
3250
|
+
id: z9.string(),
|
|
3251
|
+
status: z9.string(),
|
|
3252
|
+
appUrl: z9.url().optional(),
|
|
3253
|
+
groupId: z9.string().optional(),
|
|
3254
|
+
contentIds: z9.array(z9.string()).optional(),
|
|
3255
|
+
scheduledAt: z9.string().optional(),
|
|
3256
|
+
workspaceId: z9.string().optional()
|
|
3257
|
+
}).strict(),
|
|
3258
|
+
idempotencyKey: z9.string(),
|
|
3259
|
+
idempotency: createDraftIdempotencyResultSchema,
|
|
3260
|
+
nextReviewState: z9.object({
|
|
3261
|
+
status: z9.string(),
|
|
3262
|
+
action: z9.enum(["review_draft", "scheduled"])
|
|
3263
|
+
}).strict()
|
|
3137
3264
|
}).strict();
|
|
3138
3265
|
exports.CONTENT_CREATE_DRAFT_CONTRACT = {
|
|
3139
3266
|
canonicalName: exports.TOOL_OPERATION_IDS.contentCreateDraft,
|
|
@@ -3144,6 +3271,9 @@ var require_dist = __commonJS({
|
|
|
3144
3271
|
agent: exports.createDraftContentAgentInputSchema,
|
|
3145
3272
|
mcp: exports.createDraftContentMcpInputSchema
|
|
3146
3273
|
},
|
|
3274
|
+
wireOutputSchemas: {
|
|
3275
|
+
mcp: exports.createDraftContentMcpOutputSchema
|
|
3276
|
+
},
|
|
3147
3277
|
outputSchema: exports.createDraftContentOutputSchema,
|
|
3148
3278
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentDraftCreate],
|
|
3149
3279
|
confirmation: {
|
|
@@ -3176,7 +3306,7 @@ var require_dist = __commonJS({
|
|
|
3176
3306
|
mcp: {
|
|
3177
3307
|
name: exports.TOOL_WIRE_NAMES.contentCreateDraft.mcp,
|
|
3178
3308
|
title: "Create Draft Content",
|
|
3179
|
-
description: "Create Maeve content as a draft
|
|
3309
|
+
description: "Create Maeve content as a draft, or create and schedule atomically when scheduledAt is supplied. Scheduling uses workspace timezone for local timestamps and enforces the same review and publishing validations as schedule_content. Inspect platform capabilities first.",
|
|
3180
3310
|
scope: "mcp:write",
|
|
3181
3311
|
toolsets: ["content_drafting", "content_workflow", "content_workflow_all"],
|
|
3182
3312
|
annotations: {
|
|
@@ -3191,7 +3321,7 @@ var require_dist = __commonJS({
|
|
|
3191
3321
|
exports.CREATE_DRAFTS_MAX_ITEMS = 20;
|
|
3192
3322
|
exports.createDraftsContentInputSchema = z9.object({
|
|
3193
3323
|
idempotencyKey: z9.string().max(255).optional().describe("Optional batch idempotency key. Generated and returned when omitted."),
|
|
3194
|
-
drafts: z9.array(exports.createDraftContentInputSchema).min(1).max(exports.CREATE_DRAFTS_MAX_ITEMS).describe("Draft definitions to create. Each item takes the same fields as content.create_draft.")
|
|
3324
|
+
drafts: z9.array(exports.createDraftContentInputSchema.omit({ scheduledAt: true })).min(1).max(exports.CREATE_DRAFTS_MAX_ITEMS).describe("Draft definitions to create. Each item takes the same fields as content.create_draft.")
|
|
3195
3325
|
}).strict();
|
|
3196
3326
|
exports.createDraftsContentOutputSchema = z9.object({
|
|
3197
3327
|
ok: z9.literal(true),
|
|
@@ -3253,7 +3383,7 @@ var require_dist = __commonJS({
|
|
|
3253
3383
|
contentId: z9.string().uuid().describe("Draft or scheduled content ID to edit."),
|
|
3254
3384
|
internalTitle: z9.string().max(500).nullable().optional().describe("Internal planning title. Never published. Pass null to clear."),
|
|
3255
3385
|
publishTitle: z9.string().max(500).nullable().optional().describe("Provider-facing title for platforms that support or require one. Pass null to clear."),
|
|
3256
|
-
captions: createDraftCaptionsObjectSchema.optional().describe("Canonical caption and
|
|
3386
|
+
captions: createDraftCaptionsObjectSchema.optional().describe("Canonical caption and platform overrides. Omit overrides to preserve them; overrides: {} explicitly clears them."),
|
|
3257
3387
|
contentMedia: createDraftContentMediaSchema.optional().describe("Canonical media relationship input with per-content crops, tags, ordering, and cover metadata."),
|
|
3258
3388
|
poll: createDraftLinkedinPollSchema.nullable().optional().describe("LinkedIn poll content. Required when postType is poll."),
|
|
3259
3389
|
settings: createDraftContentSettingsSchema.optional().describe("Strict platform-specific provider settings. Inspect get_integration_capabilities first."),
|
|
@@ -3261,9 +3391,11 @@ var require_dist = __commonJS({
|
|
|
3261
3391
|
firstComment: z9.string().optional().describe("First comment text."),
|
|
3262
3392
|
shareToFeed: z9.boolean().optional().describe("Feed-sharing setting."),
|
|
3263
3393
|
threadMessages: z9.array(z9.object({
|
|
3264
|
-
captions: createDraftCaptionsObjectSchema
|
|
3394
|
+
captions: createDraftCaptionsObjectSchema.extend({
|
|
3395
|
+
overrides: z9.record(z9.string(), z9.never()).optional()
|
|
3396
|
+
}),
|
|
3265
3397
|
contentMedia: createDraftContentMediaSchema.optional()
|
|
3266
|
-
})).max(20).optional().describe("Thread
|
|
3398
|
+
})).max(20).optional().describe("Thread replies. Use captions.canonical; overrides are rejected.")
|
|
3267
3399
|
};
|
|
3268
3400
|
exports.updateDraftContentInputSchema = z9.object(updateDraftContentInputShape).strict();
|
|
3269
3401
|
exports.updateDraftContentMcpInputSchema = z9.object({
|
|
@@ -3274,6 +3406,7 @@ var require_dist = __commonJS({
|
|
|
3274
3406
|
content: z9.object({
|
|
3275
3407
|
id: z9.string(),
|
|
3276
3408
|
status: z9.string(),
|
|
3409
|
+
appUrl: z9.url().optional(),
|
|
3277
3410
|
groupId: z9.string().optional(),
|
|
3278
3411
|
contentIds: z9.array(z9.string()).optional()
|
|
3279
3412
|
}).strict(),
|
|
@@ -3322,9 +3455,9 @@ var require_dist = __commonJS({
|
|
|
3322
3455
|
toolsets: ["content_drafting", "content_workflow", "content_workflow_all"],
|
|
3323
3456
|
annotations: {
|
|
3324
3457
|
readOnlyHint: false,
|
|
3325
|
-
destructiveHint:
|
|
3458
|
+
destructiveHint: true,
|
|
3326
3459
|
idempotentHint: true,
|
|
3327
|
-
openWorldHint:
|
|
3460
|
+
openWorldHint: true
|
|
3328
3461
|
}
|
|
3329
3462
|
}
|
|
3330
3463
|
}
|
|
@@ -3455,7 +3588,7 @@ var require_dist = __commonJS({
|
|
|
3455
3588
|
toolsets: ["content_drafting", "content_workflow", "content_workflow_all"],
|
|
3456
3589
|
annotations: {
|
|
3457
3590
|
readOnlyHint: false,
|
|
3458
|
-
destructiveHint:
|
|
3591
|
+
destructiveHint: true,
|
|
3459
3592
|
idempotentHint: true,
|
|
3460
3593
|
openWorldHint: false
|
|
3461
3594
|
}
|
|
@@ -3497,7 +3630,7 @@ var require_dist = __commonJS({
|
|
|
3497
3630
|
toolsets: ["content_drafting", "content_workflow", "content_workflow_all"],
|
|
3498
3631
|
annotations: {
|
|
3499
3632
|
readOnlyHint: false,
|
|
3500
|
-
destructiveHint:
|
|
3633
|
+
destructiveHint: true,
|
|
3501
3634
|
idempotentHint: true,
|
|
3502
3635
|
openWorldHint: false
|
|
3503
3636
|
}
|
|
@@ -3753,9 +3886,9 @@ var require_dist = __commonJS({
|
|
|
3753
3886
|
toolsets: ["content_scheduling", "content_workflow", "content_workflow_all"],
|
|
3754
3887
|
annotations: {
|
|
3755
3888
|
readOnlyHint: false,
|
|
3756
|
-
destructiveHint:
|
|
3889
|
+
destructiveHint: true,
|
|
3757
3890
|
idempotentHint: false,
|
|
3758
|
-
openWorldHint:
|
|
3891
|
+
openWorldHint: true
|
|
3759
3892
|
}
|
|
3760
3893
|
}
|
|
3761
3894
|
}
|
|
@@ -3801,6 +3934,116 @@ var require_dist = __commonJS({
|
|
|
3801
3934
|
exports.contentUnscheduleInputSchema = z9.object({
|
|
3802
3935
|
contentId: z9.string().uuid().describe("Scheduled Maeve content ID to revert to draft.")
|
|
3803
3936
|
}).strict();
|
|
3937
|
+
exports.contentRevertToDraftInputSchema = z9.object({
|
|
3938
|
+
contentId: z9.string().uuid().describe("Scheduled root content edition to return to draft."),
|
|
3939
|
+
expectedRootPostId: z9.string().uuid().optional(),
|
|
3940
|
+
expectedRootEditionIds: z9.array(z9.string().uuid()).min(1).max(100).optional()
|
|
3941
|
+
}).strict();
|
|
3942
|
+
exports.updatePublishedCaptionInputSchema = z9.object({
|
|
3943
|
+
contentId: z9.string().uuid(),
|
|
3944
|
+
message: z9.string().max(25e3).describe("Replacement Facebook caption. An empty string clears it.")
|
|
3945
|
+
}).strict();
|
|
3946
|
+
exports.updatePublishedCaptionMcpInputSchema = exports.updatePublishedCaptionInputSchema.extend({
|
|
3947
|
+
workspaceId: z9.string().uuid(),
|
|
3948
|
+
confirmationText: z9.string().optional().describe("Exact confirmation: update_published_caption:<contentId>.")
|
|
3949
|
+
});
|
|
3950
|
+
exports.updatePublishedCaptionOutputSchema = z9.object({
|
|
3951
|
+
content: z9.object({
|
|
3952
|
+
id: z9.string().uuid(),
|
|
3953
|
+
captions: z9.object({ canonical: z9.string().nullable(), overrides: z9.record(z9.string(), z9.string()) }),
|
|
3954
|
+
resolvedCaption: z9.string()
|
|
3955
|
+
}).strict()
|
|
3956
|
+
}).strict();
|
|
3957
|
+
exports.CONTENT_UPDATE_PUBLISHED_CAPTION_CONTRACT = {
|
|
3958
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentUpdatePublishedCaption,
|
|
3959
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentUpdatePublishedCaption,
|
|
3960
|
+
description: "Replace the caption on published Facebook content using the existing web action.",
|
|
3961
|
+
inputSchema: exports.updatePublishedCaptionInputSchema,
|
|
3962
|
+
wireInputSchemas: { mcp: exports.updatePublishedCaptionMcpInputSchema },
|
|
3963
|
+
outputSchema: exports.updatePublishedCaptionOutputSchema,
|
|
3964
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentPublishNow],
|
|
3965
|
+
confirmation: { required: true, actionType: exports.TOOL_OPERATION_IDS.contentUpdatePublishedCaption },
|
|
3966
|
+
idempotency: { required: false },
|
|
3967
|
+
surfaces: {
|
|
3968
|
+
mcp: {
|
|
3969
|
+
name: exports.TOOL_WIRE_NAMES.contentUpdatePublishedCaption.mcp,
|
|
3970
|
+
title: "Update Published Facebook Caption",
|
|
3971
|
+
description: "Replace the caption of an already published, user-created Facebook root content item. Read get_content first. This changes the live Facebook caption. Use update_content for drafts or scheduled content. Pass message as an empty string to clear, or the prior caption to restore it. Existing provider and content-state restrictions apply. Requires exact confirmationText update_published_caption:<contentId>.",
|
|
3972
|
+
scope: "mcp:dangerous",
|
|
3973
|
+
toolsets: ["content_workflow_all"],
|
|
3974
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true }
|
|
3975
|
+
}
|
|
3976
|
+
}
|
|
3977
|
+
};
|
|
3978
|
+
exports.resolvePublishingResultInputSchema = z9.object({
|
|
3979
|
+
contentId: z9.string().uuid(),
|
|
3980
|
+
outcome: z9.enum(["published", "not_published"]).describe("The result the user verified on the connected platform."),
|
|
3981
|
+
permalink: z9.string().url().max(2048).nullable().optional(),
|
|
3982
|
+
platformPostId: z9.string().max(512).nullable().optional()
|
|
3983
|
+
}).strict();
|
|
3984
|
+
exports.resolvePublishingResultMcpInputSchema = exports.resolvePublishingResultInputSchema.extend({
|
|
3985
|
+
workspaceId: z9.string().uuid(),
|
|
3986
|
+
confirmationText: z9.string().optional().describe("Exact confirmation: resolve_publishing_result:<contentId>:<outcome>.")
|
|
3987
|
+
});
|
|
3988
|
+
exports.resolvePublishingResultOutputSchema = z9.object({
|
|
3989
|
+
content: z9.object({ id: z9.string().uuid(), status: z9.enum(["sent", "failed"]) }).strict()
|
|
3990
|
+
}).strict();
|
|
3991
|
+
exports.CONTENT_RESOLVE_PUBLISHING_RESULT_CONTRACT = {
|
|
3992
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentResolvePublishingResult,
|
|
3993
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentResolvePublishingResult,
|
|
3994
|
+
description: "Record a verified outcome for content awaiting manual publishing confirmation, using the existing web recovery action.",
|
|
3995
|
+
inputSchema: exports.resolvePublishingResultInputSchema,
|
|
3996
|
+
wireInputSchemas: { mcp: exports.resolvePublishingResultMcpInputSchema },
|
|
3997
|
+
outputSchema: exports.resolvePublishingResultOutputSchema,
|
|
3998
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentRetryPublish],
|
|
3999
|
+
confirmation: { required: true, actionType: exports.TOOL_OPERATION_IDS.contentResolvePublishingResult },
|
|
4000
|
+
idempotency: { required: false },
|
|
4001
|
+
surfaces: {
|
|
4002
|
+
mcp: {
|
|
4003
|
+
name: exports.TOOL_WIRE_NAMES.contentResolvePublishingResult.mcp,
|
|
4004
|
+
title: "Resolve Publishing Result",
|
|
4005
|
+
description: "Only after the user verifies the connected platform, record published or not_published for content awaiting manual publishing confirmation. Read get_content first. Ordinary failed content is not eligible. Published marks it sent; not_published leaves it failed and does not retry. Repeating the same outcome is safe; a contradictory outcome is rejected. Optional permalink/platformPostId must come from the verified provider result. Requires exact confirmationText resolve_publishing_result:<contentId>:<outcome>.",
|
|
4006
|
+
scope: "mcp:dangerous",
|
|
4007
|
+
toolsets: ["content_workflow_all"],
|
|
4008
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false }
|
|
4009
|
+
}
|
|
4010
|
+
}
|
|
4011
|
+
};
|
|
4012
|
+
exports.contentRevertToDraftMcpInputSchema = exports.contentRevertToDraftInputSchema.extend({
|
|
4013
|
+
workspaceId: z9.string().uuid().describe("Maeve workspace ID.")
|
|
4014
|
+
});
|
|
4015
|
+
exports.contentRevertToDraftOutputSchema = z9.object({
|
|
4016
|
+
content: z9.object({
|
|
4017
|
+
id: z9.string().uuid(),
|
|
4018
|
+
status: z9.literal("draft"),
|
|
4019
|
+
affectedRootEditionIds: z9.array(z9.string().uuid()).optional()
|
|
4020
|
+
}).strict()
|
|
4021
|
+
}).strict();
|
|
4022
|
+
exports.CONTENT_REVERT_TO_DRAFT_CONTRACT = {
|
|
4023
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentRevertToDraft,
|
|
4024
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentRevertToDraft,
|
|
4025
|
+
description: "Return all scheduled editions of the same root content to draft using the existing web lifecycle action.",
|
|
4026
|
+
inputSchema: exports.contentRevertToDraftInputSchema,
|
|
4027
|
+
wireInputSchemas: { mcp: exports.contentRevertToDraftMcpInputSchema },
|
|
4028
|
+
outputSchema: exports.contentRevertToDraftOutputSchema,
|
|
4029
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentReschedule],
|
|
4030
|
+
confirmation: {
|
|
4031
|
+
required: false,
|
|
4032
|
+
actionType: exports.TOOL_OPERATION_IDS.contentRevertToDraft,
|
|
4033
|
+
buildSummary: (input) => `Return scheduled editions of content ${input.contentId} to draft.`
|
|
4034
|
+
},
|
|
4035
|
+
idempotency: { required: false },
|
|
4036
|
+
surfaces: {
|
|
4037
|
+
mcp: {
|
|
4038
|
+
name: exports.TOOL_WIRE_NAMES.contentRevertToDraft.mcp,
|
|
4039
|
+
title: "Revert Content to Draft",
|
|
4040
|
+
description: "Cancel scheduling and return every scheduled edition of the same root content to draft, including thread replies. Other channel editions can be affected. Published content and content inside the publish execution window cannot be reverted. Optional expectedRootPostId and expectedRootEditionIds must be supplied together and must match the current scheduled editions; a stale scope is rejected. This is the existing web Revert to draft action.",
|
|
4041
|
+
scope: "mcp:write",
|
|
4042
|
+
toolsets: ["content_scheduling", "content_workflow", "content_workflow_all"],
|
|
4043
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false }
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
};
|
|
3804
4047
|
exports.contentUnscheduleOutputSchema = z9.object({
|
|
3805
4048
|
ok: z9.literal(true),
|
|
3806
4049
|
renderHint: z9.literal("content_unscheduled"),
|
|
@@ -3871,7 +4114,7 @@ var require_dist = __commonJS({
|
|
|
3871
4114
|
toolsets: ["content_dangerous", "content_workflow_all"],
|
|
3872
4115
|
annotations: {
|
|
3873
4116
|
readOnlyHint: false,
|
|
3874
|
-
destructiveHint:
|
|
4117
|
+
destructiveHint: true,
|
|
3875
4118
|
idempotentHint: false,
|
|
3876
4119
|
openWorldHint: true
|
|
3877
4120
|
}
|
|
@@ -3945,7 +4188,7 @@ var require_dist = __commonJS({
|
|
|
3945
4188
|
toolsets: ["content_dangerous", "content_workflow_all"],
|
|
3946
4189
|
annotations: {
|
|
3947
4190
|
readOnlyHint: false,
|
|
3948
|
-
destructiveHint:
|
|
4191
|
+
destructiveHint: false,
|
|
3949
4192
|
idempotentHint: true,
|
|
3950
4193
|
openWorldHint: false
|
|
3951
4194
|
}
|
|
@@ -4030,7 +4273,7 @@ var require_dist = __commonJS({
|
|
|
4030
4273
|
toolsets: ["content_dangerous", "content_workflow_all"],
|
|
4031
4274
|
annotations: {
|
|
4032
4275
|
readOnlyHint: false,
|
|
4033
|
-
destructiveHint:
|
|
4276
|
+
destructiveHint: true,
|
|
4034
4277
|
idempotentHint: false,
|
|
4035
4278
|
openWorldHint: true
|
|
4036
4279
|
}
|
|
@@ -4136,6 +4379,8 @@ var require_dist = __commonJS({
|
|
|
4136
4379
|
return `Stage a ${fields} change on the open draft. Nothing is saved until you save the draft.`;
|
|
4137
4380
|
}
|
|
4138
4381
|
function buildCreateDraftConfirmationSummary(input) {
|
|
4382
|
+
if (input.scheduledAt)
|
|
4383
|
+
return `Create and schedule content for ${input.scheduledAt}`;
|
|
4139
4384
|
const title = truncateText(resolveCreateDraftTitle(input), 120);
|
|
4140
4385
|
const captionPreview = title ? null : truncateText(input.captions?.canonical, 120);
|
|
4141
4386
|
const target = `integration ${input.integrationId}`;
|
|
@@ -4290,6 +4535,18 @@ var require_dist = __commonJS({
|
|
|
4290
4535
|
title: z9.string().nullable()
|
|
4291
4536
|
}).strict()
|
|
4292
4537
|
}).strict();
|
|
4538
|
+
exports.contentSetIntendedPublishTimeMcpOutputSchema = z9.object({
|
|
4539
|
+
content: z9.object({
|
|
4540
|
+
id: z9.string(),
|
|
4541
|
+
status: z9.enum(["draft", "pending_approval"]),
|
|
4542
|
+
scheduledAt: z9.string(),
|
|
4543
|
+
workspaceId: z9.string()
|
|
4544
|
+
}).strict(),
|
|
4545
|
+
nextReviewState: z9.object({
|
|
4546
|
+
status: z9.enum(["draft", "pending_approval"]),
|
|
4547
|
+
action: z9.literal("intended_publish_time_set")
|
|
4548
|
+
}).strict()
|
|
4549
|
+
}).strict();
|
|
4293
4550
|
exports.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT = {
|
|
4294
4551
|
canonicalName: exports.TOOL_OPERATION_IDS.contentSetIntendedPublishTime,
|
|
4295
4552
|
wireNames: exports.TOOL_WIRE_NAMES.contentSetIntendedPublishTime,
|
|
@@ -4298,6 +4555,9 @@ var require_dist = __commonJS({
|
|
|
4298
4555
|
wireInputSchemas: {
|
|
4299
4556
|
mcp: exports.contentSetIntendedPublishTimeMcpInputSchema
|
|
4300
4557
|
},
|
|
4558
|
+
wireOutputSchemas: {
|
|
4559
|
+
mcp: exports.contentSetIntendedPublishTimeMcpOutputSchema
|
|
4560
|
+
},
|
|
4301
4561
|
outputSchema: exports.contentSetIntendedPublishTimeOutputSchema,
|
|
4302
4562
|
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentReviewSetIntendedPublishTime],
|
|
4303
4563
|
confirmation: {
|
|
@@ -4323,13 +4583,309 @@ var require_dist = __commonJS({
|
|
|
4323
4583
|
toolsets: ["content_scheduling", "content_workflow", "content_workflow_all"],
|
|
4324
4584
|
annotations: {
|
|
4325
4585
|
readOnlyHint: false,
|
|
4326
|
-
destructiveHint:
|
|
4586
|
+
destructiveHint: true,
|
|
4327
4587
|
idempotentHint: true,
|
|
4328
4588
|
openWorldHint: false
|
|
4329
4589
|
}
|
|
4330
4590
|
}
|
|
4331
4591
|
}
|
|
4332
4592
|
};
|
|
4593
|
+
var workspaceRoleValues = ["manager", "editor", "creator", "viewer"];
|
|
4594
|
+
var approvalPolicyValues = ["any", "all", "in_order"];
|
|
4595
|
+
exports.workspaceMembersListInputSchema = z9.object({}).strict();
|
|
4596
|
+
exports.workspaceMembersListMcpInputSchema = z9.object({
|
|
4597
|
+
workspaceId: workspaceIdSchema
|
|
4598
|
+
}).strict();
|
|
4599
|
+
exports.workspaceMembersListOutputSchema = z9.object({
|
|
4600
|
+
members: z9.array(z9.object({
|
|
4601
|
+
id: z9.string(),
|
|
4602
|
+
displayName: z9.string(),
|
|
4603
|
+
email: z9.string(),
|
|
4604
|
+
avatarUrl: z9.string().nullable(),
|
|
4605
|
+
role: z9.enum(workspaceRoleValues)
|
|
4606
|
+
}).strict())
|
|
4607
|
+
}).strict();
|
|
4608
|
+
var contentReviewRequestInternalInputShape = {
|
|
4609
|
+
contentId: z9.string().uuid().describe("Draft or rejected content ID to send for internal approval."),
|
|
4610
|
+
approverIds: z9.array(z9.string().uuid()).min(1).max(50).describe("Workspace member user IDs from list_workspace_members. Every approver is notified."),
|
|
4611
|
+
policy: z9.enum(approvalPolicyValues).describe("any: one approval is enough. all: every approver must approve. in_order: approvers decide one at a time in the listed order.")
|
|
4612
|
+
};
|
|
4613
|
+
exports.contentReviewRequestInternalInputSchema = z9.object(contentReviewRequestInternalInputShape).strict();
|
|
4614
|
+
exports.contentReviewRequestInternalMcpInputSchema = z9.object({
|
|
4615
|
+
workspaceId: workspaceIdSchema,
|
|
4616
|
+
...contentReviewRequestInternalInputShape
|
|
4617
|
+
}).strict();
|
|
4618
|
+
var contentReviewWithdrawInputShape = {
|
|
4619
|
+
contentId: z9.string().uuid().describe("Content ID whose pending internal approval request should be withdrawn.")
|
|
4620
|
+
};
|
|
4621
|
+
exports.contentReviewWithdrawInputSchema = z9.object(contentReviewWithdrawInputShape).strict();
|
|
4622
|
+
exports.contentReviewWithdrawMcpInputSchema = z9.object({
|
|
4623
|
+
workspaceId: workspaceIdSchema,
|
|
4624
|
+
...contentReviewWithdrawInputShape
|
|
4625
|
+
}).strict();
|
|
4626
|
+
var contentReviewMutationContentSchema = z9.object({
|
|
4627
|
+
id: z9.string(),
|
|
4628
|
+
workspaceId: z9.string(),
|
|
4629
|
+
status: z9.string()
|
|
4630
|
+
}).strict();
|
|
4631
|
+
var contentReviewLifecycleSchema = z9.record(z9.string(), z9.unknown()).nullable();
|
|
4632
|
+
function contentReviewOutputSchema(actions) {
|
|
4633
|
+
return z9.object({
|
|
4634
|
+
content: contentReviewMutationContentSchema,
|
|
4635
|
+
reviewLifecycle: contentReviewLifecycleSchema,
|
|
4636
|
+
nextReviewState: z9.object({
|
|
4637
|
+
status: z9.string(),
|
|
4638
|
+
action: z9.enum(actions)
|
|
4639
|
+
}).strict()
|
|
4640
|
+
}).strict();
|
|
4641
|
+
}
|
|
4642
|
+
exports.contentReviewRequestInternalOutputSchema = contentReviewOutputSchema([
|
|
4643
|
+
"internal_approval_requested",
|
|
4644
|
+
"internal_approval_resubmitted"
|
|
4645
|
+
]);
|
|
4646
|
+
exports.contentReviewWithdrawOutputSchema = contentReviewOutputSchema(["internal_approval_withdrawn"]);
|
|
4647
|
+
var contentReviewRequestToolsets = ["content_workflow", "content_workflow_all"];
|
|
4648
|
+
exports.WORKSPACE_MEMBERS_LIST_CONTRACT = {
|
|
4649
|
+
canonicalName: exports.TOOL_OPERATION_IDS.workspaceMembersList,
|
|
4650
|
+
wireNames: exports.TOOL_WIRE_NAMES.workspaceMembersList,
|
|
4651
|
+
description: "List active members of a Maeve workspace with their effective workspace role. Use member ids as approverIds when requesting internal approval or creating a client review batch.",
|
|
4652
|
+
inputSchema: exports.workspaceMembersListInputSchema,
|
|
4653
|
+
wireInputSchemas: {
|
|
4654
|
+
mcp: exports.workspaceMembersListMcpInputSchema
|
|
4655
|
+
},
|
|
4656
|
+
outputSchema: exports.workspaceMembersListOutputSchema,
|
|
4657
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.workspaceRead],
|
|
4658
|
+
confirmation: { required: false },
|
|
4659
|
+
idempotency: { required: false },
|
|
4660
|
+
surfaces: {
|
|
4661
|
+
mcp: {
|
|
4662
|
+
name: exports.TOOL_WIRE_NAMES.workspaceMembersList.mcp,
|
|
4663
|
+
title: "List Workspace Members",
|
|
4664
|
+
description: "List active members of a Maeve workspace with their effective workspace role, ordered by display name. Use member ids as approverIds for request_internal_approval or create_client_review_batch. Viewers cannot approve, so pick managers, editors, or creators.",
|
|
4665
|
+
scope: "mcp:read",
|
|
4666
|
+
toolsets: ["content_read_only", ...contentReviewRequestToolsets],
|
|
4667
|
+
annotations: mcpReadAnnotations
|
|
4668
|
+
}
|
|
4669
|
+
}
|
|
4670
|
+
};
|
|
4671
|
+
exports.CONTENT_REVIEW_REQUEST_INTERNAL_CONTRACT = {
|
|
4672
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentReviewRequestInternal,
|
|
4673
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentReviewRequestInternal,
|
|
4674
|
+
description: "Request internal approval for a Maeve draft, or resubmit rejected content for another round. Notifies every listed approver. Requires the Standard plan or higher.",
|
|
4675
|
+
inputSchema: exports.contentReviewRequestInternalInputSchema,
|
|
4676
|
+
wireInputSchemas: {
|
|
4677
|
+
mcp: exports.contentReviewRequestInternalMcpInputSchema
|
|
4678
|
+
},
|
|
4679
|
+
outputSchema: exports.contentReviewRequestInternalOutputSchema,
|
|
4680
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentReviewRequest],
|
|
4681
|
+
confirmation: { required: false },
|
|
4682
|
+
idempotency: { required: false },
|
|
4683
|
+
surfaces: {
|
|
4684
|
+
mcp: {
|
|
4685
|
+
name: exports.TOOL_WIRE_NAMES.contentReviewRequestInternal.mcp,
|
|
4686
|
+
title: "Request Internal Approval",
|
|
4687
|
+
description: "Request internal approval for a Maeve draft, or resubmit rejected content for another round. This notifies every approver in approverIds; get their ids from list_workspace_members. The content must be a draft or a rejected item; scheduled, published, or already pending content is refused. To change approvers on a pending request, call withdraw_approval_request first. Read reviewLifecycle.nextAction and blockers in the result rather than content.status to decide what happens next.",
|
|
4688
|
+
scope: "mcp:write",
|
|
4689
|
+
toolsets: contentReviewRequestToolsets,
|
|
4690
|
+
annotations: {
|
|
4691
|
+
readOnlyHint: false,
|
|
4692
|
+
destructiveHint: false,
|
|
4693
|
+
idempotentHint: false,
|
|
4694
|
+
openWorldHint: false
|
|
4695
|
+
}
|
|
4696
|
+
}
|
|
4697
|
+
}
|
|
4698
|
+
};
|
|
4699
|
+
exports.CONTENT_REVIEW_WITHDRAW_CONTRACT = {
|
|
4700
|
+
canonicalName: exports.TOOL_OPERATION_IDS.contentReviewWithdraw,
|
|
4701
|
+
wireNames: exports.TOOL_WIRE_NAMES.contentReviewWithdraw,
|
|
4702
|
+
description: "Withdraw a pending internal approval request on Maeve content and return it to draft. Only the requesting author can withdraw. Requires the Standard plan or higher.",
|
|
4703
|
+
inputSchema: exports.contentReviewWithdrawInputSchema,
|
|
4704
|
+
wireInputSchemas: {
|
|
4705
|
+
mcp: exports.contentReviewWithdrawMcpInputSchema
|
|
4706
|
+
},
|
|
4707
|
+
outputSchema: exports.contentReviewWithdrawOutputSchema,
|
|
4708
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.contentReviewWithdraw],
|
|
4709
|
+
confirmation: { required: false },
|
|
4710
|
+
idempotency: { required: false },
|
|
4711
|
+
surfaces: {
|
|
4712
|
+
mcp: {
|
|
4713
|
+
name: exports.TOOL_WIRE_NAMES.contentReviewWithdraw.mcp,
|
|
4714
|
+
title: "Withdraw Approval Request",
|
|
4715
|
+
description: "Withdraw a pending internal approval request on Maeve content and return it to draft so it can be edited or re-requested with different approvers. Only the author who requested approval can withdraw; approvers are notified. Read reviewLifecycle.nextAction and blockers in the result rather than content.status to decide what happens next.",
|
|
4716
|
+
scope: "mcp:write",
|
|
4717
|
+
toolsets: contentReviewRequestToolsets,
|
|
4718
|
+
annotations: {
|
|
4719
|
+
readOnlyHint: false,
|
|
4720
|
+
destructiveHint: false,
|
|
4721
|
+
idempotentHint: false,
|
|
4722
|
+
openWorldHint: false
|
|
4723
|
+
}
|
|
4724
|
+
}
|
|
4725
|
+
}
|
|
4726
|
+
};
|
|
4727
|
+
var clientReviewPolicyValues = ["any", "all"];
|
|
4728
|
+
var clientReviewWorkflowModeValues = ["client", "internal_client"];
|
|
4729
|
+
var clientReviewParticipantSchema = z9.object({
|
|
4730
|
+
name: z9.string().min(1).max(255).describe("Reviewer display name shown in the review portal and emails."),
|
|
4731
|
+
email: z9.string().email().max(320).describe("Reviewer email address. The review link is sent here.")
|
|
4732
|
+
}).strict();
|
|
4733
|
+
var clientReviewConfigSchema2 = z9.object({
|
|
4734
|
+
reviewers: z9.array(clientReviewParticipantSchema).min(1).describe("External reviewers who receive the batch."),
|
|
4735
|
+
policy: z9.enum(clientReviewPolicyValues).describe("any: one reviewer approval is enough per item. all: every reviewer must approve each item."),
|
|
4736
|
+
expiresAt: z9.string().refine(isTimezoneQualifiedIso8601Timestamp, {
|
|
4737
|
+
message: `client.expiresAt ${exports.TIMEZONE_QUALIFIED_ISO8601_TIMESTAMP_ERROR}`
|
|
4738
|
+
}).nullable().optional().describe("Optional review link expiry as a timezone-qualified ISO-8601 timestamp."),
|
|
4739
|
+
inviteNote: z9.string().max(2e3).nullable().optional().describe("Optional note included in the review email."),
|
|
4740
|
+
batchLabel: z9.string().min(1).max(255).describe("Batch name shown to reviewers. Must be unique among the workspace open batches.")
|
|
4741
|
+
}).strict();
|
|
4742
|
+
var clientReviewInternalConfigSchema = z9.object({
|
|
4743
|
+
approverIds: z9.array(z9.string().uuid()).min(1).describe("Workspace member user IDs from list_workspace_members who approve before the client sees the batch."),
|
|
4744
|
+
policy: z9.enum(approvalPolicyValues).describe("any: one approval is enough. all: every approver must approve. in_order: approvers decide in order.")
|
|
4745
|
+
}).strict();
|
|
4746
|
+
var clientReviewBatchCreateInputShape = {
|
|
4747
|
+
contentIds: z9.array(z9.string().uuid()).min(1).describe("Draft or scheduled root content IDs to put in front of the client."),
|
|
4748
|
+
workflowMode: z9.enum(clientReviewWorkflowModeValues).describe("client: send straight to the client. internal_client: internal approvers sign off first."),
|
|
4749
|
+
client: clientReviewConfigSchema2,
|
|
4750
|
+
internal: clientReviewInternalConfigSchema.optional().describe("Required when workflowMode is internal_client.")
|
|
4751
|
+
};
|
|
4752
|
+
exports.clientReviewBatchCreateInputSchema = z9.object(clientReviewBatchCreateInputShape).strict();
|
|
4753
|
+
exports.clientReviewBatchCreateMcpInputSchema = z9.object({
|
|
4754
|
+
workspaceId: workspaceIdSchema,
|
|
4755
|
+
...clientReviewBatchCreateInputShape
|
|
4756
|
+
}).strict();
|
|
4757
|
+
var clientReviewBatchRemoveContentInputShape = {
|
|
4758
|
+
batchId: z9.string().uuid().describe("Client review batch ID. The batch must not have been sent yet."),
|
|
4759
|
+
contentId: z9.string().uuid().describe("Content ID to remove from the batch.")
|
|
4760
|
+
};
|
|
4761
|
+
exports.clientReviewBatchRemoveContentInputSchema = z9.object(clientReviewBatchRemoveContentInputShape).strict();
|
|
4762
|
+
exports.clientReviewBatchRemoveContentMcpInputSchema = z9.object({
|
|
4763
|
+
workspaceId: workspaceIdSchema,
|
|
4764
|
+
...clientReviewBatchRemoveContentInputShape
|
|
4765
|
+
}).strict();
|
|
4766
|
+
var clientReviewBatchSendInputShape = {
|
|
4767
|
+
batchId: z9.string().uuid().describe("Client review batch ID to send."),
|
|
4768
|
+
confirmationText: z9.string().optional().describe("Exact confirmation text: client_review_send:<batchId>."),
|
|
4769
|
+
dangerouslyAutoConfirm: z9.boolean().optional().describe("Only honored when server-side dangerous auto-confirm policy allows client_review_send.")
|
|
4770
|
+
};
|
|
4771
|
+
exports.clientReviewBatchSendInputSchema = z9.object(clientReviewBatchSendInputShape).strict();
|
|
4772
|
+
exports.clientReviewBatchSendMcpInputSchema = z9.object({
|
|
4773
|
+
workspaceId: workspaceIdSchema,
|
|
4774
|
+
...clientReviewBatchSendInputShape
|
|
4775
|
+
}).strict();
|
|
4776
|
+
var clientReviewBatchSummarySchema = z9.record(z9.string(), z9.unknown());
|
|
4777
|
+
var clientReviewContentLifecyclesSchema = z9.array(z9.object({
|
|
4778
|
+
contentId: z9.string(),
|
|
4779
|
+
reviewLifecycle: contentReviewLifecycleSchema
|
|
4780
|
+
}).strict());
|
|
4781
|
+
function clientReviewBatchOutputShape(actions) {
|
|
4782
|
+
return {
|
|
4783
|
+
clientReviewBatch: clientReviewBatchSummarySchema.nullable(),
|
|
4784
|
+
contentReviewLifecycles: clientReviewContentLifecyclesSchema,
|
|
4785
|
+
nextReviewState: z9.object({
|
|
4786
|
+
status: z9.string(),
|
|
4787
|
+
action: z9.enum(actions)
|
|
4788
|
+
}).strict()
|
|
4789
|
+
};
|
|
4790
|
+
}
|
|
4791
|
+
exports.clientReviewBatchCreateOutputSchema = z9.object(clientReviewBatchOutputShape(["client_review_batch_created"])).strict();
|
|
4792
|
+
exports.clientReviewBatchRemoveContentOutputSchema = z9.object(clientReviewBatchOutputShape(["client_review_content_removed", "client_review_batch_deleted"])).strict();
|
|
4793
|
+
exports.clientReviewBatchSendOutputSchema = z9.object({
|
|
4794
|
+
...clientReviewBatchOutputShape(["client_review_sent", "client_review_queued"]),
|
|
4795
|
+
confirmationMode: lifecycleConfirmationModeSchema
|
|
4796
|
+
}).strict();
|
|
4797
|
+
function buildClientReviewSendConfirmationSummary(input) {
|
|
4798
|
+
return `Send client review batch ${input.batchId}. Every reviewer on the batch is emailed a review link.`;
|
|
4799
|
+
}
|
|
4800
|
+
exports.CLIENT_REVIEW_BATCH_CREATE_CONTRACT = {
|
|
4801
|
+
canonicalName: exports.TOOL_OPERATION_IDS.clientReviewBatchCreate,
|
|
4802
|
+
wireNames: exports.TOOL_WIRE_NAMES.clientReviewBatchCreate,
|
|
4803
|
+
description: "Create a Maeve client review batch from draft or scheduled root content. Nothing is emailed until send_client_review_batch. Requires the Standard plan or higher.",
|
|
4804
|
+
inputSchema: exports.clientReviewBatchCreateInputSchema,
|
|
4805
|
+
wireInputSchemas: {
|
|
4806
|
+
mcp: exports.clientReviewBatchCreateMcpInputSchema
|
|
4807
|
+
},
|
|
4808
|
+
outputSchema: exports.clientReviewBatchCreateOutputSchema,
|
|
4809
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.clientReviewSend],
|
|
4810
|
+
confirmation: { required: false },
|
|
4811
|
+
idempotency: { required: false },
|
|
4812
|
+
surfaces: {
|
|
4813
|
+
mcp: {
|
|
4814
|
+
name: exports.TOOL_WIRE_NAMES.clientReviewBatchCreate.mcp,
|
|
4815
|
+
title: "Create Client Review Batch",
|
|
4816
|
+
description: "Create a Maeve client review batch from draft or scheduled root content. This does not email anyone; reviewers only hear about it when send_client_review_batch runs. batchLabel must be unique among the workspace open batches. In internal_client mode also pass internal approvers from list_workspace_members; the batch cannot go to the client until they approve. Read each contentReviewLifecycles entry nextAction and blockers rather than content status to decide what happens next.",
|
|
4817
|
+
scope: "mcp:write",
|
|
4818
|
+
toolsets: contentReviewRequestToolsets,
|
|
4819
|
+
annotations: {
|
|
4820
|
+
readOnlyHint: false,
|
|
4821
|
+
destructiveHint: false,
|
|
4822
|
+
idempotentHint: false,
|
|
4823
|
+
openWorldHint: false
|
|
4824
|
+
}
|
|
4825
|
+
}
|
|
4826
|
+
}
|
|
4827
|
+
};
|
|
4828
|
+
exports.CLIENT_REVIEW_BATCH_REMOVE_CONTENT_CONTRACT = {
|
|
4829
|
+
canonicalName: exports.TOOL_OPERATION_IDS.clientReviewBatchRemoveContent,
|
|
4830
|
+
wireNames: exports.TOOL_WIRE_NAMES.clientReviewBatchRemoveContent,
|
|
4831
|
+
description: "Remove content from a Maeve client review batch that has not been sent yet. Removing the last item deletes the batch. Requires the Standard plan or higher.",
|
|
4832
|
+
inputSchema: exports.clientReviewBatchRemoveContentInputSchema,
|
|
4833
|
+
wireInputSchemas: {
|
|
4834
|
+
mcp: exports.clientReviewBatchRemoveContentMcpInputSchema
|
|
4835
|
+
},
|
|
4836
|
+
outputSchema: exports.clientReviewBatchRemoveContentOutputSchema,
|
|
4837
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.clientReviewSend],
|
|
4838
|
+
confirmation: { required: false },
|
|
4839
|
+
idempotency: { required: false },
|
|
4840
|
+
surfaces: {
|
|
4841
|
+
mcp: {
|
|
4842
|
+
name: exports.TOOL_WIRE_NAMES.clientReviewBatchRemoveContent.mcp,
|
|
4843
|
+
title: "Remove Content From Client Review Batch",
|
|
4844
|
+
description: "Remove content from a Maeve client review batch that has not been sent yet; sent batches are refused. Removing the last item deletes the batch, in which case clientReviewBatch is null and nextReviewState.action is client_review_batch_deleted. Read each contentReviewLifecycles entry nextAction and blockers rather than content status to decide what happens next.",
|
|
4845
|
+
scope: "mcp:write",
|
|
4846
|
+
toolsets: contentReviewRequestToolsets,
|
|
4847
|
+
annotations: {
|
|
4848
|
+
readOnlyHint: false,
|
|
4849
|
+
destructiveHint: false,
|
|
4850
|
+
idempotentHint: false,
|
|
4851
|
+
openWorldHint: false
|
|
4852
|
+
}
|
|
4853
|
+
}
|
|
4854
|
+
}
|
|
4855
|
+
};
|
|
4856
|
+
exports.CLIENT_REVIEW_BATCH_SEND_CONTRACT = {
|
|
4857
|
+
canonicalName: exports.TOOL_OPERATION_IDS.clientReviewBatchSend,
|
|
4858
|
+
wireNames: exports.TOOL_WIRE_NAMES.clientReviewBatchSend,
|
|
4859
|
+
description: "Send a Maeve client review batch, emailing every reviewer a review link. High-risk: requires the exact confirmation text client_review_send:<batchId> or server-enabled dangerous auto-confirm. Requires the Standard plan or higher.",
|
|
4860
|
+
inputSchema: exports.clientReviewBatchSendInputSchema,
|
|
4861
|
+
wireInputSchemas: {
|
|
4862
|
+
mcp: exports.clientReviewBatchSendMcpInputSchema
|
|
4863
|
+
},
|
|
4864
|
+
outputSchema: exports.clientReviewBatchSendOutputSchema,
|
|
4865
|
+
requiredCapabilities: [exports.TOOL_CAPABILITIES.clientReviewSend],
|
|
4866
|
+
confirmation: {
|
|
4867
|
+
required: true,
|
|
4868
|
+
actionType: "client_review_send",
|
|
4869
|
+
ttlMs: exports.CONFIRMATION_TTL_PUBLISH_DESTRUCTIVE_MS,
|
|
4870
|
+
buildSummary: (input) => buildClientReviewSendConfirmationSummary(input)
|
|
4871
|
+
},
|
|
4872
|
+
idempotency: { required: false },
|
|
4873
|
+
surfaces: {
|
|
4874
|
+
mcp: {
|
|
4875
|
+
name: exports.TOOL_WIRE_NAMES.clientReviewBatchSend.mcp,
|
|
4876
|
+
title: "Send Client Review Batch",
|
|
4877
|
+
description: "Send a Maeve client review batch. This emails every reviewer on the batch a review link, so it reaches people outside the workspace. High-risk: requires the exact confirmation text client_review_send:<batchId> or server-enabled dangerous auto-confirm. In internal_client mode the batch is parked as waiting_internal until internal approval completes and nextReviewState.action is client_review_queued. Read each contentReviewLifecycles entry nextAction and blockers rather than content status to decide what happens next.",
|
|
4878
|
+
scope: "mcp:dangerous",
|
|
4879
|
+
toolsets: ["content_dangerous", "content_workflow_all"],
|
|
4880
|
+
annotations: {
|
|
4881
|
+
readOnlyHint: false,
|
|
4882
|
+
destructiveHint: false,
|
|
4883
|
+
idempotentHint: false,
|
|
4884
|
+
openWorldHint: true
|
|
4885
|
+
}
|
|
4886
|
+
}
|
|
4887
|
+
}
|
|
4888
|
+
};
|
|
4333
4889
|
var INBOX_AUTOMATION_MAX_KEYWORDS = 20;
|
|
4334
4890
|
var INBOX_AUTOMATION_MAX_KEYWORD_LENGTH = 80;
|
|
4335
4891
|
var INBOX_AUTOMATION_BODY_TRANSPORT_MAX = 1e4;
|
|
@@ -4414,9 +4970,14 @@ var require_dist = __commonJS({
|
|
|
4414
4970
|
enabled: z9.boolean().optional().describe("MCP creates default to disabled; pass true (or update later) to start the rule.")
|
|
4415
4971
|
};
|
|
4416
4972
|
exports.createInboxAutomationRuleInputSchema = z9.object(createInboxAutomationRuleInputShape).strict();
|
|
4973
|
+
var inboxAutomationEnableConfirmationShape = {
|
|
4974
|
+
confirmationText: z9.string().optional().describe("Required only when enabled is true. For creation use inbox_automation_enable:new:<integrationId>; for updates use inbox_automation_enable:<ruleId>."),
|
|
4975
|
+
dangerouslyAutoConfirm: z9.boolean().optional().describe("Never honored for enabling automation; an exact confirmation text is always required.")
|
|
4976
|
+
};
|
|
4417
4977
|
exports.createInboxAutomationRuleMcpInputSchema = z9.object({
|
|
4418
4978
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4419
|
-
...createInboxAutomationRuleInputShape
|
|
4979
|
+
...createInboxAutomationRuleInputShape,
|
|
4980
|
+
...inboxAutomationEnableConfirmationShape
|
|
4420
4981
|
}).strict();
|
|
4421
4982
|
var updateInboxAutomationRuleInputShape = {
|
|
4422
4983
|
ruleId: z9.string().uuid().describe("Automation rule ID."),
|
|
@@ -4439,7 +5000,8 @@ var require_dist = __commonJS({
|
|
|
4439
5000
|
exports.updateInboxAutomationRuleInputSchema = z9.object(updateInboxAutomationRuleInputShape).strict();
|
|
4440
5001
|
exports.updateInboxAutomationRuleMcpInputSchema = z9.object({
|
|
4441
5002
|
workspaceId: z9.string().uuid().describe("Maeve workspace ID."),
|
|
4442
|
-
...updateInboxAutomationRuleInputShape
|
|
5003
|
+
...updateInboxAutomationRuleInputShape,
|
|
5004
|
+
...inboxAutomationEnableConfirmationShape
|
|
4443
5005
|
}).strict();
|
|
4444
5006
|
var deleteInboxAutomationRuleInputShape = {
|
|
4445
5007
|
ruleId: z9.string().uuid().describe("Automation rule ID to delete."),
|
|
@@ -4549,9 +5111,9 @@ var require_dist = __commonJS({
|
|
|
4549
5111
|
toolsets: inboxAutomationToolsets,
|
|
4550
5112
|
annotations: {
|
|
4551
5113
|
readOnlyHint: false,
|
|
4552
|
-
destructiveHint:
|
|
5114
|
+
destructiveHint: true,
|
|
4553
5115
|
idempotentHint: false,
|
|
4554
|
-
openWorldHint:
|
|
5116
|
+
openWorldHint: true
|
|
4555
5117
|
}
|
|
4556
5118
|
}
|
|
4557
5119
|
}
|
|
@@ -4580,9 +5142,9 @@ var require_dist = __commonJS({
|
|
|
4580
5142
|
toolsets: inboxAutomationToolsets,
|
|
4581
5143
|
annotations: {
|
|
4582
5144
|
readOnlyHint: false,
|
|
4583
|
-
destructiveHint:
|
|
5145
|
+
destructiveHint: true,
|
|
4584
5146
|
idempotentHint: true,
|
|
4585
|
-
openWorldHint:
|
|
5147
|
+
openWorldHint: true
|
|
4586
5148
|
}
|
|
4587
5149
|
}
|
|
4588
5150
|
}
|
|
@@ -4679,6 +5241,7 @@ var require_dist = __commonJS({
|
|
|
4679
5241
|
exports.INTEGRATIONS_LIST_CONTRACT,
|
|
4680
5242
|
exports.INTEGRATIONS_GET_CAPABILITIES_CONTRACT,
|
|
4681
5243
|
exports.INTEGRATIONS_GET_OPTIONS_CONTRACT,
|
|
5244
|
+
exports.PINTEREST_CREATE_BOARD_CONTRACT,
|
|
4682
5245
|
exports.TAXONOMY_LIST_CONTRACT,
|
|
4683
5246
|
exports.CAMPAIGNS_LIST_CONTRACT,
|
|
4684
5247
|
exports.HASHTAG_GROUPS_LIST_CONTRACT,
|
|
@@ -4693,6 +5256,9 @@ var require_dist = __commonJS({
|
|
|
4693
5256
|
exports.CONTENT_SCHEDULE_CONTRACT,
|
|
4694
5257
|
exports.CONTENT_SCHEDULE_BATCH_CONTRACT,
|
|
4695
5258
|
exports.CONTENT_UNSCHEDULE_CONTRACT,
|
|
5259
|
+
exports.CONTENT_REVERT_TO_DRAFT_CONTRACT,
|
|
5260
|
+
exports.CONTENT_UPDATE_PUBLISHED_CAPTION_CONTRACT,
|
|
5261
|
+
exports.CONTENT_RESOLVE_PUBLISHING_RESULT_CONTRACT,
|
|
4696
5262
|
exports.CONTENT_PUBLISH_NOW_CONTRACT,
|
|
4697
5263
|
exports.CONTENT_PUBLISH_NOW_BATCH_CONTRACT,
|
|
4698
5264
|
exports.CONTENT_ARCHIVE_CONTRACT,
|
|
@@ -4701,11 +5267,18 @@ var require_dist = __commonJS({
|
|
|
4701
5267
|
exports.CONTENT_DELETE_CONTRACT,
|
|
4702
5268
|
exports.CONTENT_DELETE_BATCH_CONTRACT,
|
|
4703
5269
|
exports.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT,
|
|
5270
|
+
exports.WORKSPACE_MEMBERS_LIST_CONTRACT,
|
|
5271
|
+
exports.CONTENT_REVIEW_REQUEST_INTERNAL_CONTRACT,
|
|
5272
|
+
exports.CONTENT_REVIEW_WITHDRAW_CONTRACT,
|
|
5273
|
+
exports.CLIENT_REVIEW_BATCH_CREATE_CONTRACT,
|
|
5274
|
+
exports.CLIENT_REVIEW_BATCH_REMOVE_CONTENT_CONTRACT,
|
|
5275
|
+
exports.CLIENT_REVIEW_BATCH_SEND_CONTRACT,
|
|
4704
5276
|
exports.MEDIA_LIST_CONTRACT,
|
|
4705
5277
|
exports.MEDIA_LIST_FOLDERS_CONTRACT,
|
|
4706
5278
|
exports.MEDIA_GET_FOLDER_CONTRACT,
|
|
4707
5279
|
exports.MEDIA_GET_FOLDER_PATH_CONTRACT,
|
|
4708
5280
|
exports.MEDIA_LIST_LABELS_CONTRACT,
|
|
5281
|
+
exports.MEDIA_INSPECT_AUDIO_CONTRACT,
|
|
4709
5282
|
exports.MEDIA_GET_CONTRACT,
|
|
4710
5283
|
exports.MEDIA_GET_USAGE_HISTORY_CONTRACT,
|
|
4711
5284
|
exports.ANALYTICS_GET_SUMMARY_CONTRACT,
|
|
@@ -4722,6 +5295,64 @@ var require_dist = __commonJS({
|
|
|
4722
5295
|
exports.INBOX_AUTOMATION_RULE_DELETE_CONTRACT,
|
|
4723
5296
|
exports.INBOX_AUTOMATION_EXECUTIONS_LIST_CONTRACT
|
|
4724
5297
|
];
|
|
5298
|
+
exports.uploadMediaInputSchema = z9.object({
|
|
5299
|
+
filename: z9.string().min(1).max(255),
|
|
5300
|
+
contentType: z9.enum([
|
|
5301
|
+
"image/jpeg",
|
|
5302
|
+
"image/png",
|
|
5303
|
+
"image/gif",
|
|
5304
|
+
"image/webp",
|
|
5305
|
+
"image/avif",
|
|
5306
|
+
"video/mp4",
|
|
5307
|
+
"video/quicktime"
|
|
5308
|
+
]),
|
|
5309
|
+
fileSize: z9.number().int().min(1)
|
|
5310
|
+
}).strict();
|
|
5311
|
+
exports.completeMediaUploadInputSchema = z9.object({
|
|
5312
|
+
sessionId: z9.string().uuid(),
|
|
5313
|
+
width: z9.number().int().min(1).optional(),
|
|
5314
|
+
height: z9.number().int().min(1).optional(),
|
|
5315
|
+
durationSeconds: z9.number().int().min(1).optional()
|
|
5316
|
+
}).strict();
|
|
5317
|
+
var mcpBatchKeySchema = z9.string().trim().min(1).max(255);
|
|
5318
|
+
function mcpBatchInputSchema(itemSchema, limit) {
|
|
5319
|
+
return z9.object({
|
|
5320
|
+
workspaceId: z9.string().uuid(),
|
|
5321
|
+
idempotencyKey: mcpBatchKeySchema.describe("Batch replay key. Reuse the same key and payload when retrying."),
|
|
5322
|
+
items: z9.array(z9.union([itemSchema, z9.unknown()])).min(1).max(limit)
|
|
5323
|
+
}).strict();
|
|
5324
|
+
}
|
|
5325
|
+
exports.createDraftContentBatchInputSchema = mcpBatchInputSchema(exports.createDraftContentInputSchema, 100);
|
|
5326
|
+
exports.scheduleContentBatchItemSchema = exports.contentScheduleInputSchema.extend({
|
|
5327
|
+
idempotencyKey: mcpBatchKeySchema.optional()
|
|
5328
|
+
});
|
|
5329
|
+
exports.scheduleContentBatchMcpInputSchema = mcpBatchInputSchema(exports.scheduleContentBatchItemSchema, 100);
|
|
5330
|
+
exports.uploadMediaBatchInputSchema = mcpBatchInputSchema(exports.uploadMediaInputSchema, 50);
|
|
5331
|
+
exports.completeMediaUploadBatchInputSchema = mcpBatchInputSchema(exports.completeMediaUploadInputSchema, 50);
|
|
5332
|
+
exports.MCP_BATCH_TOOL_CONTRACTS = {
|
|
5333
|
+
create_draft_content_batch: {
|
|
5334
|
+
inputSchema: exports.createDraftContentBatchInputSchema,
|
|
5335
|
+
limit: 100,
|
|
5336
|
+
singleTool: "create_draft_content"
|
|
5337
|
+
},
|
|
5338
|
+
schedule_content_batch: {
|
|
5339
|
+
inputSchema: exports.scheduleContentBatchMcpInputSchema,
|
|
5340
|
+
limit: 100,
|
|
5341
|
+
singleTool: "schedule_content"
|
|
5342
|
+
},
|
|
5343
|
+
upload_media_batch: { inputSchema: exports.uploadMediaBatchInputSchema, limit: 50, singleTool: "upload_media" },
|
|
5344
|
+
complete_media_upload_batch: {
|
|
5345
|
+
inputSchema: exports.completeMediaUploadBatchInputSchema,
|
|
5346
|
+
limit: 50,
|
|
5347
|
+
singleTool: "complete_media_upload"
|
|
5348
|
+
}
|
|
5349
|
+
};
|
|
5350
|
+
function buildMcpBatchSummary(name, input) {
|
|
5351
|
+
return `${name}: ${input.items.length} items in workspace ${input.workspaceId}`;
|
|
5352
|
+
}
|
|
5353
|
+
function buildMcpBatchIdempotencyKey(name, input) {
|
|
5354
|
+
return `${name}:${input.workspaceId}:${input.idempotencyKey}`;
|
|
5355
|
+
}
|
|
4725
5356
|
}
|
|
4726
5357
|
});
|
|
4727
5358
|
|
|
@@ -5638,7 +6269,6 @@ var reviewLifecycleState = z3.enum([
|
|
|
5638
6269
|
"internal_review_pending",
|
|
5639
6270
|
"internal_review_approved",
|
|
5640
6271
|
"internal_changes_requested",
|
|
5641
|
-
"internal_review_withdrawn",
|
|
5642
6272
|
"waiting_internal_before_client",
|
|
5643
6273
|
"ready_to_send_to_client",
|
|
5644
6274
|
"client_review_active",
|
|
@@ -5939,6 +6569,9 @@ import { randomUUID } from "crypto";
|
|
|
5939
6569
|
// src/content-schema.ts
|
|
5940
6570
|
var import_tool_contracts = __toESM(require_dist(), 1);
|
|
5941
6571
|
import { z as z4 } from "zod";
|
|
6572
|
+
var resolvePublishingResultSchema = import_tool_contracts.resolvePublishingResultInputSchema.omit({ contentId: true });
|
|
6573
|
+
var revertContentToDraftSchema = import_tool_contracts.contentRevertToDraftInputSchema.omit({ contentId: true });
|
|
6574
|
+
var contentMetadataSchema = import_tool_contracts.updateContentMetadataInputSchema.omit({ contentId: true });
|
|
5942
6575
|
var uuid4 = z4.string().uuid();
|
|
5943
6576
|
var isoWithTimezone = z4.string().refine(
|
|
5944
6577
|
(value) => {
|
|
@@ -5957,7 +6590,8 @@ var captionOverridesSchema = z4.object({
|
|
|
5957
6590
|
facebook: z4.string().max(25e3).optional(),
|
|
5958
6591
|
threads: z4.string().max(25e3).optional(),
|
|
5959
6592
|
tiktok: z4.string().max(25e3).optional(),
|
|
5960
|
-
pinterest: z4.string().max(25e3).optional()
|
|
6593
|
+
pinterest: z4.string().max(25e3).optional(),
|
|
6594
|
+
"google-business-profile": z4.string().max(25e3).optional()
|
|
5961
6595
|
}).strict();
|
|
5962
6596
|
var captionsSchema = z4.object({
|
|
5963
6597
|
canonical: z4.string().max(25e3).nullable().optional(),
|
|
@@ -6118,7 +6752,9 @@ var createContentBaseSchema = z4.object({
|
|
|
6118
6752
|
assigneeIds: z4.array(uuid4).optional(),
|
|
6119
6753
|
threadMessages: z4.array(
|
|
6120
6754
|
z4.object({
|
|
6121
|
-
captions: captionsSchema
|
|
6755
|
+
captions: captionsSchema.extend({
|
|
6756
|
+
overrides: z4.record(z4.string(), z4.never()).optional()
|
|
6757
|
+
}),
|
|
6122
6758
|
contentMedia: contentMediaSchema.optional()
|
|
6123
6759
|
}).strict()
|
|
6124
6760
|
).max(20).optional()
|
|
@@ -6146,7 +6782,7 @@ var createContentSchema = createContentBaseSchema.superRefine((payload, ctx) =>
|
|
|
6146
6782
|
});
|
|
6147
6783
|
}
|
|
6148
6784
|
});
|
|
6149
|
-
var updateContentSchema = createContentBaseSchema.omit({ intent: true }).partial().refine((payload) => Object.keys(payload).length > 0, {
|
|
6785
|
+
var updateContentSchema = createContentBaseSchema.omit({ intent: true, scheduledAt: true }).partial().refine((payload) => Object.keys(payload).length > 0, {
|
|
6150
6786
|
message: "Update payload must include at least one field."
|
|
6151
6787
|
});
|
|
6152
6788
|
var scheduleContentSchema = z4.object({
|
|
@@ -6216,7 +6852,9 @@ function registerContentCommands(program) {
|
|
|
6216
6852
|
})
|
|
6217
6853
|
);
|
|
6218
6854
|
});
|
|
6219
|
-
addConnectionOptions(program.command("content:update")).description(
|
|
6855
|
+
addConnectionOptions(program.command("content:update")).description(
|
|
6856
|
+
"Update creative fields from a JSON payload file. Use content:schedule to schedule or reschedule, or content:intended-time for planning time."
|
|
6857
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").requiredOption("--json <file>", "JSON file containing fields to update.").action(async (options, command) => {
|
|
6220
6858
|
const payload = updateContentSchema.parse(await readJsonFile(options.json));
|
|
6221
6859
|
const client = createApiClient(resolveConfig(command));
|
|
6222
6860
|
writeRawJson(
|
|
@@ -6234,6 +6872,40 @@ function registerContentCommands(program) {
|
|
|
6234
6872
|
})
|
|
6235
6873
|
);
|
|
6236
6874
|
});
|
|
6875
|
+
addConnectionOptions(program.command("content:resolve-publishing-result")).description(
|
|
6876
|
+
"Record a provider outcome you verified for content awaiting publishing confirmation. Does not publish or retry."
|
|
6877
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").requiredOption(
|
|
6878
|
+
"--json <file>",
|
|
6879
|
+
"JSON with outcome: published or not_published; optional verified permalink/platformPostId."
|
|
6880
|
+
).option("--yes", "Confirm that you verified this outcome on the connected platform.").action(async (options, command) => {
|
|
6881
|
+
if (!options.yes)
|
|
6882
|
+
throw new CliError("content:resolve-publishing-result requires --yes after verifying the provider outcome.", {
|
|
6883
|
+
code: "INVALID_OPTIONS"
|
|
6884
|
+
});
|
|
6885
|
+
const payload = resolvePublishingResultSchema.parse(await readJsonFile(options.json));
|
|
6886
|
+
const client = createApiClient(resolveConfig(command));
|
|
6887
|
+
writeRawJson(
|
|
6888
|
+
await client.request(
|
|
6889
|
+
"POST",
|
|
6890
|
+
`/v1/workspaces/${options.workspace}/content/${options.id}/resolve-publishing-result`,
|
|
6891
|
+
{ body: payload }
|
|
6892
|
+
)
|
|
6893
|
+
);
|
|
6894
|
+
});
|
|
6895
|
+
addConnectionOptions(program.command("content:revert-to-draft")).description(
|
|
6896
|
+
"Cancel scheduling and return all scheduled editions of the same root content to draft. Publishing locks still apply."
|
|
6897
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Scheduled root content edition ID.").option(
|
|
6898
|
+
"--json <file>",
|
|
6899
|
+
"Optional expectedRootPostId and expectedRootEditionIds scope preconditions; supply both together."
|
|
6900
|
+
).action(async (options, command) => {
|
|
6901
|
+
const payload = revertContentToDraftSchema.parse(options.json ? await readJsonFile(options.json) : {});
|
|
6902
|
+
const client = createApiClient(resolveConfig(command));
|
|
6903
|
+
writeRawJson(
|
|
6904
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/content/${options.id}/revert-to-draft`, {
|
|
6905
|
+
body: payload
|
|
6906
|
+
})
|
|
6907
|
+
);
|
|
6908
|
+
});
|
|
6237
6909
|
addConnectionOptions(program.command("content:intended-time")).description("Set intended publish time for draft or pending approval content without scheduling it.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").requiredOption("--scheduled-at <iso>", "ISO8601 timestamp with explicit timezone.").action(async (options, command) => {
|
|
6238
6910
|
const input = intendedPublishTimeInputSchema.parse({ contentId: options.id, scheduledAt: options.scheduledAt });
|
|
6239
6911
|
const client = createApiClient(resolveConfig(command));
|
|
@@ -6247,6 +6919,20 @@ function registerContentCommands(program) {
|
|
|
6247
6919
|
)
|
|
6248
6920
|
);
|
|
6249
6921
|
});
|
|
6922
|
+
addConnectionOptions(program.command("content:metadata")).description(
|
|
6923
|
+
"Update root organizational title and planning metadata. Use organizationalTitle: null to clear the web title."
|
|
6924
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").requiredOption(
|
|
6925
|
+
"--json <file>",
|
|
6926
|
+
"JSON planning metadata. Omitted fields are unchanged; empty arrays clear assignments."
|
|
6927
|
+
).action(async (options, command) => {
|
|
6928
|
+
const payload = contentMetadataSchema.parse(await readJsonFile(options.json));
|
|
6929
|
+
const client = createApiClient(resolveConfig(command));
|
|
6930
|
+
writeRawJson(
|
|
6931
|
+
await client.request("PATCH", `/v1/workspaces/${options.workspace}/content/${options.id}/metadata`, {
|
|
6932
|
+
body: payload
|
|
6933
|
+
})
|
|
6934
|
+
);
|
|
6935
|
+
});
|
|
6250
6936
|
addConnectionOptions(program.command("content:notes")).description("Replace the rich-text notes attached to a content item. Notes are internal and never published.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").option("--notes <html>", "Notes content (rich-text HTML). Pass empty string to clear.").option("--json <file>", 'JSON file with shape { "notes": "..." }. Use this for multi-line content.').action(async (options, command) => {
|
|
6251
6937
|
const raw = options.json ? await readJsonFile(options.json) : { notes: options.notes ?? "" };
|
|
6252
6938
|
if (options.json && options.notes !== void 0) {
|
|
@@ -7101,6 +7787,25 @@ function registerInboxCommands(program) {
|
|
|
7101
7787
|
|
|
7102
7788
|
// src/commands/integrations.ts
|
|
7103
7789
|
function registerIntegrationCommands(program) {
|
|
7790
|
+
addConnectionOptions(program.command("integrations:pinterest:create-board")).description(
|
|
7791
|
+
"Create one PUBLIC or SECRET Pinterest board. Writes to the connected account. Not idempotent; inspect boards before retrying an uncertain result."
|
|
7792
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("-i, --integration <id>", "Pinterest integration ID.").requiredOption("--json <file>", "JSON with name and optional privacy (PUBLIC or SECRET; defaults to PUBLIC).").option("--yes", "Confirm creation on the identified Pinterest account.").action(
|
|
7793
|
+
async (options, command) => {
|
|
7794
|
+
if (!options.yes)
|
|
7795
|
+
throw new CliError("Board creation requires --yes because it writes to Pinterest.", {
|
|
7796
|
+
code: "INVALID_OPTIONS"
|
|
7797
|
+
});
|
|
7798
|
+
const payload = await readJsonFile(options.json);
|
|
7799
|
+
const client = createApiClient(resolveConfig(command));
|
|
7800
|
+
writeRawJson(
|
|
7801
|
+
await client.request(
|
|
7802
|
+
"POST",
|
|
7803
|
+
`/v1/workspaces/${options.workspace}/integrations/${options.integration}/pinterest/boards`,
|
|
7804
|
+
{ body: payload }
|
|
7805
|
+
)
|
|
7806
|
+
);
|
|
7807
|
+
}
|
|
7808
|
+
);
|
|
7104
7809
|
addConnectionOptions(program.command("integrations:list")).description("List social integrations for a workspace.").requiredOption("-w, --workspace <id>", "Workspace ID.").action(async (options, command) => {
|
|
7105
7810
|
const client = createApiClient(resolveConfig(command));
|
|
7106
7811
|
writeRawJson(await client.request("GET", `/v1/workspaces/${options.workspace}/integrations`));
|
|
@@ -7114,7 +7819,10 @@ function registerIntegrationCommands(program) {
|
|
|
7114
7819
|
)
|
|
7115
7820
|
);
|
|
7116
7821
|
});
|
|
7117
|
-
addConnectionOptions(program.command("integrations:options")).description("Fetch safe read-only provider options returned by integrations:capabilities.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("-i, --integration <id>", "Integration ID.").requiredOption("--key <optionKey>", "Option key, for example pinterest-boards or youtube-video-categories.").option(
|
|
7822
|
+
addConnectionOptions(program.command("integrations:options")).description("Fetch safe read-only provider options returned by integrations:capabilities.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("-i, --integration <id>", "Integration ID.").requiredOption("--key <optionKey>", "Option key, for example pinterest-boards or youtube-video-categories.").option(
|
|
7823
|
+
"--json <file>",
|
|
7824
|
+
"JSON option input, such as query, regionCode, or countryCode/genre/dateRange for tiktok-cml-tracks."
|
|
7825
|
+
).action(
|
|
7118
7826
|
async (options, command) => {
|
|
7119
7827
|
const payload = options.json ? await readJsonFile(options.json) : {};
|
|
7120
7828
|
const client = createApiClient(resolveConfig(command));
|
|
@@ -7194,6 +7902,14 @@ var moveLabelsToGroupSchema = z8.object({ labelIds: z8.array(uuid6).min(1).max(1
|
|
|
7194
7902
|
|
|
7195
7903
|
// src/commands/media.ts
|
|
7196
7904
|
function registerMediaCommands(program) {
|
|
7905
|
+
addConnectionOptions(program.command("media:inspect-audio")).description(
|
|
7906
|
+
"Inspect video audio before Instagram licensed-audio publishing. Caches metadata without transforming media; null hasAudio means inconclusive inspection."
|
|
7907
|
+
).requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <id>", "Video media ID.").action(async (options, command) => {
|
|
7908
|
+
const client = createApiClient(resolveConfig(command));
|
|
7909
|
+
writeRawJson(
|
|
7910
|
+
await client.request("POST", `/v1/workspaces/${options.workspace}/media/${options.id}/audio-inspection`)
|
|
7911
|
+
);
|
|
7912
|
+
});
|
|
7197
7913
|
addConnectionOptions(program.command("media:list")).description("List media for a workspace.").requiredOption("-w, --workspace <id>", "Workspace ID.").option("--folder-id <id>", "Folder ID filter.").option("--root-only", "Only return media in the workspace root folder.").option("--label-ids <ids>", "Comma-separated media label IDs.").option("--type <type>", "Media type: image, video, or gif.").option("--search <text>", "Search media filenames and metadata.").option("--favorite", "Only return favorite media.").option("--used", "Only return media already used by content.").option("--unused", "Only return media not used by content.").option("--state <state>", "Media lifecycle state: active, deleted, or all.").option("--limit <number>", "Page size.").option("--cursor <cursor>", "Pagination cursor.").option("--sort-by <field>", "Sort field.").option("--order <direction>", "Sort direction.").action(async (options, command) => {
|
|
7198
7914
|
const client = createApiClient(resolveConfig(command));
|
|
7199
7915
|
writeRawJson(
|
|
@@ -7759,6 +8475,10 @@ function registerWorkspaceCommands(program) {
|
|
|
7759
8475
|
const client = createApiClient(resolveConfig(command));
|
|
7760
8476
|
writeRawJson(await client.request("GET", "/v1/workspaces"));
|
|
7761
8477
|
});
|
|
8478
|
+
addConnectionOptions(program.command("workspaces:members")).description("List active workspace members and their workspace role. Use member ids as approverIds.").requiredOption("-w, --workspace <id>", "Workspace ID.").action(async (options, command) => {
|
|
8479
|
+
const client = createApiClient(resolveConfig(command));
|
|
8480
|
+
writeRawJson(await client.request("GET", `/v1/workspaces/${options.workspace}/members`));
|
|
8481
|
+
});
|
|
7762
8482
|
}
|
|
7763
8483
|
|
|
7764
8484
|
// src/index.ts
|