shipmail-mcp 0.6.3 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -243,7 +243,7 @@ All tools are namespaced with `shipmail_` to avoid collisions with peer MCP serv
243
243
  | 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` |
244
244
  | 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` |
245
245
  | Reply scans | `shipmail_create_reply_scan`, `shipmail_get_reply_scan`, `shipmail_list_reply_scan_results` |
246
- | Messages and threads | `shipmail_list_messages`, `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` |
246
+ | 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` |
247
247
  | 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` |
248
248
  | Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
249
249
  | 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` |
@@ -259,6 +259,9 @@ such as one mailbox's inbox messages or one audience's subscribers, remain organ
259
259
  Message send and reply tools accept optional `client_reference`, scalar `metadata`,
260
260
  `source_rfc_message_id`, and validated safe `headers`. `shipmail_list_messages` accepts either a
261
261
  `mailbox_id` or an exact organization-scoped `client_reference`.
262
+ `shipmail_list_message_analytics` provides bounded incremental pagination over an
263
+ organization-wide safe projection and excludes subject, BCC addresses, headers, free-form
264
+ metadata, attachment filenames, auto-reply content, and message bodies.
262
265
 
263
266
  MCP send and scheduled-update tools accept short-lived staged attachment IDs, not base64 bytes.
264
267
  For a local file, calculate its exact byte size and SHA-256 digest, call
@@ -131,7 +131,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
131
131
  readonly scopes: readonly ["partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
132
132
  readonly persistent: true;
133
133
  }];
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_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"]];
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"]];
135
135
  type McpToolName = (typeof CAPABILITY_ROWS)[number][0];
136
136
  type McpCapability = {
137
137
  readonly toolName: McpToolName;
@@ -231,6 +231,7 @@ var CAPABILITY_ROWS = [
231
231
  ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"],
232
232
  ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"],
233
233
  ["shipmail_list_messages", "listMessages", "messages:read"],
234
+ ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"],
234
235
  ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"],
235
236
  ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"],
236
237
  ["shipmail_send_message", "sendMessage", "messages:send"],
package/dist/index.js CHANGED
@@ -216,6 +216,7 @@ var CAPABILITY_ROWS = [
216
216
  ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"],
217
217
  ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"],
218
218
  ["shipmail_list_messages", "listMessages", "messages:read"],
219
+ ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"],
219
220
  ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"],
220
221
  ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"],
221
222
  ["shipmail_send_message", "sendMessage", "messages:send"],
@@ -879,7 +880,7 @@ var EMAIL_MAX_LENGTH = 254;
879
880
  var RECIPIENT_NAME_MAX = 120;
880
881
  var NO_CONTROL_CHARS = /^[^\x00-\x1F\x7F]*$/;
881
882
  var DOMAIN_NAME_REGEX = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)+$/i;
882
- var CURSOR_REGEX = /^[A-Za-z0-9_\-=.+/]{1,512}$/;
883
+ var CURSOR_REGEX = /^[A-Za-z0-9_\-=.+/]+$/;
883
884
  var SUPPRESSION_REASONS = ["hard_bounce", "complaint", "manual"];
884
885
  var SYSTEM_FOLDER_NAMES = [
885
886
  "inbox",
@@ -984,7 +985,7 @@ var calendarEventIdInputSchema = z.string().min(1).max(256).refine((value) => NO
984
985
  var idempotencyKeySchema = z.string().regex(IDEMPOTENCY_REGEX, "Idempotency key must be 1-255 printable ASCII characters.").optional().describe("Optional idempotency key. If omitted, the MCP server generates one for POST tools.");
985
986
  var domainNameSchema = z.string().min(1).max(253).regex(DOMAIN_NAME_REGEX, "Must be a valid domain name (e.g. example.com).");
986
987
  var paginationInputSchema = z.object({
987
- cursor: z.string().regex(CURSOR_REGEX, "Cursor must be 1-512 characters of [A-Za-z0-9_\\-=.+/].").optional().describe("Pagination cursor returned by the previous call."),
988
+ cursor: z.string().max(8192, "Cursor must not exceed 8192 characters.").regex(CURSOR_REGEX, "Cursor must contain only [A-Za-z0-9_\\-=.+/].").optional().describe("Pagination cursor returned by the previous call."),
988
989
  limit: z.number().int().min(1).max(100).default(25).describe("Maximum results to return.")
989
990
  });
990
991
  var paginationSchema = z.object({
@@ -1210,6 +1211,31 @@ var inboxBodyValueSchema = z.object({
1210
1211
  value: z.string(),
1211
1212
  is_encoding_problem: z.boolean()
1212
1213
  });
1214
+ var emailAuthVerdictSchema = z.enum([
1215
+ "pass",
1216
+ "fail",
1217
+ "softfail",
1218
+ "neutral",
1219
+ "none",
1220
+ "temperror",
1221
+ "permerror",
1222
+ "policy",
1223
+ "unknown"
1224
+ ]);
1225
+ var emailAuthenticationResultsSchema = z.object({
1226
+ spf: emailAuthVerdictSchema,
1227
+ dkim: emailAuthVerdictSchema,
1228
+ dmarc: emailAuthVerdictSchema,
1229
+ spam: z.object({
1230
+ isSpam: z.boolean().nullable(),
1231
+ scoreMilli: z.number().int().nullable()
1232
+ }),
1233
+ raw: z.object({
1234
+ authenticationResults: z.string().nullable(),
1235
+ receivedSpf: z.string().nullable(),
1236
+ spamStatus: z.string().nullable()
1237
+ })
1238
+ });
1213
1239
  var inboxMessageSchema = z.object({
1214
1240
  object: z.literal("inbox_message"),
1215
1241
  id: z.string(),
@@ -1224,7 +1250,8 @@ var inboxMessageSchema = z.object({
1224
1250
  received_at: z.string(),
1225
1251
  preview: z.string(),
1226
1252
  has_attachment: z.boolean(),
1227
- size: z.number()
1253
+ size: z.number(),
1254
+ authentication_results: emailAuthenticationResultsSchema.nullable()
1228
1255
  });
1229
1256
  var inboxFullMessageSchema = inboxMessageSchema.omit({ object: true }).extend({
1230
1257
  object: z.literal("inbox_message_full"),
@@ -1468,6 +1495,23 @@ var messageSchema = z.object({
1468
1495
  created_at: z.string(),
1469
1496
  updated_at: z.string()
1470
1497
  });
1498
+ var messageAnalyticsSchema = z.object({
1499
+ object: z.literal("message_analytics"),
1500
+ id: z.string(),
1501
+ mailbox_id: z.string(),
1502
+ thread_id: z.string().nullable(),
1503
+ client_reference: z.string().nullable(),
1504
+ direction: z.enum(["inbound", "outbound"]),
1505
+ contact_addresses: z.array(z.string().email()),
1506
+ recipient_count: z.number().int().nonnegative(),
1507
+ attachment_count: z.number().int().nonnegative(),
1508
+ source: z.enum(MESSAGE_SOURCES),
1509
+ mode: z.enum(["live", "test"]),
1510
+ status: z.enum(MESSAGE_STATUSES),
1511
+ scheduled_at: z.string().nullable(),
1512
+ created_at: z.string(),
1513
+ updated_at: z.string()
1514
+ });
1471
1515
  var scheduledMessageSchema = z.object({
1472
1516
  object: z.literal("scheduled_message"),
1473
1517
  id: z.string(),
@@ -1686,6 +1730,12 @@ var messagesOutputSchema = z.object({
1686
1730
  data: z.array(messageSchema),
1687
1731
  pagination: paginationSchema
1688
1732
  });
1733
+ var messageAnalyticsOutputSchema = z.object({
1734
+ data: z.array(messageAnalyticsSchema),
1735
+ pagination: paginationSchema.extend({
1736
+ snapshot_at: z.string()
1737
+ })
1738
+ });
1689
1739
  var scheduledMessageOutputSchema = z.object({
1690
1740
  scheduled_message: scheduledMessageSchema
1691
1741
  });
@@ -2048,6 +2098,16 @@ var listMessagesInputSchema = paginationInputSchema.extend({
2048
2098
  }).refine((value) => Boolean(value.mailbox_id || value.client_reference), {
2049
2099
  message: "Provide mailbox_id or client_reference."
2050
2100
  });
2101
+ var listMessageAnalyticsInputSchema = paginationInputSchema.extend({
2102
+ updated_after: z.iso.datetime({ offset: true }).optional(),
2103
+ updated_before: z.iso.datetime({ offset: true }).optional()
2104
+ }).refine(
2105
+ (value) => !(value.updated_after && value.updated_before) || new Date(value.updated_after).getTime() < new Date(value.updated_before).getTime(),
2106
+ {
2107
+ message: "updated_after must be earlier than updated_before.",
2108
+ path: ["updated_after"]
2109
+ }
2110
+ );
2051
2111
  var openAiFileInputSchema = z.object({
2052
2112
  // The component prefers a freshly minted host download URL and only falls back to this one.
2053
2113
  // It is model-supplied and therefore reachable by prompt injection, so it is constrained to
@@ -3795,7 +3855,8 @@ function toInboxMessageSummary(message) {
3795
3855
  received_at: message.received_at,
3796
3856
  preview: message.preview,
3797
3857
  has_attachment: message.has_attachment,
3798
- size: message.size
3858
+ size: message.size,
3859
+ authentication_results: message.authentication_results
3799
3860
  };
3800
3861
  }
3801
3862
  function toInboxMessageSummaries(messages) {
@@ -5459,6 +5520,23 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5459
5520
  })
5460
5521
  );
5461
5522
  });
5523
+ registerIfAllowed("shipmail_list_message_analytics", () => {
5524
+ server.registerTool(
5525
+ "shipmail_list_message_analytics",
5526
+ {
5527
+ title: "List Message Analytics",
5528
+ description: "List an organization-wide, analytics-safe message projection in stable updated_at order. The response excludes subjects, BCC addresses, headers, free-form metadata, attachment filenames, and message bodies. contact_addresses and caller-defined client_reference values may contain personal data.",
5529
+ inputSchema: listMessageAnalyticsInputSchema,
5530
+ outputSchema: messageAnalyticsOutputSchema,
5531
+ annotations: { readOnlyHint: true, openWorldHint: false }
5532
+ },
5533
+ async (args) => runTool(
5534
+ "shipmail_list_message_analytics",
5535
+ messageAnalyticsOutputSchema,
5536
+ async () => client.messages.listAnalytics(args)
5537
+ )
5538
+ );
5539
+ });
5462
5540
  registerIfAllowed("shipmail_get_message", () => {
5463
5541
  server.registerTool(
5464
5542
  "shipmail_get_message",
@@ -7090,7 +7168,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
7090
7168
  }
7091
7169
 
7092
7170
  // src/version.ts
7093
- var VERSION = "0.6.3";
7171
+ var VERSION = "0.6.5";
7094
7172
 
7095
7173
  // src/server.ts
7096
7174
  var INSTRUCTIONS = `ShipMail MCP exposes the business email and calendar tools authorized by the connection's current ShipMail permissions.
