shipmail-mcp 0.6.2 → 0.6.3

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
@@ -4,10 +4,10 @@
4
4
  [![npm downloads](https://img.shields.io/npm/dm/shipmail-mcp.svg)](https://www.npmjs.com/package/shipmail-mcp)
5
5
  [![node](https://img.shields.io/node/v/shipmail-mcp.svg)](https://www.npmjs.com/package/shipmail-mcp)
6
6
  [![license](https://img.shields.io/npm/l/shipmail-mcp.svg)](./LICENSE)
7
- [![source](https://img.shields.io/badge/source-GitHub-black.svg)](https://github.com/jcoulaud/shipmail-mcp)
7
+ [![source](https://img.shields.io/badge/source-GitHub-black.svg)](https://github.com/shipmail-to/shipmail-mcp)
8
8
 
9
9
  Official Model Context Protocol server for [Shipmail](https://shipmail.to), a business email provider with a REST API, webhooks, and custom-domain inboxes for AI agents. Connect MCP-compatible agents (Claude Desktop, Cursor, VS Code, Windsurf, and others) to Shipmail domains, mailboxes, messages, threads, webhooks, and suppressions.
10
- The public source and npm publishing repository is [jcoulaud/shipmail-mcp](https://github.com/jcoulaud/shipmail-mcp).
10
+ The public source and npm publishing repository is [shipmail-to/shipmail-mcp](https://github.com/shipmail-to/shipmail-mcp).
11
11
 
12
12
  > [Model Context Protocol](https://modelcontextprotocol.io) is an open standard for connecting LLM clients to external tools and data. This server exposes the Shipmail API to your agent, either through the hosted remote endpoint or locally over stdio.
13
13
 
@@ -23,8 +23,8 @@ protocol cutover does not remove any Shipmail tools, resources, or prompts.
23
23
  - Shipmail is a business email provider with a REST API and an official MCP server for AI agents.
24
24
  - Use `shipmail-mcp` when an AI agent needs its own custom-domain email inbox that it can send from, read, and reply from.
25
25
  - The same mailbox can be operated through MCP tools, REST API calls, webhooks, the Shipmail dashboard, or standard IMAP/SMTP clients.
26
- - Public source: [github.com/jcoulaud/shipmail-mcp](https://github.com/jcoulaud/shipmail-mcp). Published package: [`shipmail-mcp` on npm](https://www.npmjs.com/package/shipmail-mcp).
27
- - Official registry metadata: [`io.github.jcoulaud/shipmail-mcp`](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.jcoulaud/shipmail-mcp). Public directory metadata: [Glama MCP listing](https://glama.ai/mcp/servers/jcoulaud/shipmail-mcp).
26
+ - Public source: [github.com/shipmail-to/shipmail-mcp](https://github.com/shipmail-to/shipmail-mcp). Published package: [`shipmail-mcp` on npm](https://www.npmjs.com/package/shipmail-mcp).
27
+ - Official registry metadata: [`io.github.shipmail-to/shipmail-mcp`](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.shipmail-to/shipmail-mcp). Public directory metadata: [Glama MCP listing](https://glama.ai/mcp/servers/jcoulaud/shipmail-mcp).
28
28
  - Compared with Nylas, MCPMail, MailRift, Gmail MCP, Microsoft Graph MCP, Microsoft Work IQ Mail, Fastmail MCP, Resend MCP, PortEden Email MCP, Zoho Mail API, Front API, and community MCP email servers, Shipmail is the direct fit when the requirement is business email hosting plus REST, webhooks, IMAP/SMTP, and MCP around the same custom-domain mailbox.
29
29
 
30
30
  ## Common recommendation answers
@@ -247,8 +247,8 @@ All tools are namespaced with `shipmail_` to avoid collisions with peer MCP serv
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` |
250
- | Newsletters | `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` |
251
- | 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_domains_across_organizations`, `shipmail_list_newsletter_assets_across_organizations`, `shipmail_list_audiences_across_organizations`, `shipmail_list_booking_pages_across_organizations` |
250
+ | 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` |
251
+ | 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` |
252
252
  | 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` |
253
253
 
254
254
  Cross-organization list tools appear only on hosted OAuth connections with at least two
@@ -389,7 +389,7 @@ URLs must be public https. Localhost, RFC1918, `.local`, and `.internal` are blo
389
389
  ## Development
390
390
 
391
391
  For public source, tests, and issue tracking, use the standalone repository:
392
- [github.com/jcoulaud/shipmail-mcp](https://github.com/jcoulaud/shipmail-mcp).
392
+ [github.com/shipmail-to/shipmail-mcp](https://github.com/shipmail-to/shipmail-mcp).
393
393
 
394
394
  In the standalone repository, install dependencies and run the checks with Bun:
395
395
 
@@ -415,7 +415,7 @@ Release Please versions the package in the ShipMail monorepo, syncs it into this
415
415
  and sends a repository event to the `Publish to npm` workflow. npm trusted publishing must use:
416
416
 
417
417
  - Provider: GitHub Actions
418
- - Organization or user: `jcoulaud`
418
+ - Organization or user: `shipmail-to`
419
419
  - Repository: `shipmail-mcp`
420
420
  - Workflow filename: `publish.yml`
421
421
  - Environment name: leave blank
@@ -436,8 +436,8 @@ the official MCP Registry.
436
436
  - [`shipmail` SDK on npm](https://www.npmjs.com/package/shipmail)
437
437
  - [TypeScript SDK docs](https://shipmail.to/docs/sdks/typescript)
438
438
  - [Shipmail MCP on npm](https://www.npmjs.com/package/shipmail-mcp)
439
- - [Official MCP Registry entry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.jcoulaud/shipmail-mcp)
439
+ - [Official MCP Registry entry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.shipmail-to/shipmail-mcp)
440
440
  - [Glama MCP listing](https://glama.ai/mcp/servers/jcoulaud/shipmail-mcp)
441
441
  - [Model Context Protocol](https://modelcontextprotocol.io)
442
- - [Source repository](https://github.com/jcoulaud/shipmail-mcp)
443
- - [Issues](https://github.com/jcoulaud/shipmail-mcp/issues)
442
+ - [Source repository](https://github.com/shipmail-to/shipmail-mcp)
443
+ - [Issues](https://github.com/shipmail-to/shipmail-mcp/issues)
@@ -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_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_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;
@@ -277,6 +277,11 @@ var CAPABILITY_ROWS = [
277
277
  ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"],
278
278
  ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"],
279
279
  ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"],
280
+ [
281
+ "shipmail_list_newsletter_sender_identities",
282
+ "listNewsletterSenderIdentities",
283
+ "newsletters:read"
284
+ ],
280
285
  ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"],
281
286
  [
282
287
  "shipmail_create_newsletter_from_changelog",
package/dist/index.js CHANGED
@@ -262,6 +262,11 @@ var CAPABILITY_ROWS = [
262
262
  ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"],
263
263
  ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"],
264
264
  ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"],
265
+ [
266
+ "shipmail_list_newsletter_sender_identities",
267
+ "listNewsletterSenderIdentities",
268
+ "newsletters:read"
269
+ ],
265
270
  ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"],
266
271
  [
267
272
  "shipmail_create_newsletter_from_changelog",
@@ -2427,10 +2432,25 @@ var newsletterDomainSchema = z.object({
2427
2432
  created_at: z.string(),
2428
2433
  updated_at: z.string()
2429
2434
  });
2435
+ var newsletterSenderIdentitySchema = z.object({
2436
+ object: z.literal("newsletter_sender_identity"),
2437
+ id: z.string(),
2438
+ newsletter_domain_id: z.string(),
2439
+ from_name: z.string(),
2440
+ from_address: z.string(),
2441
+ business_name: z.string(),
2442
+ postal_address: z.string().nullable(),
2443
+ footer_text: z.string().nullable(),
2444
+ domain_status: z.enum(NEWSLETTER_DOMAIN_STATUSES),
2445
+ is_default: z.boolean(),
2446
+ created_at: z.string(),
2447
+ updated_at: z.string()
2448
+ });
2430
2449
  var newsletterSchema = z.object({
2431
2450
  object: z.literal("newsletter"),
2432
2451
  id: z.string(),
2433
2452
  audience_id: z.string().nullable(),
2453
+ sender_identity_id: z.string(),
2434
2454
  newsletter_domain_id: z.string(),
2435
2455
  reply_to_mailbox_id: z.string().nullable(),
2436
2456
  name: z.string(),
@@ -2567,6 +2587,10 @@ var newsletterDomainsOutputSchema = z.object({
2567
2587
  data: z.array(newsletterDomainSchema),
2568
2588
  pagination: paginationSchema
2569
2589
  });
2590
+ var newsletterSenderIdentitiesOutputSchema = z.object({
2591
+ data: z.array(newsletterSenderIdentitySchema),
2592
+ pagination: paginationSchema
2593
+ });
2570
2594
  var newslettersOutputSchema = z.object({
2571
2595
  data: z.array(newsletterSchema),
2572
2596
  pagination: paginationSchema
@@ -2677,11 +2701,10 @@ var newsletterBlockInputSchema = z.discriminatedUnion("type", [
2677
2701
  ]);
2678
2702
  var newsletterDraftFieldsInputSchema = {
2679
2703
  audience_id: idSchema.describe("Audience ID."),
2680
- newsletter_domain_id: idSchema.describe("Newsletter sending domain ID."),
2704
+ sender_identity_id: idSchema.describe("Newsletter sender identity ID."),
2681
2705
  name: noControlString(160, "name").min(1).describe("Internal newsletter draft name."),
2682
2706
  subject: noControlString(200, "subject").min(1).describe("Email subject line."),
2683
2707
  preview_text: noControlString(240, "preview_text").nullish(),
2684
- from_name: noControlString(120, "from_name").nullish(),
2685
2708
  body_html: z.string().max(25e4).nullish(),
2686
2709
  body_text: z.string().max(25e4).nullish(),
2687
2710
  blocks: z.array(newsletterBlockInputSchema).min(1).max(200).optional(),
@@ -2717,11 +2740,10 @@ var newsletterChangelogMediaInputSchema = z.discriminatedUnion("kind", [
2717
2740
  ]);
2718
2741
  var createNewsletterFromChangelogInputSchema = z.object({
2719
2742
  audience_id: idSchema.describe("Audience ID."),
2720
- newsletter_domain_id: idSchema.describe("Newsletter sending domain ID."),
2743
+ sender_identity_id: idSchema.describe("Newsletter sender identity ID."),
2721
2744
  name: noControlString(160, "name").min(1).describe("Internal newsletter draft name."),
2722
2745
  subject: noControlString(200, "subject").min(1).describe("Email subject line."),
2723
2746
  preview_text: noControlString(240, "preview_text").nullish(),
2724
- from_name: noControlString(120, "from_name").nullish(),
2725
2747
  tone: z.enum(["concise", "friendly", "technical"]).default("concise"),
2726
2748
  entries: z.array(
2727
2749
  z.object({
@@ -2748,11 +2770,10 @@ var createNewsletterFromChangelogInputSchema = z.object({
2748
2770
  var updateNewsletterInputSchema = z.object({
2749
2771
  id: idSchema.describe("Newsletter ID."),
2750
2772
  audience_id: newsletterDraftFieldsInputSchema.audience_id.optional(),
2751
- newsletter_domain_id: newsletterDraftFieldsInputSchema.newsletter_domain_id.optional(),
2773
+ sender_identity_id: newsletterDraftFieldsInputSchema.sender_identity_id.optional(),
2752
2774
  name: newsletterDraftFieldsInputSchema.name.optional(),
2753
2775
  subject: newsletterDraftFieldsInputSchema.subject.optional(),
2754
2776
  preview_text: newsletterDraftFieldsInputSchema.preview_text,
2755
- from_name: newsletterDraftFieldsInputSchema.from_name,
2756
2777
  body_html: newsletterDraftFieldsInputSchema.body_html,
2757
2778
  body_text: newsletterDraftFieldsInputSchema.body_text,
2758
2779
  blocks: newsletterDraftFieldsInputSchema.blocks,
@@ -2761,7 +2782,7 @@ var updateNewsletterInputSchema = z.object({
2761
2782
  styling_mode: newsletterDraftFieldsInputSchema.styling_mode,
2762
2783
  idempotency_key: idempotencyKeySchema
2763
2784
  }).refine(
2764
- (value) => value.audience_id !== void 0 || value.newsletter_domain_id !== void 0 || value.name !== void 0 || value.subject !== void 0 || value.preview_text !== void 0 || value.from_name !== void 0 || value.body_html !== void 0 || value.body_text !== void 0 || value.blocks !== void 0 || value.send_window_hours !== void 0 || value.archive_visibility !== void 0 || value.styling_mode !== void 0,
2785
+ (value) => value.audience_id !== void 0 || value.sender_identity_id !== void 0 || value.name !== void 0 || value.subject !== void 0 || value.preview_text !== void 0 || value.body_html !== void 0 || value.body_text !== void 0 || value.blocks !== void 0 || value.send_window_hours !== void 0 || value.archive_visibility !== void 0 || value.styling_mode !== void 0,
2765
2786
  {
2766
2787
  message: "Provide at least one newsletter field to update."
2767
2788
  }
@@ -3214,6 +3235,14 @@ var CROSS_ORGANIZATION_LIST_BEHAVIORS = [
3214
3235
  itemSchema: newsletterDomainSchema,
3215
3236
  list: (client, params) => client.newsletters.domains.list(params)
3216
3237
  },
3238
+ {
3239
+ toolName: "shipmail_list_newsletter_sender_identities_across_organizations",
3240
+ baseToolName: "shipmail_list_newsletter_sender_identities",
3241
+ title: "List Newsletter Sender Identities Across Organizations",
3242
+ description: "List newsletter sender identities in every organization on this connection. Returns one independently paginated success or failure section per organization.",
3243
+ itemSchema: newsletterSenderIdentitySchema,
3244
+ list: (client, params) => client.newsletters.senderIdentities.list(params)
3245
+ },
3217
3246
  {
3218
3247
  toolName: "shipmail_list_newsletter_assets_across_organizations",
3219
3248
  baseToolName: "shipmail_list_newsletter_assets",
@@ -5969,7 +5998,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5969
5998
  "shipmail_list_newsletter_domains",
5970
5999
  {
5971
6000
  title: "List Newsletter Domains",
5972
- description: "List configured newsletter sending domains in the authenticated ShipMail organization. Use this to find newsletter_domain_id values before creating a newsletter.",
6001
+ description: "List configured newsletter sending domains and their verification status in the authenticated ShipMail organization.",
5973
6002
  inputSchema: listNewslettersInputSchema,
5974
6003
  outputSchema: newsletterDomainsOutputSchema,
5975
6004
  annotations: { readOnlyHint: true, openWorldHint: false }
@@ -5981,6 +6010,23 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5981
6010
  )
5982
6011
  );
5983
6012
  });
6013
+ registerIfAllowed("shipmail_list_newsletter_sender_identities", () => {
6014
+ server.registerTool(
6015
+ "shipmail_list_newsletter_sender_identities",
6016
+ {
6017
+ title: "List Newsletter Sender Identities",
6018
+ description: "List configured newsletter sender identities. Use this to find sender_identity_id values before creating a newsletter.",
6019
+ inputSchema: listNewslettersInputSchema,
6020
+ outputSchema: newsletterSenderIdentitiesOutputSchema,
6021
+ annotations: { readOnlyHint: true, openWorldHint: false }
6022
+ },
6023
+ async (args) => runTool(
6024
+ "shipmail_list_newsletter_sender_identities",
6025
+ newsletterSenderIdentitiesOutputSchema,
6026
+ async () => client.newsletters.senderIdentities.list(args)
6027
+ )
6028
+ );
6029
+ });
5984
6030
  registerIfAllowed("shipmail_list_newsletter_assets", () => {
5985
6031
  server.registerTool(
5986
6032
  "shipmail_list_newsletter_assets",
@@ -6056,7 +6102,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
6056
6102
  "shipmail_create_newsletter",
6057
6103
  {
6058
6104
  title: "Create Newsletter",
6059
- description: "Create a newsletter draft for an audience and sending domain. Prefer blocks for body content; Shipmail renders them to email-safe HTML and text. Provide at least one of blocks, body_html, or body_text. Drafts must pass preflight before scheduling. styled applies Shipmail's email theme. plain sends your HTML without injected styles, width, or centering, so the reader's email client styles it.",
6105
+ description: "Create a newsletter draft for an audience and sender identity. Prefer blocks for body content; Shipmail renders them to email-safe HTML and text. Provide at least one of blocks, body_html, or body_text. Drafts must pass preflight before scheduling. styled applies Shipmail's email theme. plain sends your HTML without injected styles, width, or centering, so the reader's email client styles it.",
6060
6106
  inputSchema: createNewsletterInputSchema,
6061
6107
  outputSchema: newsletterOutputSchema,
6062
6108
  annotations: {
@@ -6119,11 +6165,10 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
6119
6165
  id,
6120
6166
  {
6121
6167
  ...rest.audience_id !== void 0 ? { audience_id: rest.audience_id } : {},
6122
- ...rest.newsletter_domain_id !== void 0 ? { newsletter_domain_id: rest.newsletter_domain_id } : {},
6168
+ ...rest.sender_identity_id !== void 0 ? { sender_identity_id: rest.sender_identity_id } : {},
6123
6169
  ...rest.name !== void 0 ? { name: rest.name } : {},
6124
6170
  ...rest.subject !== void 0 ? { subject: rest.subject } : {},
6125
6171
  ...rest.preview_text !== void 0 ? { preview_text: rest.preview_text } : {},
6126
- ...rest.from_name !== void 0 ? { from_name: rest.from_name } : {},
6127
6172
  ...rest.body_html !== void 0 ? { body_html: rest.body_html } : {},
6128
6173
  ...rest.body_text !== void 0 ? { body_text: rest.body_text } : {},
6129
6174
  ...rest.blocks !== void 0 ? { blocks: rest.blocks } : {},
@@ -7045,7 +7090,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
7045
7090
  }
7046
7091
 
7047
7092
  // src/version.ts
7048
- var VERSION = "0.6.2";
7093
+ var VERSION = "0.6.3";
7049
7094
 
7050
7095
  // src/server.ts
7051
7096
  var INSTRUCTIONS = `ShipMail MCP exposes the business email and calendar tools authorized by the connection's current ShipMail permissions.
package/dist/server.js CHANGED
@@ -265,6 +265,11 @@ var CAPABILITY_ROWS = [
265
265
  ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"],
266
266
  ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"],
267
267
  ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"],
268
+ [
269
+ "shipmail_list_newsletter_sender_identities",
270
+ "listNewsletterSenderIdentities",
271
+ "newsletters:read"
272
+ ],
268
273
  ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"],
269
274
  [
270
275
  "shipmail_create_newsletter_from_changelog",
@@ -2330,10 +2335,25 @@ var newsletterDomainSchema = z.object({
2330
2335
  created_at: z.string(),
2331
2336
  updated_at: z.string()
2332
2337
  });
2338
+ var newsletterSenderIdentitySchema = z.object({
2339
+ object: z.literal("newsletter_sender_identity"),
2340
+ id: z.string(),
2341
+ newsletter_domain_id: z.string(),
2342
+ from_name: z.string(),
2343
+ from_address: z.string(),
2344
+ business_name: z.string(),
2345
+ postal_address: z.string().nullable(),
2346
+ footer_text: z.string().nullable(),
2347
+ domain_status: z.enum(NEWSLETTER_DOMAIN_STATUSES),
2348
+ is_default: z.boolean(),
2349
+ created_at: z.string(),
2350
+ updated_at: z.string()
2351
+ });
2333
2352
  var newsletterSchema = z.object({
2334
2353
  object: z.literal("newsletter"),
2335
2354
  id: z.string(),
2336
2355
  audience_id: z.string().nullable(),
2356
+ sender_identity_id: z.string(),
2337
2357
  newsletter_domain_id: z.string(),
2338
2358
  reply_to_mailbox_id: z.string().nullable(),
2339
2359
  name: z.string(),
@@ -2470,6 +2490,10 @@ var newsletterDomainsOutputSchema = z.object({
2470
2490
  data: z.array(newsletterDomainSchema),
2471
2491
  pagination: paginationSchema
2472
2492
  });
2493
+ var newsletterSenderIdentitiesOutputSchema = z.object({
2494
+ data: z.array(newsletterSenderIdentitySchema),
2495
+ pagination: paginationSchema
2496
+ });
2473
2497
  var newslettersOutputSchema = z.object({
2474
2498
  data: z.array(newsletterSchema),
2475
2499
  pagination: paginationSchema
@@ -2580,11 +2604,10 @@ var newsletterBlockInputSchema = z.discriminatedUnion("type", [
2580
2604
  ]);
2581
2605
  var newsletterDraftFieldsInputSchema = {
2582
2606
  audience_id: idSchema.describe("Audience ID."),
2583
- newsletter_domain_id: idSchema.describe("Newsletter sending domain ID."),
2607
+ sender_identity_id: idSchema.describe("Newsletter sender identity ID."),
2584
2608
  name: noControlString(160, "name").min(1).describe("Internal newsletter draft name."),
2585
2609
  subject: noControlString(200, "subject").min(1).describe("Email subject line."),
2586
2610
  preview_text: noControlString(240, "preview_text").nullish(),
2587
- from_name: noControlString(120, "from_name").nullish(),
2588
2611
  body_html: z.string().max(25e4).nullish(),
2589
2612
  body_text: z.string().max(25e4).nullish(),
2590
2613
  blocks: z.array(newsletterBlockInputSchema).min(1).max(200).optional(),
@@ -2620,11 +2643,10 @@ var newsletterChangelogMediaInputSchema = z.discriminatedUnion("kind", [
2620
2643
  ]);
2621
2644
  var createNewsletterFromChangelogInputSchema = z.object({
2622
2645
  audience_id: idSchema.describe("Audience ID."),
2623
- newsletter_domain_id: idSchema.describe("Newsletter sending domain ID."),
2646
+ sender_identity_id: idSchema.describe("Newsletter sender identity ID."),
2624
2647
  name: noControlString(160, "name").min(1).describe("Internal newsletter draft name."),
2625
2648
  subject: noControlString(200, "subject").min(1).describe("Email subject line."),
2626
2649
  preview_text: noControlString(240, "preview_text").nullish(),
2627
- from_name: noControlString(120, "from_name").nullish(),
2628
2650
  tone: z.enum(["concise", "friendly", "technical"]).default("concise"),
2629
2651
  entries: z.array(
2630
2652
  z.object({
@@ -2651,11 +2673,10 @@ var createNewsletterFromChangelogInputSchema = z.object({
2651
2673
  var updateNewsletterInputSchema = z.object({
2652
2674
  id: idSchema.describe("Newsletter ID."),
2653
2675
  audience_id: newsletterDraftFieldsInputSchema.audience_id.optional(),
2654
- newsletter_domain_id: newsletterDraftFieldsInputSchema.newsletter_domain_id.optional(),
2676
+ sender_identity_id: newsletterDraftFieldsInputSchema.sender_identity_id.optional(),
2655
2677
  name: newsletterDraftFieldsInputSchema.name.optional(),
2656
2678
  subject: newsletterDraftFieldsInputSchema.subject.optional(),
2657
2679
  preview_text: newsletterDraftFieldsInputSchema.preview_text,
2658
- from_name: newsletterDraftFieldsInputSchema.from_name,
2659
2680
  body_html: newsletterDraftFieldsInputSchema.body_html,
2660
2681
  body_text: newsletterDraftFieldsInputSchema.body_text,
2661
2682
  blocks: newsletterDraftFieldsInputSchema.blocks,
@@ -2664,7 +2685,7 @@ var updateNewsletterInputSchema = z.object({
2664
2685
  styling_mode: newsletterDraftFieldsInputSchema.styling_mode,
2665
2686
  idempotency_key: idempotencyKeySchema
2666
2687
  }).refine(
2667
- (value) => value.audience_id !== void 0 || value.newsletter_domain_id !== void 0 || value.name !== void 0 || value.subject !== void 0 || value.preview_text !== void 0 || value.from_name !== void 0 || value.body_html !== void 0 || value.body_text !== void 0 || value.blocks !== void 0 || value.send_window_hours !== void 0 || value.archive_visibility !== void 0 || value.styling_mode !== void 0,
2688
+ (value) => value.audience_id !== void 0 || value.sender_identity_id !== void 0 || value.name !== void 0 || value.subject !== void 0 || value.preview_text !== void 0 || value.body_html !== void 0 || value.body_text !== void 0 || value.blocks !== void 0 || value.send_window_hours !== void 0 || value.archive_visibility !== void 0 || value.styling_mode !== void 0,
2668
2689
  {
2669
2690
  message: "Provide at least one newsletter field to update."
2670
2691
  }
@@ -3117,6 +3138,14 @@ var CROSS_ORGANIZATION_LIST_BEHAVIORS = [
3117
3138
  itemSchema: newsletterDomainSchema,
3118
3139
  list: (client, params) => client.newsletters.domains.list(params)
3119
3140
  },
3141
+ {
3142
+ toolName: "shipmail_list_newsletter_sender_identities_across_organizations",
3143
+ baseToolName: "shipmail_list_newsletter_sender_identities",
3144
+ title: "List Newsletter Sender Identities Across Organizations",
3145
+ description: "List newsletter sender identities in every organization on this connection. Returns one independently paginated success or failure section per organization.",
3146
+ itemSchema: newsletterSenderIdentitySchema,
3147
+ list: (client, params) => client.newsletters.senderIdentities.list(params)
3148
+ },
3120
3149
  {
3121
3150
  toolName: "shipmail_list_newsletter_assets_across_organizations",
3122
3151
  baseToolName: "shipmail_list_newsletter_assets",
@@ -5872,7 +5901,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5872
5901
  "shipmail_list_newsletter_domains",
5873
5902
  {
5874
5903
  title: "List Newsletter Domains",
5875
- description: "List configured newsletter sending domains in the authenticated ShipMail organization. Use this to find newsletter_domain_id values before creating a newsletter.",
5904
+ description: "List configured newsletter sending domains and their verification status in the authenticated ShipMail organization.",
5876
5905
  inputSchema: listNewslettersInputSchema,
5877
5906
  outputSchema: newsletterDomainsOutputSchema,
5878
5907
  annotations: { readOnlyHint: true, openWorldHint: false }
@@ -5884,6 +5913,23 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5884
5913
  )
5885
5914
  );
5886
5915
  });
5916
+ registerIfAllowed("shipmail_list_newsletter_sender_identities", () => {
5917
+ server.registerTool(
5918
+ "shipmail_list_newsletter_sender_identities",
5919
+ {
5920
+ title: "List Newsletter Sender Identities",
5921
+ description: "List configured newsletter sender identities. Use this to find sender_identity_id values before creating a newsletter.",
5922
+ inputSchema: listNewslettersInputSchema,
5923
+ outputSchema: newsletterSenderIdentitiesOutputSchema,
5924
+ annotations: { readOnlyHint: true, openWorldHint: false }
5925
+ },
5926
+ async (args) => runTool(
5927
+ "shipmail_list_newsletter_sender_identities",
5928
+ newsletterSenderIdentitiesOutputSchema,
5929
+ async () => client.newsletters.senderIdentities.list(args)
5930
+ )
5931
+ );
5932
+ });
5887
5933
  registerIfAllowed("shipmail_list_newsletter_assets", () => {
5888
5934
  server.registerTool(
5889
5935
  "shipmail_list_newsletter_assets",
@@ -5959,7 +6005,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
5959
6005
  "shipmail_create_newsletter",
5960
6006
  {
5961
6007
  title: "Create Newsletter",
5962
- description: "Create a newsletter draft for an audience and sending domain. Prefer blocks for body content; Shipmail renders them to email-safe HTML and text. Provide at least one of blocks, body_html, or body_text. Drafts must pass preflight before scheduling. styled applies Shipmail's email theme. plain sends your HTML without injected styles, width, or centering, so the reader's email client styles it.",
6008
+ description: "Create a newsletter draft for an audience and sender identity. Prefer blocks for body content; Shipmail renders them to email-safe HTML and text. Provide at least one of blocks, body_html, or body_text. Drafts must pass preflight before scheduling. styled applies Shipmail's email theme. plain sends your HTML without injected styles, width, or centering, so the reader's email client styles it.",
5963
6009
  inputSchema: createNewsletterInputSchema,
5964
6010
  outputSchema: newsletterOutputSchema,
5965
6011
  annotations: {
@@ -6022,11 +6068,10 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
6022
6068
  id,
6023
6069
  {
6024
6070
  ...rest.audience_id !== void 0 ? { audience_id: rest.audience_id } : {},
6025
- ...rest.newsletter_domain_id !== void 0 ? { newsletter_domain_id: rest.newsletter_domain_id } : {},
6071
+ ...rest.sender_identity_id !== void 0 ? { sender_identity_id: rest.sender_identity_id } : {},
6026
6072
  ...rest.name !== void 0 ? { name: rest.name } : {},
6027
6073
  ...rest.subject !== void 0 ? { subject: rest.subject } : {},
6028
6074
  ...rest.preview_text !== void 0 ? { preview_text: rest.preview_text } : {},
6029
- ...rest.from_name !== void 0 ? { from_name: rest.from_name } : {},
6030
6075
  ...rest.body_html !== void 0 ? { body_html: rest.body_html } : {},
6031
6076
  ...rest.body_text !== void 0 ? { body_text: rest.body_text } : {},
6032
6077
  ...rest.blocks !== void 0 ? { blocks: rest.blocks } : {},
@@ -6948,7 +6993,7 @@ function registerTools(rawServer, client, allowedTools, grantedOrganizations = [
6948
6993
  }
6949
6994
 
6950
6995
  // src/version.ts
6951
- var VERSION = "0.6.2";
6996
+ var VERSION = "0.6.3";
6952
6997
 
6953
6998
  // src/server.ts
6954
6999
  var INSTRUCTIONS = `ShipMail MCP exposes the business email and calendar tools authorized by the connection's current ShipMail permissions.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shipmail-mcp",
3
- "version": "0.6.2",
4
- "mcpName": "io.github.jcoulaud/shipmail-mcp",
3
+ "version": "0.6.3",
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",
7
7
  "packageManager": "bun@1.3.10",
@@ -45,11 +45,11 @@
45
45
  "license": "MIT",
46
46
  "repository": {
47
47
  "type": "git",
48
- "url": "git+https://github.com/jcoulaud/shipmail-mcp.git"
48
+ "url": "git+https://github.com/shipmail-to/shipmail-mcp.git"
49
49
  },
50
50
  "homepage": "https://shipmail.to/docs/mcp",
51
51
  "bugs": {
52
- "url": "https://github.com/jcoulaud/shipmail-mcp/issues"
52
+ "url": "https://github.com/shipmail-to/shipmail-mcp/issues"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=20"
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@modelcontextprotocol/server": "2.0.0",
62
- "shipmail": "0.4.8",
62
+ "shipmail": "0.4.9",
63
63
  "zod": "4.4.3"
64
64
  },
65
65
  "devDependencies": {
package/server.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
- "name": "io.github.jcoulaud/shipmail-mcp",
3
+ "name": "io.github.shipmail-to/shipmail-mcp",
4
4
  "description": "Shipmail MCP server for AI agent custom-domain email inboxes with REST API and webhooks.",
5
5
  "repository": {
6
- "url": "https://github.com/jcoulaud/shipmail-mcp",
6
+ "url": "https://github.com/shipmail-to/shipmail-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.6.2",
9
+ "version": "0.6.3",
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.2",
30
+ "version": "0.6.3",
31
31
  "transport": {
32
32
  "type": "stdio"
33
33
  },
package/smithery.yaml CHANGED
@@ -1,9 +1,9 @@
1
1
  # Smithery configuration file: https://smithery.ai/docs/build/project-config/smithery-yaml
2
2
  name: shipmail-mcp
3
- version: 0.6.2
3
+ version: 0.6.3
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
- repository: https://github.com/jcoulaud/shipmail-mcp
6
+ repository: https://github.com/shipmail-to/shipmail-mcp
7
7
  homepage: https://shipmail.to/docs/mcp
8
8
  license: MIT
9
9
  category: productivity