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 +11 -11
- package/dist/capabilities.d.ts +1 -1
- package/dist/capabilities.js +5 -0
- package/dist/index.js +57 -12
- package/dist/server.js +57 -12
- package/package.json +5 -5
- package/server.json +4 -4
- package/smithery.yaml +2 -2
package/README.md
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/shipmail-mcp)
|
|
5
5
|
[](https://www.npmjs.com/package/shipmail-mcp)
|
|
6
6
|
[](./LICENSE)
|
|
7
|
-
[](https://github.com/
|
|
7
|
+
[](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 [
|
|
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/
|
|
27
|
-
- Official registry metadata: [`io.github.
|
|
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/
|
|
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: `
|
|
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.
|
|
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/
|
|
443
|
-
- [Issues](https://github.com/
|
|
442
|
+
- [Source repository](https://github.com/shipmail-to/shipmail-mcp)
|
|
443
|
+
- [Issues](https://github.com/shipmail-to/shipmail-mcp/issues)
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -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;
|
package/dist/capabilities.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
4
|
-
"mcpName": "io.github.
|
|
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/
|
|
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/
|
|
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.
|
|
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.
|
|
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/
|
|
6
|
+
"url": "https://github.com/shipmail-to/shipmail-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.6.
|
|
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.
|
|
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.
|
|
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/
|
|
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
|