package/dist/server.js CHANGED
@@ -219,6 +219,7 @@ var CAPABILITY_ROWS = [
219
219
  ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"],
220
220
  ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"],
221
221
  ["shipmail_list_messages", "listMessages", "messages:read"],
222
+ ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"],
222
223
  ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"],
223
224
  ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"],
224
225
  ["shipmail_send_message", "sendMessage", "messages:send"],
@@ -782,7 +783,7 @@ var EMAIL_MAX_LENGTH = 254;
782
783
  var RECIPIENT_NAME_MAX = 120;
783
784
  var NO_CONTROL_CHARS = /^[^\x00-\x1F\x7F]*$/;
784
785
  var DOMAIN_NAME_REGEX = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)+$/i;
785
- var CURSOR_REGEX = /^[A-Za-z0-9_\-=.+/]{1,512}$/;
786
+ var CURSOR_REGEX = /^[A-Za-z0-9_\-=.+/]+$/;
786
787
  var SUPPRESSION_REASONS = ["hard_bounce", "complaint", "manual"];
787
788
  var SYSTEM_FOLDER_NAMES = [
788
789
  "inbox",
@@ -887,7 +888,7 @@ var calendarEventIdInputSchema = z.string().min(1).max(256).refine((value) => NO
887
888
  var idempotencyKeySchema = z.string().regex(IDEMPOTENCY_REGEX, "Idempotency key must be 1-255 printable ASCII characters.").optional().describe("Optional idempotency key. If omitted, the MCP server generates one for POST tools.");
888
889
  var domainNameSchema = z.string().min(1).max(253).regex(DOMAIN_NAME_REGEX, "Must be a valid domain name (e.g. example.com).");
889
890
  var paginationInputSchema = z.object({
890
- cursor: z.string().regex(CURSOR_REGEX, "Cursor must be 1-512 characters of [A-Za-z0-9_\\-=.+/].").optional().describe("Pagination cursor returned by the previous call."),
891
+ cursor: z.string().max(8192, "Cursor must not exceed 8192 characters.").regex(CURSOR_REGEX, "Cursor must contain only [A-Za-z0-9_\\-=.+/].").optional().describe("Pagination cursor returned by the previous call."),
891
892
  limit: z.number().int().min(1).max(100).default(25).describe("Maximum results to return.")
892
893
  });
893
894
  var paginationSchema = z.object({
@@ -1113,6 +1114,31 @@ var inboxBodyValueSchema = z.object({
1113
1114
  value: z.string(),
1114
1115
  is_encoding_problem: z.boolean()
1115
1116
  });
1117
+ var emailAuthVerdictSchema = z.enum([
1118
+ "pass",
1119
+ "fail",
1120
+ "softfail",
1121
+ "neutral",
1122
+ "none",
1123
+ "temperror",
1124
+ "permerror",
1125
+ "policy",
1126
+ "unknown"
1127
+ ]);
1128
+ var emailAuthenticationResultsSchema = z.object({
1129
+ spf: emailAuthVerdictSchema,
1130
+ dkim: emailAuthVerdictSchema,
1131
+ dmarc: emailAuthVerdictSchema,
1132
+ spam: z.object({
1133
+ isSpam: z.boolean().nullable(),
1134
+ scoreMilli: z.number().int().nullable()
1135
+ }),
1136
+ raw: z.object({
1137
+ authenticationResults: z.string().nullable(),
1138
+ receivedSpf: z.string().nullable(),
1139
+ spamStatus: z.string().nullable()
1140
+ })
1141
+ });
1116
1142
  var inboxMessageSchema = z.object({
1117
1143
  object: z.literal("inbox_message"),
1118
1144
  id: z.string(),
@@ -1127,7 +1153,8 @@ var inboxMessageSchema = z.object({
1127
1153
  received_at: z.string(),
1128
1154
  preview: z.string(),
1129
1155
  has_attachment: z.boolean(),
1130
- size: z.number()
1156
+ size: z.number(),
1157
+ authentication_results: emailAuthenticationResultsSchema.nullable()
1131
1158
  });
1132
1159
  var inboxFullMessageSchema = inboxMessageSchema.omit({ object: true }).extend({
1133
1160
  object: z.literal("inbox_message_full"),
@@ -1371,6 +1398,23 @@ var messageSchema = z.object({
1371
1398
  created_at: z.string(),
1372
1399
  updated_at: z.string()
1373
1400
  });
1401
+ var messageAnalyticsSchema = z.object({
1402
+ object: z.literal("message_analytics"),
1403
+ id: z.string(),
1404
+ mailbox_id: z.string(),
1405
+ thread_id: z.string().nullable(),
1406
+ client_reference: z.string().nullable(),
1407
+ direction: z.enum(["inbound", "outbound"]),
1408
+ contact_addresses: z.array(z.string().email()),
1409
+ recipient_count: z.number().int().nonnegative(),
1410
+ attachment_count: z.number().int().nonnegative(),
1411
+ source: z.enum(MESSAGE_SOURCES),
1412
+ mode: z.enum(["live", "test"]),
1413
+ status: z.enum(MESSAGE_STATUSES),
1414
+ scheduled_at: z.string().nullable(),
1415
+ created_at: z.string(),
1416
+ updated_at: z.string()
1417
+ });
1374
1418
  var scheduledMessageSchema = z.object({
1375
1419
  object: z.literal("scheduled_message"),
1376
1420
  id: z.string(),
@@ -1589,6 +1633,12 @@ var messagesOutputSchema = z.object({
1589
1633
  data: z.array(messageSchema),
1590
1634
  pagination: paginationSchema
1591
1635
  });
1636
+ var messageAnalyticsOutputSchema = z.object({
1637
+ data: z.array(messageAnalyticsSchema),
1638
+ pagination: paginationSchema.extend({
1639
+ snapshot_at: z.string()
1640
+ })
1641
+ });
1592
1642
  var scheduledMessageOutputSchema = z.object({
1593
1643
  scheduled_message: scheduledMessageSchema
1594
1644
  });
@@ -1951,6 +2001,16 @@ var listMessagesInputSchema = paginationInputSchema.extend({
1951
2001
  }).refine((value) => Boolean(value.mailbox_id || value.client_reference), {
1952
2002
  message: "Provide mailbox_id or client_reference."
1953
2003
  });
2004
+ var listMessageAnalyticsInputSchema = paginationInputSchema.extend({
2005
+ updated_after: z.iso.datetime({ offset: true }).optional(),
2006
+ updated_before: z.iso.datetime({ offset: true }).optional()
2007
+ }).refine(
2008
+ (value) => !(value.updated_after && value.updated_before) || new Date(value.updated_after).getTime() < new Date(value.updated_before).getTime(),
2009
+ {
2010
+ message: "updated_after must be earlier than updated_before.",
2011
+ path: ["updated_after"]
2012
+ }
2013
+ );
1954
2014
  var openAiFileInputSchema = z.object({
1955
2015
  // The component prefers a freshly minted host download URL and only falls back to this one.
1956
2016
  // It is model-supplied and therefore reachable by prompt injection, so it is constrained to
@@ -3698,7 +3758,8 @@ function toInboxMessageSummary(message) {
3698
3758
  received_at: message.received_at,
3699
3759
  preview: message.preview,
3700
3760
  has_attachment: message.has_attachment,
3701
- size: message.size
3761
+ size: message.size,
3762
+ authentication_results: message.authentication_results
3702
3763
  };
3703
3764
  }
3704
3765
  function toInboxMessageSummaries(messages) {
@@ -5362,6 +5423,23 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5362
5423
  })
5363
5424
  );
5364
5425
  });
5426
+ registerIfAllowed("shipmail_list_message_analytics", () => {
5427
+ server.registerTool(
5428
+ "shipmail_list_message_analytics",
5429
+ {
5430
+ title: "List Message Analytics",
5431
+ description: "List an organization-wide, analytics-safe message projection in stable updated_at order. The response excludes subjects, BCC addresses, headers, free-form metadata, attachment filenames, and message bodies. contact_addresses and caller-defined client_reference values may contain personal data.",
5432
+ inputSchema: listMessageAnalyticsInputSchema,
5433
+ outputSchema: messageAnalyticsOutputSchema,
5434
+ annotations: { readOnlyHint: true, openWorldHint: false }
5435
+ },
5436
+ async (args) => runTool(
5437
+ "shipmail_list_message_analytics",
5438
+ messageAnalyticsOutputSchema,
5439
+ async () => client.messages.listAnalytics(args)
5440
+ )
5441
+ );
5442
+ });
5365
5443
  registerIfAllowed("shipmail_get_message", () => {
5366
5444
  server.registerTool(
5367
5445
  "shipmail_get_message",
@@ -6993,7 +7071,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
6993
7071
  }
6994
7072
 
6995
7073
  // src/version.ts
6996
- var VERSION = "0.6.3";
7074
+ var VERSION = "0.6.5";
6997
7075
 
6998
7076
  // src/server.ts
6999
7077
  var INSTRUCTIONS = `ShipMail MCP exposes the business email and calendar tools authorized by the connection's current ShipMail permissions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipmail-mcp",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "mcpName": "io.github.shipmail-to/shipmail-mcp",
5
5
  "description": "Official Model Context Protocol (MCP) server for Shipmail, a business email provider with REST API, webhooks, and custom-domain inboxes for AI agents.",
6
6
  "type": "module",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@modelcontextprotocol/server": "2.0.0",
62
- "shipmail": "0.4.9",
62
+ "shipmail": "0.4.11",
63
63
  "zod": "4.4.3"
64
64
  },
65
65
  "devDependencies": {
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/shipmail-to/shipmail-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.6.3",
9
+ "version": "0.6.5",
10
10
  "websiteUrl": "https://shipmail.to/docs/mcp",
11
11
  "remotes": [
12
12
  {
@@ -27,7 +27,7 @@
27
27
  "registryType": "npm",
28
28
  "registryBaseUrl": "https://registry.npmjs.org",
29
29
  "identifier": "shipmail-mcp",
30
- "version": "0.6.3",
30
+ "version": "0.6.5",
31
31
  "transport": {
32
32
  "type": "stdio"
33
33
  },
package/smithery.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  # Smithery configuration file: https://smithery.ai/docs/build/project-config/smithery-yaml
2
2
  name: shipmail-mcp
3
- version: 0.6.3
3
+ version: 0.6.5
4
4
  description: Official Shipmail MCP server for AI-agent custom-domain business email inboxes with REST API and webhooks.
5
5
  author: ShipMail
6
6
  repository: https://github.com/shipmail-to/shipmail-mcp