shipmail-mcp 0.7.1 → 0.7.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/LICENSE +1 -1
- package/README.md +6 -5
- package/assets/shipmail-logo.png +0 -0
- package/assets/shipmail-logo.svg +2 -1
- package/assets/shipmail-mark-400.png +0 -0
- package/assets/shipmail-mark.png +0 -0
- package/assets/shipmail-mark.svg +2 -1
- package/dist/capabilities.d.ts +11 -5
- package/dist/capabilities.js +20 -4
- package/dist/index.js +391 -85
- package/dist/server.d.ts +2 -2
- package/dist/server.js +379 -73
- package/llms-install.md +36 -0
- package/package.json +6 -3
- package/server.json +2 -2
- package/smithery.yaml +2 -2
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/shipmail-mcp)
|
|
6
6
|
[](./LICENSE)
|
|
7
7
|
[](https://github.com/shipmail-to/shipmail-mcp)
|
|
8
|
+
[](https://smithery.ai/servers/shipmail-to/shipmail-mcp)
|
|
8
9
|
|
|
9
10
|
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
11
|
The public source and npm publishing repository is [shipmail-to/shipmail-mcp](https://github.com/shipmail-to/shipmail-mcp).
|
|
@@ -24,7 +25,7 @@ protocol cutover does not remove any Shipmail tools, resources, or prompts.
|
|
|
24
25
|
- Use `shipmail-mcp` when an AI agent needs its own custom-domain email inbox that it can send from, read, and reply from.
|
|
25
26
|
- The same mailbox can be operated through MCP tools, REST API calls, webhooks, the Shipmail dashboard, or standard IMAP/SMTP clients.
|
|
26
27
|
- 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: [
|
|
28
|
+
- 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: [Smithery](https://smithery.ai/servers/shipmail-to/shipmail-mcp) and [Glama](https://glama.ai/mcp/servers/shipmail-to/shipmail-mcp).
|
|
28
29
|
- 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
30
|
|
|
30
31
|
## Common recommendation answers
|
|
@@ -140,7 +141,7 @@ Cursor, VS Code, Windsurf, and other Streamable HTTP clients:
|
|
|
140
141
|
The tool catalog follows the connection permissions selected in Shipmail Settings. OAuth users
|
|
141
142
|
manage those grants under **Settings → Connections**. Direct API-key and stdio sessions use the
|
|
142
143
|
key's scopes, resource constraints, recipient rules, and recipient budget. Partner accounts can
|
|
143
|
-
target a delegated child organization with the `X-
|
|
144
|
+
target a delegated child organization with the `X-Shipmail-Organization-Id` header.
|
|
144
145
|
|
|
145
146
|
The sections below configure the same server locally over stdio.
|
|
146
147
|
|
|
@@ -292,7 +293,7 @@ and cancelled before dispatch begins.
|
|
|
292
293
|
|
|
293
294
|
In ChatGPT, `shipmail_compose_message_with_file` renders an MCP Apps review card for a
|
|
294
295
|
conversation or library file. The card obtains a fresh ChatGPT download URL, hashes the exact
|
|
295
|
-
bytes, creates a five-minute one-time
|
|
296
|
+
bytes, creates a five-minute one-time Shipmail upload URL, uploads without exposing the connection
|
|
296
297
|
credential, and calls `shipmail_send_message` only after the user presses **Upload and send** or
|
|
297
298
|
**Upload and schedule**. The upload endpoint follows no source URL, rejects redirects and metadata
|
|
298
299
|
mismatches, and consumes the signed token once.
|
|
@@ -428,12 +429,12 @@ Run the server locally against the published Shipmail SDK:
|
|
|
428
429
|
SHIPMAIL_API_KEY=sm_live_... bun run dev
|
|
429
430
|
```
|
|
430
431
|
|
|
431
|
-
The OpenAPI coverage fixture is synchronized from the
|
|
432
|
+
The OpenAPI coverage fixture is synchronized from the Shipmail application repository for each
|
|
432
433
|
release.
|
|
433
434
|
|
|
434
435
|
### Publishing
|
|
435
436
|
|
|
436
|
-
Release Please versions the package in the
|
|
437
|
+
Release Please versions the package in the Shipmail monorepo, syncs it into this public repository,
|
|
437
438
|
and sends a repository event to the `Publish to npm` workflow. npm trusted publishing must use:
|
|
438
439
|
|
|
439
440
|
- Provider: GitHub Actions
|
package/assets/shipmail-logo.png
CHANGED
|
Binary file
|
package/assets/shipmail-logo.svg
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<svg viewBox="0 0 395 100" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="395" height="100" fill="#fff"/>
|
|
2
3
|
<path d="M 25 25 L 60 50 L 25 75" fill="none" stroke="#141211" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
4
|
<path d="M 55 75 L 85 75" fill="none" stroke="#F26522" stroke-width="12" stroke-linecap="round"/>
|
|
4
5
|
<path d="M 25 25 L 15 25 L 15 75 L 25 75" fill="none" stroke="#141211" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
6
|
<path d="M146.97 74.05Q140.22 74.05 135.87 71.21Q131.52 68.37 130.61 63.34L140.78 61.74Q141.44 64.03 143.01 65.20Q144.58 66.36 147.38 66.36Q149.67 66.36 150.99 65.56Q152.31 64.76 152.31 63.44Q152.31 61.15 148.01 60.30L141.88 59.10Q131.49 57.13 131.49 49Q131.49 43.75 135.68 40.80Q139.87 37.85 146.94 37.85Q153.53 37.85 157.52 40.46Q161.51 43.06 162.42 47.58L152.75 49.12Q151.68 45.38 147.13 45.38Q145.15 45.38 143.78 46.19Q142.42 46.99 142.42 48.34Q142.42 49.40 143.26 50.20Q144.11 51 146.37 51.44L153.09 52.70Q163.42 54.65 163.42 62.18Q163.42 65.79 161.30 68.46Q159.18 71.13 155.48 72.59Q151.77 74.05 146.97 74.05 M178.39 53.36L178.39 73.39L167.43 73.39L167.43 26.61L178.17 26.61L178.17 45.26Q179.58 41.87 182.21 39.86Q184.83 37.85 188.91 37.85Q194.40 37.85 197.73 41.46Q201.06 45.07 201.06 51.04L201.06 73.39L190.10 73.39L190.10 53.17Q190.10 50.22 188.60 48.54Q187.09 46.86 184.39 46.86Q181.72 46.86 180.06 48.57Q178.39 50.28 178.39 53.36 M217.63 73.39L206.67 73.39L206.67 38.29L217.63 38.29L217.63 73.39M212.14 34.18Q209.81 34.18 208.15 32.64Q206.48 31.10 206.48 28.90Q206.48 26.70 208.15 25.17Q209.81 23.63 212.14 23.63Q214.49 23.63 216.16 25.17Q217.82 26.70 217.82 28.90Q217.82 31.10 216.16 32.64Q214.49 34.18 212.14 34.18 M234.23 86.51L223.28 86.51L223.28 38.29L234.11 38.29L234.11 44.32L234.48 44.32Q235.14 42.75 236.40 41.26Q237.66 39.76 239.63 38.81Q241.61 37.85 244.41 37.85Q248.11 37.85 251.30 39.80Q254.48 41.74 256.45 45.73Q258.41 49.72 258.41 55.87Q258.41 61.84 256.51 65.84Q254.61 69.84 251.42 71.87Q248.24 73.89 244.34 73.89Q240.32 73.89 237.92 71.99Q235.52 70.09 234.48 67.71L234.23 67.71L234.23 86.51M240.61 65.35Q243.78 65.35 245.46 62.75Q247.14 60.14 247.14 55.87Q247.14 51.60 245.46 49.01Q243.78 46.42 240.61 46.42Q237.47 46.42 235.72 48.96Q233.98 51.51 233.98 55.87Q233.98 60.17 235.72 62.76Q237.47 65.35 240.61 65.35 M273.63 73.39L262.67 73.39L262.67 38.29L272.75 38.29L273.25 45.26Q274.70 41.30 277.44 39.56Q280.19 37.82 283.36 37.82Q286.69 37.82 288.90 39.73Q291.12 41.65 292.40 45.95Q294.01 41.62 297.13 39.72Q300.25 37.82 303.80 37.82Q308.73 37.82 311.89 40.99Q315.04 44.16 315.04 49.72L315.04 73.39L304.12 73.39L304.12 52.20Q304.12 49.53 302.72 48.15Q301.32 46.77 299.15 46.77Q296.83 46.77 295.48 48.29Q294.13 49.81 294.13 52.32L294.13 73.39L283.61 73.39L283.61 52.04Q283.61 49.62 282.25 48.19Q280.88 46.77 278.72 46.77Q276.49 46.77 275.06 48.27Q273.63 49.78 273.63 52.54 M330.51 74.02Q325.46 74.02 322.21 71.44Q318.96 68.87 318.96 63.66Q318.96 59.76 320.75 57.47Q322.54 55.18 325.51 54.08Q328.47 52.98 332.02 52.67Q336.48 52.29 338.41 51.74Q340.34 51.19 340.34 49.56L340.34 49.43Q340.34 47.61 339.07 46.62Q337.80 45.64 335.57 45.64Q333.28 45.64 331.80 46.61Q330.33 47.58 329.89 49.25L319.96 47.96Q321 43.47 325.03 40.66Q329.07 37.85 335.66 37.85Q340.03 37.85 343.56 39.20Q347.09 40.55 349.18 43.17Q351.27 45.79 351.27 49.56L351.27 73.39L340.97 73.39L340.97 68.46L340.69 68.46Q337.77 74.02 330.51 74.02M333.84 66.77Q336.60 66.77 338.52 65.13Q340.43 63.50 340.43 60.89L340.43 57.54Q339.49 58.04 337.70 58.38Q335.91 58.73 334.38 58.98Q329.32 59.73 329.32 63.16Q329.32 64.91 330.59 65.84Q331.86 66.77 333.84 66.77 M367.87 73.39L356.91 73.39L356.91 38.29L367.87 38.29L367.87 73.39M362.37 34.18Q360.05 34.18 358.39 32.64Q356.72 31.10 356.72 28.90Q356.72 26.70 358.39 25.17Q360.05 23.63 362.37 23.63Q364.73 23.63 366.39 25.17Q368.06 26.70 368.06 28.90Q368.06 31.10 366.39 32.64Q364.73 34.18 362.37 34.18 M373.51 26.61L384.47 26.61L384.47 73.39L373.51 73.39" fill="#141211"/>
|
|
6
|
-
</svg>
|
|
7
|
+
</svg>
|
|
Binary file
|
package/assets/shipmail-mark.png
CHANGED
|
Binary file
|
package/assets/shipmail-mark.svg
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="100" height="100" fill="#fff"/>
|
|
2
3
|
<path d="M 25 25 L 60 50 L 25 75" fill="none" stroke="#141211" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
4
|
<path d="M 55 75 L 85 75" fill="none" stroke="#F26522" stroke-width="12" stroke-linecap="round"/>
|
|
4
5
|
<path d="M 25 25 L 15 25 L 15 75 L 25 75" fill="none" stroke="#141211" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
-
</svg>
|
|
6
|
+
</svg>
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ApiKeyScope } from 'shipmail/api-key-scopes';
|
|
2
2
|
|
|
3
3
|
declare const MCP_CAPABILITY_VERSION = "1.0.0";
|
|
4
|
-
declare const MCP_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions", "partner_admin"];
|
|
4
|
+
declare const MCP_PERMISSION_GROUP_NAMES: readonly ["account_status", "automations", "mail_read", "drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions", "partner_admin"];
|
|
5
5
|
type McpPermissionGroupName = (typeof MCP_PERMISSION_GROUP_NAMES)[number];
|
|
6
|
-
declare const MCP_MEMBER_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "mailbox_rules", "send_mail", "calendar_read", "calendar_write"];
|
|
6
|
+
declare const MCP_MEMBER_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "mail_organize", "mailbox_rules", "send_mail", "calendar_read", "calendar_write", "automations"];
|
|
7
7
|
type McpRole = "owner" | "member";
|
|
8
8
|
type McpCapabilityEffect = "read" | "local_write" | "external_write" | "destructive";
|
|
9
9
|
type McpRecipientControl = "none" | "server_derived" | "caller_supplied";
|
|
@@ -19,9 +19,15 @@ type McpPermissionGroup = {
|
|
|
19
19
|
declare const MCP_PERMISSION_GROUPS: readonly [{
|
|
20
20
|
readonly name: "account_status";
|
|
21
21
|
readonly label: "Account status";
|
|
22
|
-
readonly description: "Check whether the
|
|
22
|
+
readonly description: "Check whether the Shipmail API is available.";
|
|
23
23
|
readonly scopes: readonly [];
|
|
24
24
|
readonly persistent: false;
|
|
25
|
+
}, {
|
|
26
|
+
readonly name: "automations";
|
|
27
|
+
readonly label: "Automations";
|
|
28
|
+
readonly description: "Read and manage persistent assistant automations.";
|
|
29
|
+
readonly scopes: readonly ["automations:read", "automations:write"];
|
|
30
|
+
readonly persistent: true;
|
|
25
31
|
}, {
|
|
26
32
|
readonly name: "mail_read";
|
|
27
33
|
readonly label: "Read mail";
|
|
@@ -31,7 +37,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
|
|
|
31
37
|
}, {
|
|
32
38
|
readonly name: "drafts";
|
|
33
39
|
readonly label: "Create drafts";
|
|
34
|
-
readonly description: "Create reply drafts whose recipients are derived by
|
|
40
|
+
readonly description: "Create reply drafts whose recipients are derived by Shipmail.";
|
|
35
41
|
readonly scopes: readonly ["drafts:write"];
|
|
36
42
|
readonly persistent: false;
|
|
37
43
|
}, {
|
|
@@ -131,7 +137,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
|
|
|
131
137
|
readonly scopes: readonly ["partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
|
|
132
138
|
readonly persistent: true;
|
|
133
139
|
}];
|
|
134
|
-
declare const CAPABILITY_ROWS: readonly [readonly ["shipmail_status", "getStatus", "public"], readonly ["shipmail_create_domain", "createDomain", "domains:write"], readonly ["shipmail_list_domains", "listDomains", "domains:read"], readonly ["shipmail_get_domain", "getDomain", "domains:read"], readonly ["shipmail_get_domain_dns_records", "getDomainDnsRecords", "domains:read"], readonly ["shipmail_update_domain", "updateDomain", "domains:write"], readonly ["shipmail_delete_domain", "deleteDomain", "domains:write"], readonly ["shipmail_verify_domain", "verifyDomain", "domains:write"], readonly ["shipmail_search_domains", "searchDomains", "domains:read"], readonly ["shipmail_create_mailbox", "createMailbox", "mailboxes:write"], readonly ["shipmail_list_mailboxes", "listMailboxes", "mailboxes:read"], readonly ["shipmail_get_mailbox", "getMailbox", "mailboxes:read"], readonly ["shipmail_list_mailbox_app_passwords", "listMailboxAppPasswords", "mailbox_credentials:read"], readonly ["shipmail_create_mailbox_app_password", "createMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_revoke_mailbox_app_password", "revokeMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_suspend_mailbox", "suspendMailbox", "mailboxes:write"], readonly ["shipmail_resume_mailbox", "resumeMailbox", "mailboxes:write"], readonly ["shipmail_create_mailbox_export", "createMailboxExport", "mailboxes:export"], readonly ["shipmail_get_mailbox_export", "getMailboxExport", "mailboxes:export"], readonly ["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"], readonly ["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"], readonly ["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"], readonly ["shipmail_get_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_set_mailbox_rules", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_create_mailbox_folder", "createMailboxFolder", "mailboxes:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "mailboxes:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "mailboxes:write"], readonly ["shipmail_list_mailbox_identities", "listMailboxIdentities", "mailboxes:read"], readonly ["shipmail_list_mailbox_inbox_messages", "listMailboxInboxMessages", "messages:read"], readonly ["shipmail_get_mailbox_inbox_message", "getMailboxInboxMessage", "messages:read"], readonly ["shipmail_list_mailbox_inbox_threads", "listMailboxInboxThreads", "messages:read"], readonly ["shipmail_get_mailbox_inbox_thread", "getMailboxInboxThread", "messages:read"], readonly ["shipmail_update_inbox_thread_reply_state", "updateMailboxInboxThreadReplyState", "messages:write"], readonly ["shipmail_create_inbox_reply_draft", "createMailboxInboxReplyDraft", "drafts:write"], readonly ["shipmail_send_inbox_reply_draft", "sendMailboxInboxReplyDraft", "messages:send"], readonly ["shipmail_reply_to_inbox_message", "replyToMailboxInboxMessage", "messages:send"], readonly ["shipmail_reply_to_inbox_thread", "replyToMailboxInboxThread", "messages:send"], readonly ["shipmail_update_inbox_message", "updateMailboxInboxMessage", "messages:write"], readonly ["shipmail_move_inbox_message", "moveMailboxInboxMessage", "messages:write"], readonly ["shipmail_delete_inbox_message", "deleteMailboxInboxMessage", "messages:write"], readonly ["shipmail_list_mailbox_forwarding", "listMailboxForwarding", "mailbox_forwarding:read"], readonly ["shipmail_create_mailbox_forwarding", "createMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_delete_mailbox_forwarding", "deleteMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_reset_mailbox_password", "resetMailboxPassword", "mailboxes:write"], readonly ["shipmail_set_auto_reply", "updateAutoReply", "mailboxes:write"], readonly ["shipmail_set_spam_filter", "updateSpamFilter", "mailboxes:write"], readonly ["shipmail_create_mailbox_import", "createMailboxImport", "mailboxes:write"], readonly ["shipmail_list_mailbox_imports", "listMailboxImports", "mailboxes:read"], readonly ["shipmail_get_mailbox_import", "getMailboxImport", "mailboxes:read"], readonly ["shipmail_cancel_mailbox_import", "cancelMailboxImport", "mailboxes:write"], readonly ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"], readonly ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"], readonly ["shipmail_list_messages", "listMessages", "messages:read"], readonly ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"], readonly ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_send_message", "sendMessage", "messages:send"], readonly ["shipmail_list_scheduled_messages", "listScheduledMessages", "messages:read"], readonly ["shipmail_get_scheduled_message", "getScheduledMessage", "messages:read"], readonly ["shipmail_update_scheduled_message", "updateScheduledMessage", "messages:send"], readonly ["shipmail_cancel_scheduled_message", "cancelScheduledMessage", "messages:send"], readonly ["shipmail_get_message", "getMessage", "messages:read"], readonly ["shipmail_reply_to_message", "replyToMessage", "messages:send"], readonly ["shipmail_list_threads", "listThreads", "threads:read"], readonly ["shipmail_get_thread", "getThread", "threads:read"], readonly ["shipmail_reply_to_thread", "replyToThread", "messages:send"], readonly ["shipmail_create_reply_scan", "createReplyScan", "messages:write"], readonly ["shipmail_get_reply_scan", "getReplyScan", "messages:read"], readonly ["shipmail_list_reply_scan_results", "listReplyScanResults", "messages:read"], readonly ["shipmail_create_webhook", "createWebhook", "webhooks:write"], readonly ["shipmail_list_webhooks", "listWebhooks", "webhooks:read"], readonly ["shipmail_get_webhook", "getWebhook", "webhooks:read"], readonly ["shipmail_update_webhook", "updateWebhook", "webhooks:write"], readonly ["shipmail_delete_webhook", "deleteWebhook", "webhooks:write"], readonly ["shipmail_rotate_webhook_secret", "rotateWebhookSecret", "webhooks:write"], readonly ["shipmail_test_webhook", "testWebhook", "webhooks:write"], readonly ["shipmail_list_webhook_deliveries", "listWebhookDeliveries", "webhooks:read"], readonly ["shipmail_get_webhook_delivery", "getWebhookDelivery", "webhooks:read"], readonly ["shipmail_replay_webhook_delivery", "replayWebhookDelivery", "webhooks:write"], readonly ["shipmail_list_suppressions", "listSuppressions", "suppressions:read"], readonly ["shipmail_remove_suppression", "removeSuppression", "suppressions:write"], readonly ["shipmail_create_audience", "createAudience", "audiences:write"], readonly ["shipmail_list_audiences", "listAudiences", "audiences:read"], readonly ["shipmail_get_audience", "getAudience", "audiences:read"], readonly ["shipmail_update_audience", "updateAudience", "audiences:write"], readonly ["shipmail_delete_audience", "deleteAudience", "audiences:write"], readonly ["shipmail_get_audience_feed", "getAudienceFeed", "audiences:read"], readonly ["shipmail_update_audience_feed", "updateAudienceFeed", "audiences:write"], readonly ["shipmail_rotate_audience_feed", "rotateAudienceFeedToken", "audiences:write"], readonly ["shipmail_revoke_audience_feed", "revokeAudienceFeedToken", "audiences:write"], readonly ["shipmail_add_subscriber", "addSubscriber", "audiences:write"], readonly ["shipmail_add_subscribers_batch", "addSubscribersBatch", "audiences:write"], readonly ["shipmail_list_subscribers", "listSubscribers", "audiences:read"], readonly ["shipmail_get_subscriber", "getSubscriber", "audiences:read"], readonly ["shipmail_get_subscriber_by_email", "getSubscriberByEmail", "audiences:read"], readonly ["shipmail_update_subscriber", "updateSubscriber", "audiences:write"], readonly ["shipmail_unsubscribe_subscriber", "unsubscribeSubscriber", "audiences:write"], readonly ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"], readonly ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"], readonly ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"], readonly ["shipmail_list_newsletter_sender_identities", "listNewsletterSenderIdentities", "newsletters:read"], readonly ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"], readonly ["shipmail_create_newsletter_from_changelog", "createNewsletterFromChangelog", "newsletters:write"], readonly ["shipmail_list_newsletters", "listNewsletters", "newsletters:read"], readonly ["shipmail_get_newsletter", "getNewsletter", "newsletters:read"], readonly ["shipmail_update_newsletter", "updateNewsletter", "newsletters:write"], readonly ["shipmail_list_newsletter_assets", "listNewsletterAssets", "newsletters:read"], readonly ["shipmail_register_newsletter_asset", "uploadNewsletterAsset", "newsletters:write"], readonly ["shipmail_preview_newsletter", "previewNewsletter", "newsletters:read"], readonly ["shipmail_run_newsletter_preflight", "runNewsletterPreflight", "newsletters:write"], readonly ["shipmail_send_newsletter_test", "sendNewsletterTest", "newsletters:write"], readonly ["shipmail_schedule_newsletter", "scheduleNewsletter", "newsletters:write"], readonly ["shipmail_cancel_newsletter", "cancelNewsletter", "newsletters:write"], readonly ["shipmail_resume_newsletter", "resumeNewsletter", "newsletters:write"], readonly ["shipmail_list_calendar_events", "listCalendarEvents", "calendar:read"], readonly ["shipmail_create_calendar_event", "createCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_event", "getCalendarEvent", "calendar:read"], readonly ["shipmail_update_calendar_event", "updateCalendarEvent", "calendar:write"], readonly ["shipmail_delete_calendar_event", "deleteCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_availability", "getCalendarAvailability", "calendar:read"], readonly ["shipmail_list_booking_pages", "listBookingPages", "booking_pages:read"], readonly ["shipmail_create_booking_page", "createBookingPage", "booking_pages:write"], readonly ["shipmail_get_booking_page", "getBookingPage", "booking_pages:read"], readonly ["shipmail_update_booking_page", "updateBookingPage", "booking_pages:write"], readonly ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"], readonly ["shipmail_list_partner_organizations", "listPartnerOrganizations", "partner:organizations:read"], readonly ["shipmail_create_partner_organization", "createPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_get_partner_organization", "getPartnerOrganization", "partner:organizations:read"], readonly ["shipmail_update_partner_organization", "updatePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resend_partner_ownership_invitation", "resendPartnerOwnershipInvitation", "partner:organizations:write"], readonly ["shipmail_suspend_partner_organization", "suspendPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resume_partner_organization", "resumePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_offboard_partner_organization", "offboardPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_list_partner_mailbox_credential_grants", "listPartnerMailboxCredentialGrants", "partner:mailbox_credentials:issue"], readonly ["shipmail_consume_partner_mailbox_credential_grant", "consumePartnerMailboxCredentialGrant", "partner:mailbox_credentials:issue"], readonly ["shipmail_get_partner_usage", "getPartnerUsage", "partner:usage:read"]];
|
|
140
|
+
declare const CAPABILITY_ROWS: readonly [readonly ["shipmail_status", "getStatus", "public"], readonly ["shipmail_list_automations", "listAutomations", "automations:read"], readonly ["shipmail_create_automation", "createAutomation", "automations:write"], readonly ["shipmail_get_automation", "getAutomation", "automations:read"], readonly ["shipmail_update_automation", "updateAutomation", "automations:write"], readonly ["shipmail_run_automation", "runAutomation", "automations:write"], readonly ["shipmail_create_domain", "createDomain", "domains:write"], readonly ["shipmail_list_domains", "listDomains", "domains:read"], readonly ["shipmail_get_domain", "getDomain", "domains:read"], readonly ["shipmail_get_domain_dns_records", "getDomainDnsRecords", "domains:read"], readonly ["shipmail_update_domain", "updateDomain", "domains:write"], readonly ["shipmail_delete_domain", "deleteDomain", "domains:write"], readonly ["shipmail_verify_domain", "verifyDomain", "domains:write"], readonly ["shipmail_search_domains", "searchDomains", "domains:read"], readonly ["shipmail_create_mailbox", "createMailbox", "mailboxes:write"], readonly ["shipmail_list_mailboxes", "listMailboxes", "mailboxes:read"], readonly ["shipmail_get_mailbox", "getMailbox", "mailboxes:read"], readonly ["shipmail_list_mailbox_app_passwords", "listMailboxAppPasswords", "mailbox_credentials:read"], readonly ["shipmail_create_mailbox_app_password", "createMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_revoke_mailbox_app_password", "revokeMailboxAppPassword", "mailbox_credentials:write"], readonly ["shipmail_suspend_mailbox", "suspendMailbox", "mailboxes:write"], readonly ["shipmail_resume_mailbox", "resumeMailbox", "mailboxes:write"], readonly ["shipmail_create_mailbox_export", "createMailboxExport", "mailboxes:export"], readonly ["shipmail_get_mailbox_export", "getMailboxExport", "mailboxes:export"], readonly ["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"], readonly ["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"], readonly ["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"], readonly ["shipmail_get_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_set_mailbox_rules", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_create_mailbox_folder", "createMailboxFolder", "mailboxes:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "mailboxes:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "mailboxes:write"], readonly ["shipmail_list_mailbox_identities", "listMailboxIdentities", "mailboxes:read"], readonly ["shipmail_list_mailbox_inbox_messages", "listMailboxInboxMessages", "messages:read"], readonly ["shipmail_get_mailbox_inbox_message", "getMailboxInboxMessage", "messages:read"], readonly ["shipmail_list_mailbox_inbox_threads", "listMailboxInboxThreads", "messages:read"], readonly ["shipmail_get_mailbox_inbox_thread", "getMailboxInboxThread", "messages:read"], readonly ["shipmail_update_inbox_thread_reply_state", "updateMailboxInboxThreadReplyState", "messages:write"], readonly ["shipmail_create_inbox_reply_draft", "createMailboxInboxReplyDraft", "drafts:write"], readonly ["shipmail_send_inbox_reply_draft", "sendMailboxInboxReplyDraft", "messages:send"], readonly ["shipmail_reply_to_inbox_message", "replyToMailboxInboxMessage", "messages:send"], readonly ["shipmail_reply_to_inbox_thread", "replyToMailboxInboxThread", "messages:send"], readonly ["shipmail_update_inbox_message", "updateMailboxInboxMessage", "messages:write"], readonly ["shipmail_move_inbox_message", "moveMailboxInboxMessage", "messages:write"], readonly ["shipmail_delete_inbox_message", "deleteMailboxInboxMessage", "messages:write"], readonly ["shipmail_list_mailbox_forwarding", "listMailboxForwarding", "mailbox_forwarding:read"], readonly ["shipmail_create_mailbox_forwarding", "createMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_delete_mailbox_forwarding", "deleteMailboxForwarding", "mailbox_forwarding:write"], readonly ["shipmail_reset_mailbox_password", "resetMailboxPassword", "mailboxes:write"], readonly ["shipmail_set_auto_reply", "updateAutoReply", "mailboxes:write"], readonly ["shipmail_set_spam_filter", "updateSpamFilter", "mailboxes:write"], readonly ["shipmail_create_mailbox_import", "createMailboxImport", "mailboxes:write"], readonly ["shipmail_list_mailbox_imports", "listMailboxImports", "mailboxes:read"], readonly ["shipmail_get_mailbox_import", "getMailboxImport", "mailboxes:read"], readonly ["shipmail_cancel_mailbox_import", "cancelMailboxImport", "mailboxes:write"], readonly ["shipmail_undo_mailbox_import", "undoMailboxImport", "mailboxes:write"], readonly ["shipmail_inject_sandbox_inbound", "injectSandboxInbound", "messages:write"], readonly ["shipmail_list_messages", "listMessages", "messages:read"], readonly ["shipmail_list_message_analytics", "listMessageAnalytics", "messages:read"], readonly ["shipmail_compose_message_with_file", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_prepare_staged_attachment_upload", "prepareStagedAttachmentUpload", "messages:send"], readonly ["shipmail_send_message", "sendMessage", "messages:send"], readonly ["shipmail_list_scheduled_messages", "listScheduledMessages", "messages:read"], readonly ["shipmail_get_scheduled_message", "getScheduledMessage", "messages:read"], readonly ["shipmail_update_scheduled_message", "updateScheduledMessage", "messages:send"], readonly ["shipmail_cancel_scheduled_message", "cancelScheduledMessage", "messages:send"], readonly ["shipmail_get_message", "getMessage", "messages:read"], readonly ["shipmail_reply_to_message", "replyToMessage", "messages:send"], readonly ["shipmail_list_threads", "listThreads", "threads:read"], readonly ["shipmail_get_thread", "getThread", "threads:read"], readonly ["shipmail_reply_to_thread", "replyToThread", "messages:send"], readonly ["shipmail_create_reply_scan", "createReplyScan", "messages:write"], readonly ["shipmail_get_reply_scan", "getReplyScan", "messages:read"], readonly ["shipmail_list_reply_scan_results", "listReplyScanResults", "messages:read"], readonly ["shipmail_create_webhook", "createWebhook", "webhooks:write"], readonly ["shipmail_list_webhooks", "listWebhooks", "webhooks:read"], readonly ["shipmail_get_webhook", "getWebhook", "webhooks:read"], readonly ["shipmail_update_webhook", "updateWebhook", "webhooks:write"], readonly ["shipmail_delete_webhook", "deleteWebhook", "webhooks:write"], readonly ["shipmail_rotate_webhook_secret", "rotateWebhookSecret", "webhooks:write"], readonly ["shipmail_test_webhook", "testWebhook", "webhooks:write"], readonly ["shipmail_list_webhook_deliveries", "listWebhookDeliveries", "webhooks:read"], readonly ["shipmail_get_webhook_delivery", "getWebhookDelivery", "webhooks:read"], readonly ["shipmail_replay_webhook_delivery", "replayWebhookDelivery", "webhooks:write"], readonly ["shipmail_list_suppressions", "listSuppressions", "suppressions:read"], readonly ["shipmail_remove_suppression", "removeSuppression", "suppressions:write"], readonly ["shipmail_create_audience", "createAudience", "audiences:write"], readonly ["shipmail_list_audiences", "listAudiences", "audiences:read"], readonly ["shipmail_get_audience", "getAudience", "audiences:read"], readonly ["shipmail_update_audience", "updateAudience", "audiences:write"], readonly ["shipmail_delete_audience", "deleteAudience", "audiences:write"], readonly ["shipmail_get_audience_feed", "getAudienceFeed", "audiences:read"], readonly ["shipmail_update_audience_feed", "updateAudienceFeed", "audiences:write"], readonly ["shipmail_rotate_audience_feed", "rotateAudienceFeedToken", "audiences:write"], readonly ["shipmail_revoke_audience_feed", "revokeAudienceFeedToken", "audiences:write"], readonly ["shipmail_add_subscriber", "addSubscriber", "audiences:write"], readonly ["shipmail_add_subscribers_batch", "addSubscribersBatch", "audiences:write"], readonly ["shipmail_list_subscribers", "listSubscribers", "audiences:read"], readonly ["shipmail_get_subscriber", "getSubscriber", "audiences:read"], readonly ["shipmail_get_subscriber_by_email", "getSubscriberByEmail", "audiences:read"], readonly ["shipmail_update_subscriber", "updateSubscriber", "audiences:write"], readonly ["shipmail_unsubscribe_subscriber", "unsubscribeSubscriber", "audiences:write"], readonly ["shipmail_resubscribe_subscriber", "resubscribeSubscriber", "audiences:write"], readonly ["shipmail_remove_subscriber", "removeSubscriber", "audiences:write"], readonly ["shipmail_list_newsletter_domains", "listNewsletterDomains", "newsletters:read"], readonly ["shipmail_list_newsletter_sender_identities", "listNewsletterSenderIdentities", "newsletters:read"], readonly ["shipmail_create_newsletter", "createNewsletter", "newsletters:write"], readonly ["shipmail_create_newsletter_from_changelog", "createNewsletterFromChangelog", "newsletters:write"], readonly ["shipmail_list_newsletters", "listNewsletters", "newsletters:read"], readonly ["shipmail_get_newsletter", "getNewsletter", "newsletters:read"], readonly ["shipmail_update_newsletter", "updateNewsletter", "newsletters:write"], readonly ["shipmail_list_newsletter_assets", "listNewsletterAssets", "newsletters:read"], readonly ["shipmail_register_newsletter_asset", "uploadNewsletterAsset", "newsletters:write"], readonly ["shipmail_preview_newsletter", "previewNewsletter", "newsletters:read"], readonly ["shipmail_run_newsletter_preflight", "runNewsletterPreflight", "newsletters:write"], readonly ["shipmail_send_newsletter_test", "sendNewsletterTest", "newsletters:write"], readonly ["shipmail_schedule_newsletter", "scheduleNewsletter", "newsletters:write"], readonly ["shipmail_cancel_newsletter", "cancelNewsletter", "newsletters:write"], readonly ["shipmail_resume_newsletter", "resumeNewsletter", "newsletters:write"], readonly ["shipmail_list_calendar_events", "listCalendarEvents", "calendar:read"], readonly ["shipmail_create_calendar_event", "createCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_event", "getCalendarEvent", "calendar:read"], readonly ["shipmail_update_calendar_event", "updateCalendarEvent", "calendar:write"], readonly ["shipmail_delete_calendar_event", "deleteCalendarEvent", "calendar:write"], readonly ["shipmail_get_calendar_availability", "getCalendarAvailability", "calendar:read"], readonly ["shipmail_list_booking_pages", "listBookingPages", "booking_pages:read"], readonly ["shipmail_create_booking_page", "createBookingPage", "booking_pages:write"], readonly ["shipmail_get_booking_page", "getBookingPage", "booking_pages:read"], readonly ["shipmail_update_booking_page", "updateBookingPage", "booking_pages:write"], readonly ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"], readonly ["shipmail_list_partner_organizations", "listPartnerOrganizations", "partner:organizations:read"], readonly ["shipmail_create_partner_organization", "createPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_get_partner_organization", "getPartnerOrganization", "partner:organizations:read"], readonly ["shipmail_update_partner_organization", "updatePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resend_partner_ownership_invitation", "resendPartnerOwnershipInvitation", "partner:organizations:write"], readonly ["shipmail_suspend_partner_organization", "suspendPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_resume_partner_organization", "resumePartnerOrganization", "partner:organizations:write"], readonly ["shipmail_offboard_partner_organization", "offboardPartnerOrganization", "partner:organizations:write"], readonly ["shipmail_list_partner_mailbox_credential_grants", "listPartnerMailboxCredentialGrants", "partner:mailbox_credentials:issue"], readonly ["shipmail_consume_partner_mailbox_credential_grant", "consumePartnerMailboxCredentialGrant", "partner:mailbox_credentials:issue"], readonly ["shipmail_get_partner_usage", "getPartnerUsage", "partner:usage:read"]];
|
|
135
141
|
type McpToolName = (typeof CAPABILITY_ROWS)[number][0];
|
|
136
142
|
type McpCapability = {
|
|
137
143
|
readonly toolName: McpToolName;
|
package/dist/capabilities.js
CHANGED
|
@@ -3,6 +3,7 @@ import { API_KEY_SCOPES, apiKeyScopesGrant } from "shipmail/api-key-scopes";
|
|
|
3
3
|
var MCP_CAPABILITY_VERSION = "1.0.0";
|
|
4
4
|
var MCP_PERMISSION_GROUP_NAMES = [
|
|
5
5
|
"account_status",
|
|
6
|
+
"automations",
|
|
6
7
|
"mail_read",
|
|
7
8
|
"drafts",
|
|
8
9
|
"mail_organize",
|
|
@@ -30,16 +31,24 @@ var MCP_MEMBER_PERMISSION_GROUP_NAMES = [
|
|
|
30
31
|
"mailbox_rules",
|
|
31
32
|
"send_mail",
|
|
32
33
|
"calendar_read",
|
|
33
|
-
"calendar_write"
|
|
34
|
+
"calendar_write",
|
|
35
|
+
"automations"
|
|
34
36
|
];
|
|
35
37
|
var MCP_PERMISSION_GROUPS = [
|
|
36
38
|
{
|
|
37
39
|
name: "account_status",
|
|
38
40
|
label: "Account status",
|
|
39
|
-
description: "Check whether the
|
|
41
|
+
description: "Check whether the Shipmail API is available.",
|
|
40
42
|
scopes: [],
|
|
41
43
|
persistent: false
|
|
42
44
|
},
|
|
45
|
+
{
|
|
46
|
+
name: "automations",
|
|
47
|
+
label: "Automations",
|
|
48
|
+
description: "Read and manage persistent assistant automations.",
|
|
49
|
+
scopes: ["automations:read", "automations:write"],
|
|
50
|
+
persistent: true
|
|
51
|
+
},
|
|
43
52
|
{
|
|
44
53
|
name: "mail_read",
|
|
45
54
|
label: "Read mail",
|
|
@@ -50,7 +59,7 @@ var MCP_PERMISSION_GROUPS = [
|
|
|
50
59
|
{
|
|
51
60
|
name: "drafts",
|
|
52
61
|
label: "Create drafts",
|
|
53
|
-
description: "Create reply drafts whose recipients are derived by
|
|
62
|
+
description: "Create reply drafts whose recipients are derived by Shipmail.",
|
|
54
63
|
scopes: ["drafts:write"],
|
|
55
64
|
persistent: false
|
|
56
65
|
},
|
|
@@ -175,6 +184,11 @@ var MCP_PERMISSION_GROUPS = [
|
|
|
175
184
|
];
|
|
176
185
|
var CAPABILITY_ROWS = [
|
|
177
186
|
["shipmail_status", "getStatus", "public"],
|
|
187
|
+
["shipmail_list_automations", "listAutomations", "automations:read"],
|
|
188
|
+
["shipmail_create_automation", "createAutomation", "automations:write"],
|
|
189
|
+
["shipmail_get_automation", "getAutomation", "automations:read"],
|
|
190
|
+
["shipmail_update_automation", "updateAutomation", "automations:write"],
|
|
191
|
+
["shipmail_run_automation", "runAutomation", "automations:write"],
|
|
178
192
|
["shipmail_create_domain", "createDomain", "domains:write"],
|
|
179
193
|
["shipmail_list_domains", "listDomains", "domains:read"],
|
|
180
194
|
["shipmail_get_domain", "getDomain", "domains:read"],
|
|
@@ -429,6 +443,7 @@ function permissionGroupFor(toolName, requiredScope) {
|
|
|
429
443
|
if (requiredScope === "calendar:read") return "calendar_read";
|
|
430
444
|
if (requiredScope === "calendar:write") return "calendar_write";
|
|
431
445
|
if (requiredScope.startsWith("booking_pages:")) return "booking_pages";
|
|
446
|
+
if (requiredScope.startsWith("automations:")) return "automations";
|
|
432
447
|
if (requiredScope.startsWith("webhooks:")) return "webhooks";
|
|
433
448
|
if (requiredScope.startsWith("newsletters:")) return "newsletters";
|
|
434
449
|
if (requiredScope.startsWith("audiences:")) return "audiences";
|
|
@@ -453,10 +468,11 @@ function recipientControlFor(toolName) {
|
|
|
453
468
|
return "none";
|
|
454
469
|
}
|
|
455
470
|
function durationFor(toolName) {
|
|
471
|
+
if (toolName === "shipmail_run_automation") return "one_shot";
|
|
456
472
|
if (toolName.includes("app_password") || toolName.includes("credential_grant") || toolName === "shipmail_rotate_webhook_secret") {
|
|
457
473
|
return "credential";
|
|
458
474
|
}
|
|
459
|
-
if (toolName.includes("forwarding") || toolName.includes("mailbox_rules") || toolName.includes("webhook") || toolName.includes("booking_page")) {
|
|
475
|
+
if (toolName.includes("forwarding") || toolName.includes("mailbox_rules") || toolName.includes("webhook") || toolName.includes("booking_page") || toolName.includes("automation")) {
|
|
460
476
|
return "persistent";
|
|
461
477
|
}
|
|
462
478
|
if (toolName === "shipmail_send_message" || toolName.includes("schedule_") || toolName.includes("scheduled_message")) {
|