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.
Files changed (3) hide show
  1. package/README.md +765 -731
  2. package/dist/index.js +772 -52
  3. 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.analyticsAggregateMcpInputSchema = exports.MEDIA_GET_USAGE_HISTORY_CONTRACT = exports.MEDIA_GET_CONTRACT = exports.MEDIA_LIST_LABELS_CONTRACT = 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.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.archiveContentMcpInputSchema = exports.archiveContentInputSchema = exports.publishNowOutputSchema = exports.publishNowMcpInputSchema = exports.publishNowInputSchema = exports.contentScheduleBatchOutputSchema = 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.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 = void 0;
85
- 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.CONTENT_SET_INTENDED_PUBLISH_TIME_CONTRACT = 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.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 = void 0;
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: false,
1624
+ destructiveHint: true,
1580
1625
  idempotentHint: false,
1581
- openWorldHint: false
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: false,
1655
+ destructiveHint: true,
1611
1656
  idempotentHint: true,
1612
- openWorldHint: false
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: false,
1815
+ destructiveHint: true,
1771
1816
  idempotentHint: false,
1772
- openWorldHint: false
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: false,
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: true
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 caption overrides. When provided, use captions: { canonical, overrides: {} }."),
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 thread/reply draft messages with canonical captions and media relationships.")
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 only. Does not schedule or publish; platform settings require prior capability inspection.",
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 per-platform caption overrides: { canonical, overrides: {} }."),
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/reply draft messages with canonical captions and media relationships.")
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: false,
3458
+ destructiveHint: true,
3326
3459
  idempotentHint: true,
3327
- openWorldHint: false
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: false,
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: false,
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: false,
3889
+ destructiveHint: true,
3757
3890
  idempotentHint: false,
3758
- openWorldHint: false
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: false,
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: true,
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: false,
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: false,
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: false,
5114
+ destructiveHint: true,
4553
5115
  idempotentHint: false,
4554
- openWorldHint: false
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: false,
5145
+ destructiveHint: true,
4584
5146
  idempotentHint: true,
4585
- openWorldHint: false
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("Update a draft or scheduled content item from a JSON payload file.").requiredOption("-w, --workspace <id>", "Workspace ID.").requiredOption("--id <contentId>", "Content ID.").requiredOption("--json <file>", "JSON file containing fields to update.").action(async (options, command) => {
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("--json <file>", "JSON file containing option input, such as query or regionCode.").action(
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