shipmail-mcp 0.7.2 → 0.7.13

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipmail",
3
- "version": "0.7.0",
3
+ "version": "0.7.13",
4
4
  "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
5
5
  "author": {
6
6
  "name": "Shipmail",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipmail",
3
- "version": "0.7.0",
3
+ "version": "0.7.13",
4
4
  "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
5
5
  "author": {
6
6
  "name": "Shipmail",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipmail",
3
- "version": "0.7.0",
3
+ "version": "0.7.13",
4
4
  "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
5
5
  "author": {
6
6
  "name": "Shipmail",
package/README.md CHANGED
@@ -256,20 +256,20 @@ Once connected, ask your agent:
256
256
 
257
257
  All tools are namespaced with `shipmail_` to avoid collisions with peer MCP servers.
258
258
 
259
- | Group | Tools |
260
- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
261
- | Status | `shipmail_status` |
262
- | Domains | `shipmail_list_domains`, `shipmail_get_domain`, `shipmail_get_domain_dns_records`, `shipmail_create_domain`, `shipmail_update_domain`, `shipmail_delete_domain`, `shipmail_verify_domain`, `shipmail_search_domains` |
263
- | Mailboxes | `shipmail_list_mailboxes`, `shipmail_get_mailbox`, `shipmail_create_mailbox`, `shipmail_update_mailbox`, `shipmail_delete_mailbox`, `shipmail_suspend_mailbox`, `shipmail_resume_mailbox`, `shipmail_list_mailbox_app_passwords`, `shipmail_create_mailbox_app_password`, `shipmail_revoke_mailbox_app_password`, `shipmail_list_mailbox_forwarding`, `shipmail_create_mailbox_forwarding`, `shipmail_delete_mailbox_forwarding`, `shipmail_list_mailbox_folders`, `shipmail_get_mailbox_rules`, `shipmail_set_mailbox_rules`, `shipmail_create_mailbox_folder`, `shipmail_update_mailbox_folder`, `shipmail_delete_mailbox_folder`, `shipmail_list_mailbox_identities`, `shipmail_reset_mailbox_password`, `shipmail_set_auto_reply`, `shipmail_set_spam_filter`, `shipmail_inject_sandbox_inbound` |
264
- | Mailbox inbox | `shipmail_list_mailbox_inbox_messages`, `shipmail_get_mailbox_inbox_message`, `shipmail_get_mailbox_inbox_thread`, `shipmail_list_mailbox_inbox_threads`, `shipmail_update_inbox_thread_reply_state`, `shipmail_create_inbox_reply_draft`, `shipmail_send_inbox_reply_draft`, `shipmail_update_inbox_message`, `shipmail_move_inbox_message`, `shipmail_delete_inbox_message` |
265
- | Reply scans | `shipmail_create_reply_scan`, `shipmail_get_reply_scan`, `shipmail_list_reply_scan_results` |
266
- | Messages and threads | `shipmail_list_messages`, `shipmail_list_message_analytics`, `shipmail_get_message`, `shipmail_compose_message_with_file` (hosted MCP Apps), `shipmail_prepare_staged_attachment_upload`, `shipmail_send_message`, `shipmail_list_scheduled_messages`, `shipmail_get_scheduled_message`, `shipmail_update_scheduled_message`, `shipmail_cancel_scheduled_message`, `shipmail_reply_to_message`, `shipmail_list_threads`, `shipmail_get_thread`, `shipmail_reply_to_thread`, `shipmail_reply_to_inbox_message`, `shipmail_reply_to_inbox_thread` |
267
- | Webhooks | `shipmail_list_webhooks`, `shipmail_get_webhook`, `shipmail_create_webhook`, `shipmail_update_webhook`, `shipmail_delete_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_test_webhook`, `shipmail_list_webhook_deliveries`, `shipmail_get_webhook_delivery`, `shipmail_replay_webhook_delivery` |
268
- | Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
269
- | Audiences | `shipmail_list_audiences`, `shipmail_get_audience`, `shipmail_create_audience`, `shipmail_update_audience`, `shipmail_delete_audience`, `shipmail_get_audience_feed`, `shipmail_update_audience_feed`, `shipmail_rotate_audience_feed`, `shipmail_revoke_audience_feed`, `shipmail_list_subscribers`, `shipmail_get_subscriber`, `shipmail_get_subscriber_by_email`, `shipmail_add_subscriber`, `shipmail_add_subscribers_batch`, `shipmail_update_subscriber`, `shipmail_unsubscribe_subscriber`, `shipmail_resubscribe_subscriber`, `shipmail_remove_subscriber` |
270
- | Newsletters | `shipmail_list_newsletter_sender_identities`, `shipmail_list_newsletter_domains`, `shipmail_list_newsletter_assets`, `shipmail_list_newsletters`, `shipmail_get_newsletter`, `shipmail_preview_newsletter`, `shipmail_create_newsletter`, `shipmail_create_newsletter_from_changelog`, `shipmail_update_newsletter`, `shipmail_run_newsletter_preflight`, `shipmail_send_newsletter_test`, `shipmail_schedule_newsletter`, `shipmail_cancel_newsletter`, `shipmail_resume_newsletter` |
271
- | Cross-organization lists (hosted OAuth) | `shipmail_list_domains_across_organizations`, `shipmail_list_mailboxes_across_organizations`, `shipmail_list_webhooks_across_organizations`, `shipmail_list_suppressions_across_organizations`, `shipmail_list_newsletters_across_organizations`, `shipmail_list_newsletter_sender_identities_across_organizations`, `shipmail_list_newsletter_domains_across_organizations`, `shipmail_list_newsletter_assets_across_organizations`, `shipmail_list_audiences_across_organizations`, `shipmail_list_booking_pages_across_organizations` |
272
- | Partner beta | `shipmail_list_partner_organizations`, `shipmail_create_partner_organization`, `shipmail_get_partner_organization`, `shipmail_update_partner_organization`, `shipmail_resend_partner_ownership_invitation`, `shipmail_suspend_partner_organization`, `shipmail_resume_partner_organization`, `shipmail_offboard_partner_organization`, `shipmail_list_partner_mailbox_credential_grants`, `shipmail_consume_partner_mailbox_credential_grant`, `shipmail_get_partner_usage` |
259
+ | Group | Tools |
260
+ | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
261
+ | Status | `shipmail_status` |
262
+ | Domains | `shipmail_list_domains`, `shipmail_get_domain`, `shipmail_get_domain_dns_records`, `shipmail_create_domain`, `shipmail_update_domain`, `shipmail_delete_domain`, `shipmail_verify_domain`, `shipmail_search_domains` |
263
+ | Mailboxes | `shipmail_list_mailboxes`, `shipmail_get_mailbox`, `shipmail_create_mailbox`, `shipmail_update_mailbox`, `shipmail_delete_mailbox`, `shipmail_suspend_mailbox`, `shipmail_resume_mailbox`, `shipmail_list_mailbox_app_passwords`, `shipmail_create_mailbox_app_password`, `shipmail_revoke_mailbox_app_password`, `shipmail_list_mailbox_forwarding`, `shipmail_create_mailbox_forwarding`, `shipmail_delete_mailbox_forwarding`, `shipmail_list_mailbox_folders`, `shipmail_create_mailbox_folder`, `shipmail_update_mailbox_folder`, `shipmail_delete_mailbox_folder`, `shipmail_list_mailbox_rules`, `shipmail_get_mailbox_rule`, `shipmail_create_mailbox_rule`, `shipmail_update_mailbox_rule`, `shipmail_delete_mailbox_rule`, `shipmail_list_mailbox_identities`, `shipmail_reset_mailbox_password`, `shipmail_set_auto_reply`, `shipmail_set_spam_filter`, `shipmail_inject_sandbox_inbound` |
264
+ | Mailbox inbox | `shipmail_list_mailbox_inbox_messages`, `shipmail_get_mailbox_inbox_message`, `shipmail_get_mailbox_inbox_thread`, `shipmail_list_mailbox_inbox_threads`, `shipmail_update_inbox_thread_attention`, `shipmail_create_inbox_reply_draft`, `shipmail_send_inbox_reply_draft`, `shipmail_update_inbox_message`, `shipmail_move_inbox_message`, `shipmail_delete_inbox_message` |
265
+ | Reply scans | `shipmail_create_reply_scan`, `shipmail_get_reply_scan`, `shipmail_list_reply_scan_results` |
266
+ | Messages and threads | `shipmail_list_messages`, `shipmail_list_message_analytics`, `shipmail_get_message`, `shipmail_compose_message_with_file` (hosted MCP Apps), `shipmail_prepare_staged_attachment_upload`, `shipmail_send_message`, `shipmail_list_scheduled_messages`, `shipmail_get_scheduled_message`, `shipmail_update_scheduled_message`, `shipmail_cancel_scheduled_message`, `shipmail_reply_to_message`, `shipmail_list_threads`, `shipmail_get_thread`, `shipmail_reply_to_thread`, `shipmail_reply_to_inbox_message`, `shipmail_reply_to_inbox_thread` |
267
+ | Webhooks | `shipmail_list_webhooks`, `shipmail_get_webhook`, `shipmail_create_webhook`, `shipmail_update_webhook`, `shipmail_delete_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_test_webhook`, `shipmail_list_webhook_deliveries`, `shipmail_get_webhook_delivery`, `shipmail_replay_webhook_delivery` |
268
+ | Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
269
+ | Audiences | `shipmail_list_audiences`, `shipmail_get_audience`, `shipmail_create_audience`, `shipmail_update_audience`, `shipmail_delete_audience`, `shipmail_get_audience_feed`, `shipmail_update_audience_feed`, `shipmail_rotate_audience_feed`, `shipmail_revoke_audience_feed`, `shipmail_list_subscribers`, `shipmail_get_subscriber`, `shipmail_get_subscriber_by_email`, `shipmail_add_subscriber`, `shipmail_add_subscribers_batch`, `shipmail_update_subscriber`, `shipmail_unsubscribe_subscriber`, `shipmail_resubscribe_subscriber`, `shipmail_remove_subscriber` |
270
+ | Newsletters | `shipmail_list_newsletter_sender_identities`, `shipmail_list_newsletter_domains`, `shipmail_list_newsletter_assets`, `shipmail_upload_newsletter_asset_with_file` (hosted MCP Apps), `shipmail_prepare_newsletter_asset_upload`, `shipmail_register_newsletter_asset`, `shipmail_list_newsletters`, `shipmail_get_newsletter`, `shipmail_preview_newsletter`, `shipmail_create_newsletter`, `shipmail_create_newsletter_from_changelog`, `shipmail_update_newsletter`, `shipmail_run_newsletter_preflight`, `shipmail_send_newsletter_test`, `shipmail_schedule_newsletter`, `shipmail_cancel_newsletter`, `shipmail_resume_newsletter` |
271
+ | Cross-organization lists (hosted OAuth) | `shipmail_list_domains_across_organizations`, `shipmail_list_mailboxes_across_organizations`, `shipmail_list_webhooks_across_organizations`, `shipmail_list_suppressions_across_organizations`, `shipmail_list_newsletters_across_organizations`, `shipmail_list_newsletter_sender_identities_across_organizations`, `shipmail_list_newsletter_domains_across_organizations`, `shipmail_list_newsletter_assets_across_organizations`, `shipmail_list_audiences_across_organizations`, `shipmail_list_booking_pages_across_organizations` |
272
+ | Partner beta | `shipmail_list_partner_organizations`, `shipmail_create_partner_organization`, `shipmail_get_partner_organization`, `shipmail_update_partner_organization`, `shipmail_resend_partner_ownership_invitation`, `shipmail_suspend_partner_organization`, `shipmail_resume_partner_organization`, `shipmail_offboard_partner_organization`, `shipmail_list_partner_mailbox_credential_grants`, `shipmail_consume_partner_mailbox_credential_grant`, `shipmail_get_partner_usage` |
273
273
 
274
274
  Cross-organization list tools appear only on hosted OAuth connections with at least two
275
275
  organization grants. They return a success or failure section for every organization and paginate
@@ -298,7 +298,17 @@ credential, and calls `shipmail_send_message` only after the user presses **Uplo
298
298
  **Upload and schedule**. The upload endpoint follows no source URL, rejects redirects and metadata
299
299
  mismatches, and consumes the signed token once.
300
300
 
301
- For mailbox agents, prefer the reply queue or a reply scan followed by
301
+ Newsletter images and videos use the same credential-free upload boundary. For a local file,
302
+ calculate its exact byte size and SHA-256 digest, call
303
+ `shipmail_prepare_newsletter_asset_upload`, then `PUT` the unmodified bytes to `upload_url` with
304
+ `upload_headers`. For video, upload a generated JPEG poster with the `thumbnail_upload_*` fields.
305
+ Then `POST` an empty body to the single-use `complete_url`; its response is the completed
306
+ `newsletter_asset`.
307
+ Supported hosted clients can use `shipmail_upload_newsletter_asset_with_file` to review and upload
308
+ a conversation or library file without exposing the connection credential. Base64 media bytes are
309
+ not accepted in MCP arguments.
310
+
311
+ For mailbox agents, prefer the attention queue or a reply scan followed by
302
312
  `shipmail_create_inbox_reply_draft`. The server derives recipients from the thread and records the
303
313
  thread version used to create the draft. `shipmail_send_inbox_reply_draft` rejects stale drafts if
304
314
  the conversation changed before approval. The direct reply tools remain available as lower-level
@@ -312,9 +322,10 @@ immediately. Partner grant consumption requires the exact `partner:mailbox_crede
312
322
  scope and an operator-approved one-time grant. App-password creation and grant consumption do not
313
323
  accept idempotency keys.
314
324
 
315
- `shipmail_set_mailbox_rules` replaces the complete rule list. Call
316
- `shipmail_get_mailbox_rules` first and preserve every rule that should remain. Inbox rules are
317
- deterministic filters for moving, marking as read, starring, or emitting a
325
+ Use `shipmail_list_mailbox_rules` and `shipmail_get_mailbox_rule` with
326
+ `shipmail_create_mailbox_rule`, `shipmail_update_mailbox_rule`, and `shipmail_delete_mailbox_rule`
327
+ to manage one rule at a time. Custom folder targets must belong to the selected mailbox. Inbox
328
+ rules are deterministic filters for moving, marking as read, starring, or emitting a
318
329
  `mailbox.rule_matched` event to subscribed webhook endpoints.
319
330
 
320
331
  The server discovers the effective tool catalog from Shipmail before startup. It fails closed when
@@ -371,7 +382,7 @@ Shipmail generates the primary credential and never returns it to the partner.
371
382
  - **Circuit breaker**: Each session enforces per-tool rate limits and a hard total-call ceiling as a runaway-agent guard. These are not abuse controls. Real abuse limits live at the API per API key. Restart the server to reset.
372
383
  - **Least-privilege reply workflow**: Use `messages:read` for discovery, add `drafts:write` for reviewable draft creation, and grant `messages:send` only to agents that are allowed to transmit approved mail. A review-only agent does not need send access.
373
384
  - **Webhook URL validation**: Webhook URLs must be public https endpoints. Localhost, RFC1918, link-local, ULA, IPv4-mapped IPv6, `0.0.0.0`, decimal-int IPs, `.local`, and `.internal` hosts are rejected at input time.
374
- - **Destructive annotations**: Tools that delete, retarget, replace persistent rules, rotate, reset credentials, or create automatic outbound responses are annotated with `destructiveHint`. Hosts that gate on this annotation will prompt the user. Annotated tools include `shipmail_update_domain`, `shipmail_update_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_set_mailbox_rules`, `shipmail_delete_mailbox_folder`, `shipmail_reset_mailbox_password`, and `shipmail_set_auto_reply` in addition to obvious deletes.
385
+ - **Destructive annotations**: Tools that delete, retarget, change persistent rules, rotate, reset credentials, or create automatic outbound responses are annotated with `destructiveHint`. Hosts that gate on this annotation will prompt the user. Annotated tools include `shipmail_update_domain`, `shipmail_update_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_delete_mailbox_rule`, `shipmail_delete_mailbox_folder`, `shipmail_reset_mailbox_password`, and `shipmail_set_auto_reply` in addition to obvious deletes.
375
386
 
376
387
  Domain purchase is intentionally excluded.
377
388
 
@@ -1,9 +1,9 @@
1
1
  import { ApiKeyScope } from 'shipmail/api-key-scopes';
2
2
 
3
3
  declare const MCP_CAPABILITY_VERSION = "1.0.0";
4
- declare const MCP_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions", "partner_admin"];
4
+ declare const MCP_PERMISSION_GROUP_NAMES: readonly ["account_status", "automations", "mail_read", "drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "members", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions", "partner_admin"];
5
5
  type McpPermissionGroupName = (typeof MCP_PERMISSION_GROUP_NAMES)[number];
6
- declare const MCP_MEMBER_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "mailbox_rules", "send_mail", "calendar_read", "calendar_write"];
6
+ declare const MCP_MEMBER_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "mailbox_rules", "send_mail", "calendar_read", "calendar_write", "automations"];
7
7
  type McpRole = "owner" | "member";
8
8
  type McpCapabilityEffect = "read" | "local_write" | "external_write" | "destructive";
9
9
  type McpRecipientControl = "none" | "server_derived" | "caller_supplied";
@@ -22,6 +22,12 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
22
22
  readonly description: "Check whether the Shipmail API is available.";
23
23
  readonly scopes: readonly [];
24
24
  readonly persistent: false;
25
+ }, {
26
+ readonly name: "automations";
27
+ readonly label: "Automations";
28
+ readonly description: "Read and manage persistent assistant automations.";
29
+ readonly scopes: readonly ["automations:read", "automations:write"];
30
+ readonly persistent: true;
25
31
  }, {
26
32
  readonly name: "mail_read";
27
33
  readonly label: "Read mail";
@@ -37,7 +43,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
37
43
  }, {
38
44
  readonly name: "mail_organize";
39
45
  readonly label: "Organize mail";
40
- readonly description: "Update message state, move messages, and delete messages already in Trash or Junk.";
46
+ readonly description: "Update message state, move messages, manage custom folders, and delete messages already in Trash or Junk.";
41
47
  readonly scopes: readonly ["messages:write"];
42
48
  readonly persistent: false;
43
49
  }, {
@@ -76,6 +82,12 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
76
82
  readonly description: "Read and manage persistent server-side sorting, move, read, and star rules.";
77
83
  readonly scopes: readonly ["mailbox_rules:read", "mailbox_rules:write"];
78
84
  readonly persistent: true;
85
+ }, {
86
+ readonly name: "members";
87
+ readonly label: "Team members";
88
+ readonly description: "Read organization members.";
89
+ readonly scopes: readonly ["members:read"];
90
+ readonly persistent: false;
79
91
  }, {
80
92
  readonly name: "webhooks";
81
93
  readonly label: "Webhooks";
@@ -131,7 +143,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
131
143
  readonly scopes: readonly ["partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
132
144
  readonly persistent: true;
133
145
  }];
134
- declare const CAPABILITY_ROWS: readonly [readonly ["shipmail_status", "getStatus", "public"], readonly ["shipmail_create_domain", "createDomain", "domains:write"], readonly ["shipmail_list_domains", "listDomains", "domains:read"], readonly ["shipmail_get_domain", "getDomain", "domains:read"], readonly ["shipmail_get_domain_dns_records", "getDomainDnsRecords", "domains:read"], readonly ["shipmail_update_domain", "updateDomain", "domains:write"], readonly ["shipmail_delete_domain", "deleteDomain", "domains:write"], readonly ["shipmail_verify_domain", "verifyDomain", "domains:write"], readonly ["shipmail_search_domains", "searchDomains", "domains:read"], readonly ["shipmail_create_mailbox", "createMailbox", "mailboxes:write"], readonly ["shipmail_list_mailboxes", "listMailboxes", "mailboxes:read"], readonly ["shipmail_get_mailbox", "getMailbox", "mailboxes:read"], readonly ["shipmail_list_mailbox_app_passwords", "listMailboxAppPasswords", "mailbox_credentials:read"], readonly ["shipmail_create_mailbox_app_password", "createMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_revoke_mailbox_app_password", "revokeMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_suspend_mailbox", "suspendMailbox", "mailboxes:write"], readonly ["shipmail_resume_mailbox", "resumeMailbox", "mailboxes:write"], readonly ["shipmail_create_mailbox_export", "createMailboxExport", "mailboxes:export"], readonly ["shipmail_get_mailbox_export", "getMailboxExport", "mailboxes:export"], readonly ["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"], readonly ["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"], readonly ["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"], readonly ["shipmail_get_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_set_mailbox_rules", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_create_mailbox_folder", "createMailboxFolder", "mailboxes:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "mailboxes:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "mailboxes:write"], readonly ["shipmail_list_mailbox_identities", "listMailboxIdentities", "mailboxes:read"], readonly ["shipmail_list_mailbox_inbox_messages", "listMailboxInboxMessages", "messages:read"], readonly ["shipmail_get_mailbox_inbox_message", "getMailboxInboxMessage", "messages:read"], readonly ["shipmail_list_mailbox_inbox_threads", "listMailboxInboxThreads", "messages:read"], readonly ["shipmail_get_mailbox_inbox_thread", "getMailboxInboxThread", "messages:read"], readonly ["shipmail_update_inbox_thread_reply_state", "updateMailboxInboxThreadReplyState", "messages:write"], readonly ["shipmail_create_inbox_reply_draft", "createMailboxInboxReplyDraft", "drafts:write"], readonly ["shipmail_send_inbox_reply_draft", "sendMailboxInboxReplyDraft", "messages:send"], readonly ["shipmail_reply_to_inbox_message", "replyToMailboxInboxMessage", "messages:send"], readonly ["shipmail_reply_to_inbox_thread", "replyToMailboxInboxThread", "messages:send"], readonly ["shipmail_update_inbox_message", "updateMailboxInboxMessage", "messages:write"], readonly ["shipmail_move_inbox_message", "moveMailboxInboxMessage", "messages:write"], readonly ["shipmail_delete_inbox_message", "deleteMailboxInboxMessage", "messages:write"], readonly ["shipmail_list_mailbox_forwarding", "listMailboxForwarding", "mailbox_forwarding:read"], readonly ["shipmail_create_mailbox_forwarding", "createMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_delete_mailbox_forwarding", "deleteMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_reset_mailbox_password", "resetMailboxPassword", "mailboxes:write"], readonly ["shipmail_set_auto_reply", "updateAutoReply", "mailboxes:write"], readonly ["shipmail_set_spam_filter", "updateSpamFilter", "mailboxes:write"], readonly ["shipmail_create_mailbox_import", "createMailboxImport", "mailboxes:write"], readonly ["shipmail_list_mailbox_imports", "listMailboxImports", "mailboxes:read"], readonly ["shipmail_get_mailbox_import", "getMailboxImport", "mailboxes:read"], readonly ["shipmail_cancel_mailbox_import", "cancelMailboxImport", "mailboxes:write"], readonly ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"], readonly ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"], readonly ["shipmail_list_messages", "listMessages", "messages:read"], readonly ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"], readonly ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_send_message", "sendMessage", "messages:send"], readonly ["shipmail_list_scheduled_messages", "listScheduledMessages", "messages:read"], readonly ["shipmail_get_scheduled_message", "getScheduledMessage", "messages:read"], readonly ["shipmail_update_scheduled_message", "updateScheduledMessage", "messages:send"], readonly ["shipmail_cancel_scheduled_message", "cancelScheduledMessage", "messages:send"], readonly ["shipmail_get_message", "getMessage", "messages:read"], readonly ["shipmail_reply_to_message", "replyToMessage", "messages:send"], readonly ["shipmail_list_threads", "listThreads", "threads:read"], readonly ["shipmail_get_thread", "getThread", "threads:read"], readonly ["shipmail_reply_to_thread", "replyToThread", "messages:send"], readonly ["shipmail_create_reply_scan", "createReplyScan", "messages:write"], readonly ["shipmail_get_reply_scan", "getReplyScan", "messages:read"], readonly ["shipmail_list_reply_scan_results", "listReplyScanResults", "messages:read"], readonly ["shipmail_create_webhook", "createWebhook", "webhooks:write"], readonly ["shipmail_list_webhooks", "listWebhooks", "webhooks:read"], readonly ["shipmail_get_webhook", "getWebhook", "webhooks:read"], readonly ["shipmail_update_webhook", "updateWebhook", "webhooks:write"], readonly ["shipmail_delete_webhook", "deleteWebhook", "webhooks:write"], readonly ["shipmail_rotate_webhook_secret", "rotateWebhookSecret", "webhooks:write"], readonly ["shipmail_test_webhook", "testWebhook", "webhooks:write"], readonly ["shipmail_list_webhook_deliveries", "listWebhookDeliveries", "webhooks:read"], readonly ["shipmail_get_webhook_delivery", "getWebhookDelivery", "webhooks:read"], readonly ["shipmail_replay_webhook_delivery", "replayWebhookDelivery", "webhooks:write"], readonly ["shipmail_list_suppressions", "listSuppressions", "suppressions:read"], readonly ["shipmail_remove_suppression", "removeSuppression", "suppressions:write"], readonly ["shipmail_create_audience", "createAudience", "audiences:write"], readonly ["shipmail_list_audiences", "listAudiences", "audiences:read"], readonly ["shipmail_get_audience", "getAudience", "audiences:read"], readonly ["shipmail_update_audience", "updateAudience", "audiences:write"], readonly ["shipmail_delete_audience", "deleteAudience", "audiences:write"], readonly ["shipmail_get_audience_feed", "getAudienceFeed", "audiences:read"], readonly ["shipmail_update_audience_feed", "updateAudienceFeed", "audiences:write"], readonly ["shipmail_rotate_audience_feed", "rotateAudienceFeedToken", "audiences:write"], readonly ["shipmail_revoke_audience_feed", "revokeAudienceFeedToken", "audiences:write"], readonly ["shipmail_add_subscriber", "addSubscriber", "audiences:write"], readonly ["shipmail_add_subscribers_batch", "addSubscribersBatch", "audiences:write"], readonly ["shipmail_list_subscribers", "listSubscribers", "audiences:read"], readonly ["shipmail_get_subscriber", "getSubscriber", "audiences:read"], readonly ["shipmail_get_subscriber_by_email", "getSubscriberByEmail", "audiences:read"], readonly ["shipmail_update_subscriber", "updateSubscriber", "audiences:write"], readonly ["shipmail_unsubscribe_subscriber", "unsubscribeSubscriber", "audiences:write"], readonly ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"], readonly ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"], readonly ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"], readonly ["shipmail_list_newsletter_sender_identities", "listNewsletterSenderIdentities", "newsletters:read"], readonly ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"], readonly ["shipmail_create_newsletter_from_changelog", "createNewsletterFromChangelog", "newsletters:write"], readonly ["shipmail_list_newsletters", "listNewsletters", "newsletters:read"], readonly ["shipmail_get_newsletter", "getNewsletter", "newsletters:read"], readonly ["shipmail_update_newsletter", "updateNewsletter", "newsletters:write"], readonly ["shipmail_list_newsletter_assets", "listNewsletterAssets", "newsletters:read"], readonly ["shipmail_register_newsletter_asset", "uploadNewsletterAsset", "newsletters:write"], readonly ["shipmail_preview_newsletter", "previewNewsletter", "newsletters:read"], readonly ["shipmail_run_newsletter_preflight", "runNewsletterPreflight", "newsletters:write"], readonly ["shipmail_send_newsletter_test", "sendNewsletterTest", "newsletters:write"], readonly ["shipmail_schedule_newsletter", "scheduleNewsletter", "newsletters:write"], readonly ["shipmail_cancel_newsletter", "cancelNewsletter", "newsletters:write"], readonly ["shipmail_resume_newsletter", "resumeNewsletter", "newsletters:write"], readonly ["shipmail_list_calendar_events", "listCalendarEvents", "calendar:read"], readonly ["shipmail_create_calendar_event", "createCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_event", "getCalendarEvent", "calendar:read"], readonly ["shipmail_update_calendar_event", "updateCalendarEvent", "calendar:write"], readonly ["shipmail_delete_calendar_event", "deleteCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_availability", "getCalendarAvailability", "calendar:read"], readonly ["shipmail_list_booking_pages", "listBookingPages", "booking_pages:read"], readonly ["shipmail_create_booking_page", "createBookingPage", "booking_pages:write"], readonly ["shipmail_get_booking_page", "getBookingPage", "booking_pages:read"], readonly ["shipmail_update_booking_page", "updateBookingPage", "booking_pages:write"], readonly ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"], readonly ["shipmail_list_partner_organizations", "listPartnerOrganizations", "partner:organizations:read"], readonly ["shipmail_create_partner_organization", "createPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_get_partner_organization", "getPartnerOrganization", "partner:organizations:read"], readonly ["shipmail_update_partner_organization", "updatePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resend_partner_ownership_invitation", "resendPartnerOwnershipInvitation", "partner:organizations:write"], readonly ["shipmail_suspend_partner_organization", "suspendPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resume_partner_organization", "resumePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_offboard_partner_organization", "offboardPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_list_partner_mailbox_credential_grants", "listPartnerMailboxCredentialGrants", "partner:mailbox_credentials:issue"], readonly ["shipmail_consume_partner_mailbox_credential_grant", "consumePartnerMailboxCredentialGrant", "partner:mailbox_credentials:issue"], readonly ["shipmail_get_partner_usage", "getPartnerUsage", "partner:usage:read"]];
146
+ declare const CAPABILITY_ROWS: readonly [readonly ["shipmail_status", "getStatus", "public"], readonly ["shipmail_list_automations", "listAutomations", "automations:read"], readonly ["shipmail_create_automation", "createAutomation", "automations:write"], readonly ["shipmail_get_automation", "getAutomation", "automations:read"], readonly ["shipmail_update_automation", "updateAutomation", "automations:write"], readonly ["shipmail_run_automation", "runAutomation", "automations:write"], readonly ["shipmail_create_domain", "createDomain", "domains:write"], readonly ["shipmail_list_domains", "listDomains", "domains:read"], readonly ["shipmail_get_domain", "getDomain", "domains:read"], readonly ["shipmail_get_domain_dns_records", "getDomainDnsRecords", "domains:read"], readonly ["shipmail_update_domain", "updateDomain", "domains:write"], readonly ["shipmail_delete_domain", "deleteDomain", "domains:write"], readonly ["shipmail_verify_domain", "verifyDomain", "domains:write"], readonly ["shipmail_search_domains", "searchDomains", "domains:read"], readonly ["shipmail_create_mailbox", "createMailbox", "mailboxes:write"], readonly ["shipmail_list_mailboxes", "listMailboxes", "mailboxes:read"], readonly ["shipmail_get_mailbox", "getMailbox", "mailboxes:read"], readonly ["shipmail_list_mailbox_app_passwords", "listMailboxAppPasswords", "mailbox_credentials:read"], readonly ["shipmail_create_mailbox_app_password", "createMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_revoke_mailbox_app_password", "revokeMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_suspend_mailbox", "suspendMailbox", "mailboxes:write"], readonly ["shipmail_resume_mailbox", "resumeMailbox", "mailboxes:write"], readonly ["shipmail_create_mailbox_export", "createMailboxExport", "mailboxes:export"], readonly ["shipmail_get_mailbox_export", "getMailboxExport", "mailboxes:export"], readonly ["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"], readonly ["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"], readonly ["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"], readonly ["shipmail_create_mailbox_folder", "createMailboxFolder", "messages:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "messages:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "messages:write"], readonly ["shipmail_list_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_get_mailbox_rule", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_create_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_update_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_delete_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_list_mailbox_identities", "listMailboxIdentities", "mailboxes:read"], readonly ["shipmail_list_mailbox_inbox_messages", "listMailboxInboxMessages", "messages:read"], readonly ["shipmail_get_mailbox_inbox_message", "getMailboxInboxMessage", "messages:read"], readonly ["shipmail_list_mailbox_inbox_threads", "listMailboxInboxThreads", "messages:read"], readonly ["shipmail_get_mailbox_inbox_thread", "getMailboxInboxThread", "messages:read"], readonly ["shipmail_update_inbox_thread_attention", "updateMailboxInboxThreadAttention", "messages:write"], readonly ["shipmail_create_inbox_reply_draft", "createMailboxInboxReplyDraft", "drafts:write"], readonly ["shipmail_send_inbox_reply_draft", "sendMailboxInboxReplyDraft", "messages:send"], readonly ["shipmail_reply_to_inbox_message", "replyToMailboxInboxMessage", "messages:send"], readonly ["shipmail_reply_to_inbox_thread", "replyToMailboxInboxThread", "messages:send"], readonly ["shipmail_update_inbox_message", "updateMailboxInboxMessage", "messages:write"], readonly ["shipmail_move_inbox_message", "moveMailboxInboxMessage", "messages:write"], readonly ["shipmail_delete_inbox_message", "deleteMailboxInboxMessage", "messages:write"], readonly ["shipmail_list_mailbox_forwarding", "listMailboxForwarding", "mailbox_forwarding:read"], readonly ["shipmail_create_mailbox_forwarding", "createMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_delete_mailbox_forwarding", "deleteMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_reset_mailbox_password", "resetMailboxPassword", "mailboxes:write"], readonly ["shipmail_set_auto_reply", "updateAutoReply", "mailboxes:write"], readonly ["shipmail_get_mailbox_delivery_routing", "getMailboxDeliveryRouting", "mailboxes:read"], readonly ["shipmail_update_mailbox_delivery_routing", "updateMailboxDeliveryRouting", "mailboxes:write"], readonly ["shipmail_set_spam_filter", "updateSpamFilter", "mailboxes:write"], readonly ["shipmail_create_mailbox_import", "createMailboxImport", "mailboxes:write"], readonly ["shipmail_list_mailbox_imports", "listMailboxImports", "mailboxes:read"], readonly ["shipmail_get_mailbox_import", "getMailboxImport", "mailboxes:read"], readonly ["shipmail_cancel_mailbox_import", "cancelMailboxImport", "mailboxes:write"], readonly ["shipmail_resume_mailbox_import", "resumeMailboxImport", "mailboxes:write"], readonly ["shipmail_restore_mailbox_import", "restoreMailboxImport", "mailboxes:write"], readonly ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"], readonly ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"], readonly ["shipmail_list_messages", "listMessages", "messages:read"], readonly ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"], readonly ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_send_message", "sendMessage", "messages:send"], readonly ["shipmail_list_scheduled_messages", "listScheduledMessages", "messages:read"], readonly ["shipmail_get_scheduled_message", "getScheduledMessage", "messages:read"], readonly ["shipmail_update_scheduled_message", "updateScheduledMessage", "messages:send"], readonly ["shipmail_cancel_scheduled_message", "cancelScheduledMessage", "messages:send"], readonly ["shipmail_get_message", "getMessage", "messages:read"], readonly ["shipmail_reply_to_message", "replyToMessage", "messages:send"], readonly ["shipmail_list_threads", "listThreads", "threads:read"], readonly ["shipmail_get_thread", "getThread", "threads:read"], readonly ["shipmail_reply_to_thread", "replyToThread", "messages:send"], readonly ["shipmail_create_reply_scan", "createReplyScan", "messages:write"], readonly ["shipmail_get_reply_scan", "getReplyScan", "messages:read"], readonly ["shipmail_list_reply_scan_results", "listReplyScanResults", "messages:read"], readonly ["shipmail_list_members", "listMembers", "members:read"], readonly ["shipmail_get_member", "getMember", "members:read"], readonly ["shipmail_create_webhook", "createWebhook", "webhooks:write"], readonly ["shipmail_list_webhooks", "listWebhooks", "webhooks:read"], readonly ["shipmail_get_webhook", "getWebhook", "webhooks:read"], readonly ["shipmail_update_webhook", "updateWebhook", "webhooks:write"], readonly ["shipmail_delete_webhook", "deleteWebhook", "webhooks:write"], readonly ["shipmail_rotate_webhook_secret", "rotateWebhookSecret", "webhooks:write"], readonly ["shipmail_test_webhook", "testWebhook", "webhooks:write"], readonly ["shipmail_list_webhook_deliveries", "listWebhookDeliveries", "webhooks:read"], readonly ["shipmail_get_webhook_delivery", "getWebhookDelivery", "webhooks:read"], readonly ["shipmail_replay_webhook_delivery", "replayWebhookDelivery", "webhooks:write"], readonly ["shipmail_list_suppressions", "listSuppressions", "suppressions:read"], readonly ["shipmail_remove_suppression", "removeSuppression", "suppressions:write"], readonly ["shipmail_create_audience", "createAudience", "audiences:write"], readonly ["shipmail_list_audiences", "listAudiences", "audiences:read"], readonly ["shipmail_get_audience", "getAudience", "audiences:read"], readonly ["shipmail_update_audience", "updateAudience", "audiences:write"], readonly ["shipmail_delete_audience", "deleteAudience", "audiences:write"], readonly ["shipmail_get_audience_feed", "getAudienceFeed", "audiences:read"], readonly ["shipmail_update_audience_feed", "updateAudienceFeed", "audiences:write"], readonly ["shipmail_rotate_audience_feed", "rotateAudienceFeedToken", "audiences:write"], readonly ["shipmail_revoke_audience_feed", "revokeAudienceFeedToken", "audiences:write"], readonly ["shipmail_add_subscriber", "addSubscriber", "audiences:write"], readonly ["shipmail_add_subscribers_batch", "addSubscribersBatch", "audiences:write"], readonly ["shipmail_list_subscribers", "listSubscribers", "audiences:read"], readonly ["shipmail_get_subscriber", "getSubscriber", "audiences:read"], readonly ["shipmail_get_subscriber_by_email", "getSubscriberByEmail", "audiences:read"], readonly ["shipmail_update_subscriber", "updateSubscriber", "audiences:write"], readonly ["shipmail_unsubscribe_subscriber", "unsubscribeSubscriber", "audiences:write"], readonly ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"], readonly ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"], readonly ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"], readonly ["shipmail_list_newsletter_sender_identities", "listNewsletterSenderIdentities", "newsletters:read"], readonly ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"], readonly ["shipmail_create_newsletter_from_changelog", "createNewsletterFromChangelog", "newsletters:write"], readonly ["shipmail_list_newsletters", "listNewsletters", "newsletters:read"], readonly ["shipmail_get_newsletter", "getNewsletter", "newsletters:read"], readonly ["shipmail_update_newsletter", "updateNewsletter", "newsletters:write"], readonly ["shipmail_list_newsletter_assets", "listNewsletterAssets", "newsletters:read"], readonly ["shipmail_upload_newsletter_asset_with_file", "prepareNewsletterAssetUpload", "newsletters:write"], readonly ["shipmail_prepare_newsletter_asset_upload", "prepareNewsletterAssetUpload", "newsletters:write"], readonly ["shipmail_register_newsletter_asset", "uploadNewsletterAsset", "newsletters:write"], readonly ["shipmail_preview_newsletter", "previewNewsletter", "newsletters:read"], readonly ["shipmail_run_newsletter_preflight", "runNewsletterPreflight", "newsletters:write"], readonly ["shipmail_send_newsletter_test", "sendNewsletterTest", "newsletters:write"], readonly ["shipmail_schedule_newsletter", "scheduleNewsletter", "newsletters:write"], readonly ["shipmail_cancel_newsletter", "cancelNewsletter", "newsletters:write"], readonly ["shipmail_resume_newsletter", "resumeNewsletter", "newsletters:write"], readonly ["shipmail_list_calendar_events", "listCalendarEvents", "calendar:read"], readonly ["shipmail_create_calendar_event", "createCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_event", "getCalendarEvent", "calendar:read"], readonly ["shipmail_update_calendar_event", "updateCalendarEvent", "calendar:write"], readonly ["shipmail_delete_calendar_event", "deleteCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_availability", "getCalendarAvailability", "calendar:read"], readonly ["shipmail_list_booking_pages", "listBookingPages", "booking_pages:read"], readonly ["shipmail_create_booking_page", "createBookingPage", "booking_pages:write"], readonly ["shipmail_get_booking_page", "getBookingPage", "booking_pages:read"], readonly ["shipmail_update_booking_page", "updateBookingPage", "booking_pages:write"], readonly ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"], readonly ["shipmail_list_partner_organizations", "listPartnerOrganizations", "partner:organizations:read"], readonly ["shipmail_create_partner_organization", "createPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_get_partner_organization", "getPartnerOrganization", "partner:organizations:read"], readonly ["shipmail_update_partner_organization", "updatePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resend_partner_ownership_invitation", "resendPartnerOwnershipInvitation", "partner:organizations:write"], readonly ["shipmail_suspend_partner_organization", "suspendPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resume_partner_organization", "resumePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_offboard_partner_organization", "offboardPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_list_partner_mailbox_credential_grants", "listPartnerMailboxCredentialGrants", "partner:mailbox_credentials:issue"], readonly ["shipmail_consume_partner_mailbox_credential_grant", "consumePartnerMailboxCredentialGrant", "partner:mailbox_credentials:issue"], readonly ["shipmail_get_partner_usage", "getPartnerUsage", "partner:usage:read"]];
135
147
  type McpToolName = (typeof CAPABILITY_ROWS)[number][0];
136
148
  type McpCapability = {
137
149
  readonly toolName: McpToolName;
@@ -3,6 +3,7 @@ import { API_KEY_SCOPES, apiKeyScopesGrant } from "shipmail/api-key-scopes";
3
3
  var MCP_CAPABILITY_VERSION = "1.0.0";
4
4
  var MCP_PERMISSION_GROUP_NAMES = [
5
5
  "account_status",
6
+ "automations",
6
7
  "mail_read",
7
8
  "drafts",
8
9
  "mail_organize",
@@ -12,6 +13,7 @@ var MCP_PERMISSION_GROUP_NAMES = [
12
13
  "booking_pages",
13
14
  "forwarding",
14
15
  "mailbox_rules",
16
+ "members",
15
17
  "webhooks",
16
18
  "credentials",
17
19
  "mailbox_export",
@@ -30,7 +32,8 @@ var MCP_MEMBER_PERMISSION_GROUP_NAMES = [
30
32
  "mailbox_rules",
31
33
  "send_mail",
32
34
  "calendar_read",
33
- "calendar_write"
35
+ "calendar_write",
36
+ "automations"
34
37
  ];
35
38
  var MCP_PERMISSION_GROUPS = [
36
39
  {
@@ -40,6 +43,13 @@ var MCP_PERMISSION_GROUPS = [
40
43
  scopes: [],
41
44
  persistent: false
42
45
  },
46
+ {
47
+ name: "automations",
48
+ label: "Automations",
49
+ description: "Read and manage persistent assistant automations.",
50
+ scopes: ["automations:read", "automations:write"],
51
+ persistent: true
52
+ },
43
53
  {
44
54
  name: "mail_read",
45
55
  label: "Read mail",
@@ -57,7 +67,7 @@ var MCP_PERMISSION_GROUPS = [
57
67
  {
58
68
  name: "mail_organize",
59
69
  label: "Organize mail",
60
- description: "Update message state, move messages, and delete messages already in Trash or Junk.",
70
+ description: "Update message state, move messages, manage custom folders, and delete messages already in Trash or Junk.",
61
71
  scopes: ["messages:write"],
62
72
  persistent: false
63
73
  },
@@ -103,6 +113,13 @@ var MCP_PERMISSION_GROUPS = [
103
113
  scopes: ["mailbox_rules:read", "mailbox_rules:write"],
104
114
  persistent: true
105
115
  },
116
+ {
117
+ name: "members",
118
+ label: "Team members",
119
+ description: "Read organization members.",
120
+ scopes: ["members:read"],
121
+ persistent: false
122
+ },
106
123
  {
107
124
  name: "webhooks",
108
125
  label: "Webhooks",
@@ -175,6 +192,11 @@ var MCP_PERMISSION_GROUPS = [
175
192
  ];
176
193
  var CAPABILITY_ROWS = [
177
194
  ["shipmail_status", "getStatus", "public"],
195
+ ["shipmail_list_automations", "listAutomations", "automations:read"],
196
+ ["shipmail_create_automation", "createAutomation", "automations:write"],
197
+ ["shipmail_get_automation", "getAutomation", "automations:read"],
198
+ ["shipmail_update_automation", "updateAutomation", "automations:write"],
199
+ ["shipmail_run_automation", "runAutomation", "automations:write"],
178
200
  ["shipmail_create_domain", "createDomain", "domains:write"],
179
201
  ["shipmail_list_domains", "listDomains", "domains:read"],
180
202
  ["shipmail_get_domain", "getDomain", "domains:read"],
@@ -196,21 +218,20 @@ var CAPABILITY_ROWS = [
196
218
  ["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"],
197
219
  ["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"],
198
220
  ["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"],
199
- ["shipmail_get_mailbox_rules", "getMailboxRules", "mailbox_rules:read"],
200
- ["shipmail_set_mailbox_rules", "updateMailboxRules", "mailbox_rules:write"],
201
- ["shipmail_create_mailbox_folder", "createMailboxFolder", "mailboxes:write"],
202
- ["shipmail_update_mailbox_folder", "updateMailboxFolder", "mailboxes:write"],
203
- ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "mailboxes:write"],
221
+ ["shipmail_create_mailbox_folder", "createMailboxFolder", "messages:write"],
222
+ ["shipmail_update_mailbox_folder", "updateMailboxFolder", "messages:write"],
223
+ ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "messages:write"],
224
+ ["shipmail_list_mailbox_rules", "getMailboxRules", "mailbox_rules:read"],
225
+ ["shipmail_get_mailbox_rule", "getMailboxRules", "mailbox_rules:read"],
226
+ ["shipmail_create_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"],
227
+ ["shipmail_update_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"],
228
+ ["shipmail_delete_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"],
204
229
  ["shipmail_list_mailbox_identities", "listMailboxIdentities", "mailboxes:read"],
205
230
  ["shipmail_list_mailbox_inbox_messages", "listMailboxInboxMessages", "messages:read"],
206
231
  ["shipmail_get_mailbox_inbox_message", "getMailboxInboxMessage", "messages:read"],
207
232
  ["shipmail_list_mailbox_inbox_threads", "listMailboxInboxThreads", "messages:read"],
208
233
  ["shipmail_get_mailbox_inbox_thread", "getMailboxInboxThread", "messages:read"],
209
- [
210
- "shipmail_update_inbox_thread_reply_state",
211
- "updateMailboxInboxThreadReplyState",
212
- "messages:write"
213
- ],
234
+ ["shipmail_update_inbox_thread_attention", "updateMailboxInboxThreadAttention", "messages:write"],
214
235
  ["shipmail_create_inbox_reply_draft", "createMailboxInboxReplyDraft", "drafts:write"],
215
236
  ["shipmail_send_inbox_reply_draft", "sendMailboxInboxReplyDraft", "messages:send"],
216
237
  ["shipmail_reply_to_inbox_message", "replyToMailboxInboxMessage", "messages:send"],
@@ -223,11 +244,15 @@ var CAPABILITY_ROWS = [
223
244
  ["shipmail_delete_mailbox_forwarding", "deleteMailboxForwarding", "mailbox_forwarding:write"],
224
245
  ["shipmail_reset_mailbox_password", "resetMailboxPassword", "mailboxes:write"],
225
246
  ["shipmail_set_auto_reply", "updateAutoReply", "mailboxes:write"],
247
+ ["shipmail_get_mailbox_delivery_routing", "getMailboxDeliveryRouting", "mailboxes:read"],
248
+ ["shipmail_update_mailbox_delivery_routing", "updateMailboxDeliveryRouting", "mailboxes:write"],
226
249
  ["shipmail_set_spam_filter", "updateSpamFilter", "mailboxes:write"],
227
250
  ["shipmail_create_mailbox_import", "createMailboxImport", "mailboxes:write"],
228
251
  ["shipmail_list_mailbox_imports", "listMailboxImports", "mailboxes:read"],
229
252
  ["shipmail_get_mailbox_import", "getMailboxImport", "mailboxes:read"],
230
253
  ["shipmail_cancel_mailbox_import", "cancelMailboxImport", "mailboxes:write"],
254
+ ["shipmail_resume_mailbox_import", "resumeMailboxImport", "mailboxes:write"],
255
+ ["shipmail_restore_mailbox_import", "restoreMailboxImport", "mailboxes:write"],
231
256
  ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"],
232
257
  ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"],
233
258
  ["shipmail_list_messages", "listMessages", "messages:read"],
@@ -247,6 +272,8 @@ var CAPABILITY_ROWS = [
247
272
  ["shipmail_create_reply_scan", "createReplyScan", "messages:write"],
248
273
  ["shipmail_get_reply_scan", "getReplyScan", "messages:read"],
249
274
  ["shipmail_list_reply_scan_results", "listReplyScanResults", "messages:read"],
275
+ ["shipmail_list_members", "listMembers", "members:read"],
276
+ ["shipmail_get_member", "getMember", "members:read"],
250
277
  ["shipmail_create_webhook", "createWebhook", "webhooks:write"],
251
278
  ["shipmail_list_webhooks", "listWebhooks", "webhooks:read"],
252
279
  ["shipmail_get_webhook", "getWebhook", "webhooks:read"],
@@ -293,6 +320,12 @@ var CAPABILITY_ROWS = [
293
320
  ["shipmail_get_newsletter", "getNewsletter", "newsletters:read"],
294
321
  ["shipmail_update_newsletter", "updateNewsletter", "newsletters:write"],
295
322
  ["shipmail_list_newsletter_assets", "listNewsletterAssets", "newsletters:read"],
323
+ [
324
+ "shipmail_upload_newsletter_asset_with_file",
325
+ "prepareNewsletterAssetUpload",
326
+ "newsletters:write"
327
+ ],
328
+ ["shipmail_prepare_newsletter_asset_upload", "prepareNewsletterAssetUpload", "newsletters:write"],
296
329
  ["shipmail_register_newsletter_asset", "uploadNewsletterAsset", "newsletters:write"],
297
330
  ["shipmail_preview_newsletter", "previewNewsletter", "newsletters:read"],
298
331
  ["shipmail_run_newsletter_preflight", "runNewsletterPreflight", "newsletters:write"],
@@ -370,7 +403,6 @@ var DESTRUCTIVE_TOOLS = /* @__PURE__ */ new Set([
370
403
  "shipmail_create_mailbox_export",
371
404
  "shipmail_rotate_webhook_secret",
372
405
  "shipmail_consume_partner_mailbox_credential_grant",
373
- "shipmail_set_mailbox_rules",
374
406
  "shipmail_rotate_audience_feed",
375
407
  "shipmail_revoke_audience_feed"
376
408
  ]);
@@ -429,6 +461,8 @@ function permissionGroupFor(toolName, requiredScope) {
429
461
  if (requiredScope === "calendar:read") return "calendar_read";
430
462
  if (requiredScope === "calendar:write") return "calendar_write";
431
463
  if (requiredScope.startsWith("booking_pages:")) return "booking_pages";
464
+ if (requiredScope.startsWith("automations:")) return "automations";
465
+ if (requiredScope.startsWith("members:")) return "members";
432
466
  if (requiredScope.startsWith("webhooks:")) return "webhooks";
433
467
  if (requiredScope.startsWith("newsletters:")) return "newsletters";
434
468
  if (requiredScope.startsWith("audiences:")) return "audiences";
@@ -439,7 +473,7 @@ function permissionGroupFor(toolName, requiredScope) {
439
473
  return "mailbox_admin";
440
474
  }
441
475
  function effectFor(toolName) {
442
- if (toolName === "shipmail_status" || toolName === "shipmail_compose_message_with_file" || toolName.startsWith("shipmail_list_") || toolName.startsWith("shipmail_get_") || toolName.startsWith("shipmail_search_") || toolName.startsWith("shipmail_preview_")) {
476
+ if (toolName === "shipmail_status" || toolName === "shipmail_compose_message_with_file" || toolName === "shipmail_upload_newsletter_asset_with_file" || toolName.startsWith("shipmail_list_") || toolName.startsWith("shipmail_get_") || toolName.startsWith("shipmail_search_") || toolName.startsWith("shipmail_preview_")) {
443
477
  return "read";
444
478
  }
445
479
  if (DESTRUCTIVE_TOOLS.has(toolName)) return "destructive";
@@ -453,10 +487,11 @@ function recipientControlFor(toolName) {
453
487
  return "none";
454
488
  }
455
489
  function durationFor(toolName) {
490
+ if (toolName === "shipmail_run_automation") return "one_shot";
456
491
  if (toolName.includes("app_password") || toolName.includes("credential_grant") || toolName === "shipmail_rotate_webhook_secret") {
457
492
  return "credential";
458
493
  }
459
- if (toolName.includes("forwarding") || toolName.includes("mailbox_rules") || toolName.includes("webhook") || toolName.includes("booking_page")) {
494
+ if (toolName.includes("forwarding") || toolName.includes("mailbox_rule") || toolName.includes("webhook") || toolName.includes("booking_page") || toolName.includes("automation")) {
460
495
  return "persistent";
461
496
  }
462
497
  if (toolName === "shipmail_send_message" || toolName.includes("schedule_") || toolName.includes("scheduled_message")) {
@@ -466,7 +501,7 @@ function durationFor(toolName) {
466
501
  }
467
502
  function idempotencyFor(toolName, effect) {
468
503
  if (effect === "read") return "none";
469
- if (toolName === "shipmail_create_mailbox_app_password" || toolName === "shipmail_consume_partner_mailbox_credential_grant" || toolName === "shipmail_prepare_staged_attachment_upload") {
504
+ if (toolName === "shipmail_create_mailbox_app_password" || toolName === "shipmail_consume_partner_mailbox_credential_grant" || toolName === "shipmail_prepare_newsletter_asset_upload" || toolName === "shipmail_prepare_staged_attachment_upload") {
470
505
  return "forbidden";
471
506
  }
472
507
  if (DESTRUCTIVE_PREFIXES.some((prefix) => toolName.startsWith(prefix)) || toolName.startsWith("shipmail_suspend_") || toolName.startsWith("shipmail_resume_")) {
@@ -499,7 +534,7 @@ function defineCapability(row) {
499
534
  transports: {
500
535
  hostedOAuth: permissionGroup !== "partner_admin",
501
536
  directApiKeyHttp: true,
502
- stdio: toolName !== "shipmail_compose_message_with_file"
537
+ stdio: toolName !== "shipmail_compose_message_with_file" && toolName !== "shipmail_upload_newsletter_asset_with_file"
503
538
  }
504
539
  };
505
540
  }