shipmail-mcp 0.5.3 → 0.5.7
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 +37 -21
- package/dist/capabilities.d.ts +11 -4
- package/dist/capabilities.js +22 -3
- package/dist/index.js +813 -181
- package/dist/server.d.ts +10 -2
- package/dist/server.js +3877 -3246
- package/package.json +2 -2
- package/server.json +2 -2
- package/smithery.yaml +1 -1
package/README.md
CHANGED
|
@@ -215,6 +215,7 @@ Once connected, ask your agent:
|
|
|
215
215
|
- "Send the selected PDF to Christelle tomorrow at 08:00, then show me the scheduled message."
|
|
216
216
|
- "List my scheduled messages and move the invoice email to Friday."
|
|
217
217
|
- "Create a webhook that posts new email events to `https://example.com/hooks/shipmail`, then send a test event."
|
|
218
|
+
- "Read the existing rules for `billing@acme.com`, then add a rule that moves invoice messages to Billing and stars them."
|
|
218
219
|
- "Show recent deliveries for webhook `whk_xyz`, then replay failed delivery `dlv_xyz`."
|
|
219
220
|
- "List my newsletter sending domains and recent newsletter assets, draft a newsletter for audience `aud_abc123`, preview it, then send a test."
|
|
220
221
|
|
|
@@ -222,35 +223,44 @@ Once connected, ask your agent:
|
|
|
222
223
|
|
|
223
224
|
All tools are namespaced with `shipmail_` to avoid collisions with peer MCP servers.
|
|
224
225
|
|
|
225
|
-
| Group
|
|
226
|
-
|
|
|
227
|
-
| Status
|
|
228
|
-
| Domains
|
|
229
|
-
| Mailboxes
|
|
230
|
-
| Mailbox inbox
|
|
231
|
-
| Reply scans
|
|
232
|
-
| Messages and threads
|
|
233
|
-
| Webhooks
|
|
234
|
-
| Suppressions
|
|
235
|
-
| Audiences
|
|
236
|
-
| Newsletters
|
|
237
|
-
|
|
|
226
|
+
| Group | Tools |
|
|
227
|
+
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
228
|
+
| Status | `shipmail_status` |
|
|
229
|
+
| Domains | `shipmail_list_domains`, `shipmail_get_domain`, `shipmail_get_domain_dns_records`, `shipmail_create_domain`, `shipmail_update_domain`, `shipmail_delete_domain`, `shipmail_verify_domain`, `shipmail_search_domains` |
|
|
230
|
+
| Mailboxes | `shipmail_list_mailboxes`, `shipmail_get_mailbox`, `shipmail_create_mailbox`, `shipmail_update_mailbox`, `shipmail_delete_mailbox`, `shipmail_suspend_mailbox`, `shipmail_resume_mailbox`, `shipmail_list_mailbox_app_passwords`, `shipmail_create_mailbox_app_password`, `shipmail_revoke_mailbox_app_password`, `shipmail_list_mailbox_forwarding`, `shipmail_create_mailbox_forwarding`, `shipmail_delete_mailbox_forwarding`, `shipmail_list_mailbox_folders`, `shipmail_get_mailbox_rules`, `shipmail_set_mailbox_rules`, `shipmail_create_mailbox_folder`, `shipmail_update_mailbox_folder`, `shipmail_delete_mailbox_folder`, `shipmail_list_mailbox_identities`, `shipmail_reset_mailbox_password`, `shipmail_set_auto_reply`, `shipmail_set_spam_filter`, `shipmail_inject_sandbox_inbound` |
|
|
231
|
+
| Mailbox inbox | `shipmail_list_mailbox_inbox_messages`, `shipmail_get_mailbox_inbox_message`, `shipmail_get_mailbox_inbox_thread`, `shipmail_list_mailbox_inbox_threads`, `shipmail_update_inbox_thread_reply_state`, `shipmail_create_inbox_reply_draft`, `shipmail_send_inbox_reply_draft`, `shipmail_update_inbox_message`, `shipmail_move_inbox_message`, `shipmail_delete_inbox_message` |
|
|
232
|
+
| Reply scans | `shipmail_create_reply_scan`, `shipmail_get_reply_scan`, `shipmail_list_reply_scan_results` |
|
|
233
|
+
| Messages and threads | `shipmail_list_messages`, `shipmail_get_message`, `shipmail_compose_message_with_file` (hosted MCP Apps), `shipmail_prepare_staged_attachment_upload`, `shipmail_send_message`, `shipmail_list_scheduled_messages`, `shipmail_get_scheduled_message`, `shipmail_update_scheduled_message`, `shipmail_cancel_scheduled_message`, `shipmail_reply_to_message`, `shipmail_list_threads`, `shipmail_get_thread`, `shipmail_reply_to_thread`, `shipmail_reply_to_inbox_message`, `shipmail_reply_to_inbox_thread` |
|
|
234
|
+
| 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` |
|
|
235
|
+
| Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
|
|
236
|
+
| Audiences | `shipmail_list_audiences`, `shipmail_get_audience`, `shipmail_create_audience`, `shipmail_update_audience`, `shipmail_delete_audience`, `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` |
|
|
237
|
+
| 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` |
|
|
238
|
+
| 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` |
|
|
239
|
+
| 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` |
|
|
240
|
+
|
|
241
|
+
Cross-organization list tools appear only on hosted OAuth connections with at least two
|
|
242
|
+
organization grants. They return a success or failure section for every organization and paginate
|
|
243
|
+
each section independently through `cursor_by_organization`. Lists that require a parent resource,
|
|
244
|
+
such as one mailbox's inbox messages or one audience's subscribers, remain organization-targeted.
|
|
238
245
|
|
|
239
246
|
Message send and reply tools accept optional `client_reference`, scalar `metadata`,
|
|
240
247
|
`source_rfc_message_id`, and validated safe `headers`. `shipmail_list_messages` accepts either a
|
|
241
248
|
`mailbox_id` or an exact organization-scoped `client_reference`.
|
|
242
249
|
|
|
243
250
|
MCP send and scheduled-update tools accept short-lived staged attachment IDs, not base64 bytes.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
251
|
+
For a local file, calculate its exact byte size and SHA-256 digest, call
|
|
252
|
+
`shipmail_prepare_staged_attachment_upload`, then `POST` the unmodified bytes to the returned
|
|
253
|
+
five-minute, one-time `upload_url` using the declared content type. The upload response contains
|
|
254
|
+
the `sat_...` ID to pass to `shipmail_send_message`. The URL accepts only the declared bytes and
|
|
255
|
+
does not expose the MCP bearer credential. Scheduled messages can be listed, inspected, replaced,
|
|
256
|
+
and cancelled before dispatch begins.
|
|
247
257
|
|
|
248
258
|
In ChatGPT, `shipmail_compose_message_with_file` renders an MCP Apps review card for a
|
|
249
259
|
conversation or library file. The card obtains a fresh ChatGPT download URL, hashes the exact
|
|
250
|
-
bytes, creates a five-minute one-time ShipMail upload URL
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
260
|
+
bytes, creates a five-minute one-time ShipMail upload URL, uploads without exposing the connection
|
|
261
|
+
credential, and calls `shipmail_send_message` only after the user presses **Upload and send** or
|
|
262
|
+
**Upload and schedule**. The upload endpoint follows no source URL, rejects redirects and metadata
|
|
263
|
+
mismatches, and consumes the signed token once.
|
|
254
264
|
|
|
255
265
|
For mailbox agents, prefer the reply queue or a reply scan followed by
|
|
256
266
|
`shipmail_create_inbox_reply_draft`. The server derives recipients from the thread and records the
|
|
@@ -266,6 +276,11 @@ immediately. Partner grant consumption requires the exact `partner:mailbox_crede
|
|
|
266
276
|
scope and an operator-approved one-time grant. App-password creation and grant consumption do not
|
|
267
277
|
accept idempotency keys.
|
|
268
278
|
|
|
279
|
+
`shipmail_set_mailbox_rules` replaces the complete rule list. Call
|
|
280
|
+
`shipmail_get_mailbox_rules` first and preserve every rule that should remain. Inbox rules are
|
|
281
|
+
deterministic filters for moving, marking as read, starring, or emitting a
|
|
282
|
+
`mailbox.rule_matched` event to subscribed webhook endpoints.
|
|
283
|
+
|
|
269
284
|
The server discovers the effective tool catalog from Shipmail before startup. It fails closed when
|
|
270
285
|
capability discovery fails. To change what an AI can do, edit the OAuth connection under
|
|
271
286
|
**Settings → Connections**, or edit the direct API key's scopes and constraints.
|
|
@@ -281,6 +296,7 @@ Read-only resources for inspection without tool calls:
|
|
|
281
296
|
- `shipmail://mailboxes/{id}`
|
|
282
297
|
- `shipmail://mailboxes/{id}/folders`
|
|
283
298
|
- `shipmail://mailboxes/{id}/identities`
|
|
299
|
+
- `shipmail://mailboxes/{id}/rules`
|
|
284
300
|
- `shipmail://mailboxes/{id}/inbox/messages`
|
|
285
301
|
- `shipmail://mailboxes/{id}/inbox/threads/{thread_id}`
|
|
286
302
|
- `shipmail://messages/{id}`
|
|
@@ -319,7 +335,7 @@ Shipmail generates the primary credential and never returns it to the partner.
|
|
|
319
335
|
- **Circuit breaker**: Each session enforces per-tool rate limits and a hard total-call ceiling as a runaway-agent guard. These are not abuse controls. Real abuse limits live at the API per API key. Restart the server to reset.
|
|
320
336
|
- **Least-privilege reply workflow**: Use `messages:read` for discovery, add `drafts:write` for reviewable draft creation, and grant `messages:send` only to agents that are allowed to transmit approved mail. A review-only agent does not need send access.
|
|
321
337
|
- **Webhook URL validation**: Webhook URLs must be public https endpoints. Localhost, RFC1918, link-local, ULA, IPv4-mapped IPv6, `0.0.0.0`, decimal-int IPs, `.local`, and `.internal` hosts are rejected at input time.
|
|
322
|
-
- **Destructive annotations**: Tools that delete, retarget, rotate, reset credentials, or create automatic outbound responses are annotated with `destructiveHint`. Hosts that gate on this annotation will prompt the user. Annotated tools include `shipmail_update_domain`, `shipmail_update_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_delete_mailbox_folder`, `shipmail_reset_mailbox_password`, and `shipmail_set_auto_reply` in addition to obvious deletes.
|
|
338
|
+
- **Destructive annotations**: Tools that delete, retarget, replace persistent rules, rotate, reset credentials, or create automatic outbound responses are annotated with `destructiveHint`. Hosts that gate on this annotation will prompt the user. Annotated tools include `shipmail_update_domain`, `shipmail_update_webhook`, `shipmail_rotate_webhook_secret`, `shipmail_set_mailbox_rules`, `shipmail_delete_mailbox_folder`, `shipmail_reset_mailbox_password`, and `shipmail_set_auto_reply` in addition to obvious deletes.
|
|
323
339
|
|
|
324
340
|
Domain purchase is intentionally excluded.
|
|
325
341
|
|
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", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions", "partner_admin"];
|
|
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"];
|
|
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", "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"];
|
|
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";
|
|
@@ -70,6 +70,12 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
|
|
|
70
70
|
readonly description: "Read and manage persistent forwarding destinations.";
|
|
71
71
|
readonly scopes: readonly ["mailbox_forwarding:read", "mailbox_forwarding:write"];
|
|
72
72
|
readonly persistent: true;
|
|
73
|
+
}, {
|
|
74
|
+
readonly name: "mailbox_rules";
|
|
75
|
+
readonly label: "Inbox rules";
|
|
76
|
+
readonly description: "Read and manage persistent server-side sorting, move, read, and star rules.";
|
|
77
|
+
readonly scopes: readonly ["mailbox_rules:read", "mailbox_rules:write"];
|
|
78
|
+
readonly persistent: true;
|
|
73
79
|
}, {
|
|
74
80
|
readonly name: "webhooks";
|
|
75
81
|
readonly label: "Webhooks";
|
|
@@ -125,7 +131,7 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
|
|
|
125
131
|
readonly scopes: readonly ["partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
|
|
126
132
|
readonly persistent: true;
|
|
127
133
|
}];
|
|
128
|
-
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_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:read"], 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_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:read"], 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_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"]];
|
|
129
135
|
type McpToolName = (typeof CAPABILITY_ROWS)[number][0];
|
|
130
136
|
type McpCapability = {
|
|
131
137
|
readonly toolName: McpToolName;
|
|
@@ -151,8 +157,9 @@ type McpCapability = {
|
|
|
151
157
|
};
|
|
152
158
|
declare const MCP_CAPABILITIES: readonly McpCapability[];
|
|
153
159
|
declare const MCP_TOOL_NAMES: readonly McpToolName[];
|
|
160
|
+
declare const MCP_HOSTED_OAUTH_PERMISSION_GROUP_NAMES: readonly McpPermissionGroupName[];
|
|
154
161
|
declare function getMcpCapability(toolName: string): McpCapability | undefined;
|
|
155
162
|
declare function getAllowedMcpToolNames(grantedScopes: readonly string[], transport: keyof McpCapability["transports"]): ReadonlySet<McpToolName>;
|
|
156
163
|
declare function permissionGroupsToScopes(groupNames: readonly McpPermissionGroupName[]): readonly ApiKeyScope[];
|
|
157
164
|
|
|
158
|
-
export { MCP_CAPABILITIES, MCP_CAPABILITY_VERSION, MCP_MEMBER_PERMISSION_GROUP_NAMES, MCP_PERMISSION_GROUPS, MCP_PERMISSION_GROUP_NAMES, MCP_TOOL_NAMES, type McpCapability, type McpCapabilityDuration, type McpCapabilityEffect, type McpIdempotencyBehavior, type McpPermissionGroup, type McpPermissionGroupName, type McpRecipientControl, type McpRole, type McpToolName, getAllowedMcpToolNames, getMcpCapability, permissionGroupsToScopes };
|
|
165
|
+
export { MCP_CAPABILITIES, MCP_CAPABILITY_VERSION, MCP_HOSTED_OAUTH_PERMISSION_GROUP_NAMES, MCP_MEMBER_PERMISSION_GROUP_NAMES, MCP_PERMISSION_GROUPS, MCP_PERMISSION_GROUP_NAMES, MCP_TOOL_NAMES, type McpCapability, type McpCapabilityDuration, type McpCapabilityEffect, type McpIdempotencyBehavior, type McpPermissionGroup, type McpPermissionGroupName, type McpRecipientControl, type McpRole, type McpToolName, getAllowedMcpToolNames, getMcpCapability, permissionGroupsToScopes };
|
package/dist/capabilities.js
CHANGED
|
@@ -11,6 +11,7 @@ var MCP_PERMISSION_GROUP_NAMES = [
|
|
|
11
11
|
"calendar_write",
|
|
12
12
|
"booking_pages",
|
|
13
13
|
"forwarding",
|
|
14
|
+
"mailbox_rules",
|
|
14
15
|
"webhooks",
|
|
15
16
|
"credentials",
|
|
16
17
|
"mailbox_export",
|
|
@@ -26,6 +27,7 @@ var MCP_MEMBER_PERMISSION_GROUP_NAMES = [
|
|
|
26
27
|
"mail_read",
|
|
27
28
|
"drafts",
|
|
28
29
|
"mail_organize",
|
|
30
|
+
"mailbox_rules",
|
|
29
31
|
"send_mail",
|
|
30
32
|
"calendar_read",
|
|
31
33
|
"calendar_write"
|
|
@@ -94,6 +96,13 @@ var MCP_PERMISSION_GROUPS = [
|
|
|
94
96
|
scopes: ["mailbox_forwarding:read", "mailbox_forwarding:write"],
|
|
95
97
|
persistent: true
|
|
96
98
|
},
|
|
99
|
+
{
|
|
100
|
+
name: "mailbox_rules",
|
|
101
|
+
label: "Inbox rules",
|
|
102
|
+
description: "Read and manage persistent server-side sorting, move, read, and star rules.",
|
|
103
|
+
scopes: ["mailbox_rules:read", "mailbox_rules:write"],
|
|
104
|
+
persistent: true
|
|
105
|
+
},
|
|
97
106
|
{
|
|
98
107
|
name: "webhooks",
|
|
99
108
|
label: "Webhooks",
|
|
@@ -187,6 +196,8 @@ var CAPABILITY_ROWS = [
|
|
|
187
196
|
["shipmail_update_mailbox", "updateMailbox", "mailboxes:write"],
|
|
188
197
|
["shipmail_delete_mailbox", "deleteMailbox", "mailboxes:write"],
|
|
189
198
|
["shipmail_list_mailbox_folders", "listMailboxFolders", "mailboxes:read"],
|
|
199
|
+
["shipmail_get_mailbox_rules", "getMailboxRules", "mailbox_rules:read"],
|
|
200
|
+
["shipmail_set_mailbox_rules", "updateMailboxRules", "mailbox_rules:write"],
|
|
190
201
|
["shipmail_create_mailbox_folder", "createMailboxFolder", "mailboxes:write"],
|
|
191
202
|
["shipmail_update_mailbox_folder", "updateMailboxFolder", "mailboxes:write"],
|
|
192
203
|
["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "mailboxes:write"],
|
|
@@ -348,7 +359,8 @@ var DESTRUCTIVE_TOOLS = /* @__PURE__ */ new Set([
|
|
|
348
359
|
"shipmail_create_mailbox_app_password",
|
|
349
360
|
"shipmail_create_mailbox_export",
|
|
350
361
|
"shipmail_rotate_webhook_secret",
|
|
351
|
-
"shipmail_consume_partner_mailbox_credential_grant"
|
|
362
|
+
"shipmail_consume_partner_mailbox_credential_grant",
|
|
363
|
+
"shipmail_set_mailbox_rules"
|
|
352
364
|
]);
|
|
353
365
|
var EXTERNAL_WRITE_TOOLS = /* @__PURE__ */ new Set([
|
|
354
366
|
"shipmail_send_message",
|
|
@@ -396,6 +408,7 @@ function permissionGroupFor(toolName, requiredScope) {
|
|
|
396
408
|
if (requiredScope.startsWith("domains:")) return "domain_admin";
|
|
397
409
|
if (requiredScope.startsWith("mailbox_credentials:")) return "credentials";
|
|
398
410
|
if (requiredScope.startsWith("mailbox_forwarding:")) return "forwarding";
|
|
411
|
+
if (requiredScope.startsWith("mailbox_rules:")) return "mailbox_rules";
|
|
399
412
|
if (requiredScope === "mailboxes:export") return "mailbox_export";
|
|
400
413
|
if (requiredScope === "drafts:write") return "drafts";
|
|
401
414
|
if (requiredScope === "messages:send") return "send_mail";
|
|
@@ -431,7 +444,7 @@ function durationFor(toolName) {
|
|
|
431
444
|
if (toolName.includes("app_password") || toolName.includes("credential_grant") || toolName === "shipmail_rotate_webhook_secret") {
|
|
432
445
|
return "credential";
|
|
433
446
|
}
|
|
434
|
-
if (toolName.includes("forwarding") || toolName.includes("webhook") || toolName.includes("booking_page")) {
|
|
447
|
+
if (toolName.includes("forwarding") || toolName.includes("mailbox_rules") || toolName.includes("webhook") || toolName.includes("booking_page")) {
|
|
435
448
|
return "persistent";
|
|
436
449
|
}
|
|
437
450
|
if (toolName === "shipmail_send_message" || toolName.includes("schedule_") || toolName.includes("scheduled_message")) {
|
|
@@ -474,12 +487,17 @@ function defineCapability(row) {
|
|
|
474
487
|
transports: {
|
|
475
488
|
hostedOAuth: permissionGroup !== "partner_admin",
|
|
476
489
|
directApiKeyHttp: true,
|
|
477
|
-
stdio: toolName !== "shipmail_compose_message_with_file"
|
|
490
|
+
stdio: toolName !== "shipmail_compose_message_with_file"
|
|
478
491
|
}
|
|
479
492
|
};
|
|
480
493
|
}
|
|
481
494
|
var MCP_CAPABILITIES = CAPABILITY_ROWS.map(defineCapability);
|
|
482
495
|
var MCP_TOOL_NAMES = CAPABILITY_ROWS.map(([toolName]) => toolName);
|
|
496
|
+
var MCP_HOSTED_OAUTH_PERMISSION_GROUP_NAMES = MCP_PERMISSION_GROUPS.filter(
|
|
497
|
+
(group) => MCP_CAPABILITIES.some(
|
|
498
|
+
(capability) => capability.permissionGroup === group.name && capability.transports.hostedOAuth
|
|
499
|
+
)
|
|
500
|
+
).map((group) => group.name);
|
|
483
501
|
function getMcpCapability(toolName) {
|
|
484
502
|
return MCP_CAPABILITIES.find((capability) => capability.toolName === toolName);
|
|
485
503
|
}
|
|
@@ -501,6 +519,7 @@ function permissionGroupsToScopes(groupNames) {
|
|
|
501
519
|
export {
|
|
502
520
|
MCP_CAPABILITIES,
|
|
503
521
|
MCP_CAPABILITY_VERSION,
|
|
522
|
+
MCP_HOSTED_OAUTH_PERMISSION_GROUP_NAMES,
|
|
504
523
|
MCP_MEMBER_PERMISSION_GROUP_NAMES,
|
|
505
524
|
MCP_PERMISSION_GROUPS,
|
|
506
525
|
MCP_PERMISSION_GROUP_NAMES,
|