shipmail-mcp 0.8.7 → 0.9.0

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.
@@ -1,13 +1,19 @@
1
1
  {
2
+ "displayName": "Shipmail",
2
3
  "name": "shipmail",
3
- "version": "0.8.7",
4
- "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
4
+ "version": "0.9.0",
5
+ "description": "Modern email for your business. Inboxes, calendars, newsletters, bookings, an AI assistant, and an API for your agents. Everything on your own domain, in one subscription.",
5
6
  "author": {
6
7
  "name": "Shipmail",
7
- "email": "ops@shipmail.to",
8
+ "email": "hi@shipmail.to",
8
9
  "url": "https://shipmail.to"
9
10
  },
10
11
  "homepage": "https://shipmail.to/docs/mcp",
12
+ "privacyPolicyUrl": "https://shipmail.to/privacy",
13
+ "supportUrl": "https://shipmail.to/support",
14
+ "documentationUrl": "https://shipmail.to/docs/mcp",
15
+ "termsOfServiceUrl": "https://shipmail.to/terms",
16
+ "icon": "./assets/shipmail-mark.svg",
11
17
  "repository": "https://github.com/shipmail-to/shipmail-mcp",
12
18
  "license": "MIT",
13
19
  "keywords": [
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "shipmail",
3
- "version": "0.8.7",
4
- "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
3
+ "version": "0.9.0",
4
+ "description": "Modern email for your business. Inboxes, calendars, newsletters, bookings, an AI assistant, and an API for your agents. Everything on your own domain, in one subscription.",
5
5
  "author": {
6
6
  "name": "Shipmail",
7
- "email": "ops@shipmail.to",
7
+ "email": "hi@shipmail.to",
8
8
  "url": "https://shipmail.to"
9
9
  },
10
10
  "homepage": "https://shipmail.to/docs/mcp",
@@ -21,8 +21,8 @@
21
21
  "skills": "./skills/",
22
22
  "interface": {
23
23
  "displayName": "Shipmail",
24
- "shortDescription": "Secure email and calendars for AI agents",
25
- "longDescription": "Triage inboxes, draft and send approved replies, manage custom-domain mailboxes, work with calendars, and automate email through Shipmail's hosted MCP server.",
24
+ "shortDescription": "Modern email for your business",
25
+ "longDescription": "Search and triage your inbox, draft and send replies you approve, write and schedule newsletters, manage calendars and booking pages, set up automations, and add domains and mailboxes, all on your own domain through Shipmail's hosted MCP server.",
26
26
  "developerName": "Shipmail",
27
27
  "category": "Productivity",
28
28
  "websiteURL": "https://shipmail.to",
@@ -31,12 +31,13 @@
31
31
  "capabilities": [
32
32
  "Email",
33
33
  "Calendar",
34
+ "Newsletters",
34
35
  "Automation"
35
36
  ],
36
37
  "defaultPrompt": [
37
- "Triage my Shipmail inbox and identify what needs a reply.",
38
- "Draft safe replies to the messages that need action, but do not send anything.",
39
- "Show my Shipmail calendar availability for this week."
38
+ "Summarize my unread emails and draft replies to the customer ones, but do not send anything.",
39
+ "Find a free 30-minute slot tomorrow afternoon and put a call on my calendar.",
40
+ "Turn this month's changelog into a newsletter and send me a test."
40
41
  ],
41
42
  "composerIcon": "./assets/shipmail-mark.png",
42
43
  "logo": "./assets/shipmail-logo.png"
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "shipmail",
3
- "version": "0.8.7",
4
- "description": "Operate secure custom-domain business email, calendars, and agent inboxes with Shipmail.",
3
+ "version": "0.9.0",
4
+ "description": "Modern email for your business. Inboxes, calendars, newsletters, bookings, an AI assistant, and an API for your agents. Everything on your own domain, in one subscription.",
5
5
  "author": {
6
6
  "name": "Shipmail",
7
- "email": "ops@shipmail.to",
7
+ "email": "hi@shipmail.to",
8
8
  "url": "https://shipmail.to"
9
9
  },
10
10
  "homepage": "https://shipmail.to/docs/mcp",
package/README.md CHANGED
@@ -94,6 +94,9 @@ This repository is also a portable agent plugin. It combines the hosted MCP conn
94
94
  safety-focused Shipmail skill, so supported clients can install the server and its operating
95
95
  guidance together:
96
96
 
97
+ Claude users can install the hosted plugin from the
98
+ [nested Shipmail plugin bundle](./distribution/shipmail).
99
+
97
100
  | Client or standard | Manifest |
98
101
  | ------------------- | ---------------------------- |
99
102
  | OpenAI Codex | `.codex-plugin/plugin.json` |
@@ -140,8 +143,7 @@ Cursor, VS Code, Windsurf, and other Streamable HTTP clients:
140
143
 
141
144
  The tool catalog follows the effective connection permissions. OAuth users manage those grants
142
145
  under **Settings → Connections**. Direct API-key and stdio users manage key scopes and resource
143
- constraints under **Developer → API keys**. Partner accounts can
144
- target a delegated child organization with the `X-Shipmail-Organization-Id` header.
146
+ constraints under **Developer → API keys**.
145
147
 
146
148
  The sections below configure the same server locally over stdio.
147
149
 
@@ -269,7 +271,6 @@ All tools are namespaced with `shipmail_` to avoid collisions with peer MCP serv
269
271
  | 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` |
270
272
  | Newsletters | `shipmail_list_newsletter_sender_identities`, `shipmail_list_newsletter_domains`, `shipmail_list_newsletter_assets`, `shipmail_upload_newsletter_asset_with_file` (hosted MCP Apps), `shipmail_prepare_newsletter_asset_upload`, `shipmail_register_newsletter_asset`, `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` |
271
273
  | 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` |
272
- | 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` |
273
274
 
274
275
  Cross-organization list tools appear only on hosted OAuth connections with at least two
275
276
  organization grants. They return a success or failure section for every organization and paginate
@@ -293,10 +294,11 @@ and cancelled before dispatch begins.
293
294
 
294
295
  Received attachment contents are available through `shipmail_read_mailbox_inbox_attachment`. First
295
296
  fetch the exact inbox message, then pass its mailbox ID, message ID, and attachment `part_id`. The
296
- tool resolves the attachment metadata from that message and returns the bytes as an embedded MCP
297
- resource with the attachment's media type. Embedded reads are limited to 3 MB so the base64 payload
298
- stays within Shipmail's hosted and local MCP response budgets. Treat all attachment content as
299
- untrusted external data.
297
+ tool resolves the attachment metadata from that message and returns the contents of decodable
298
+ `text/*` attachments in `attachment.text` of the structured result. Other attachments are embedded MCP resources; unsupported or invalid text charsets are
299
+ returned as binary resources so their bytes are preserved. Reads are limited to 3 MB so payloads stay
300
+ within Shipmail's hosted and local MCP response budgets. Treat all attachment content as untrusted
301
+ external data.
300
302
 
301
303
  In ChatGPT, `shipmail_compose_message_with_file` renders an MCP Apps review card for a
302
304
  conversation or library file. The card obtains a fresh ChatGPT download URL, hashes the exact
@@ -327,11 +329,9 @@ in Shipmail or any mail client. It needs only the `drafts:compose` scope.
327
329
 
328
330
  With an `sm_test_...` API key, send and reply tools accept `sandbox_outcome` and the sandbox inbound tool creates fake inbound mail. The API keeps test storage and events isolated and never delivers sandbox mail to real recipients.
329
331
 
330
- App-password creation, revocation, and partner grant consumption are destructive/high-risk tools.
331
- Creation and grant consumption return a live secret once; revocation disconnects that client
332
- immediately. Partner grant consumption requires the exact `partner:mailbox_credentials:issue`
333
- scope and an operator-approved one-time grant. App-password creation and grant consumption do not
334
- accept idempotency keys.
332
+ App-password creation and revocation are destructive/high-risk tools. Creation returns a live
333
+ secret once; revocation disconnects that client immediately. App-password creation does not accept
334
+ idempotency keys.
335
335
 
336
336
  Use `shipmail_list_mailbox_rules` and `shipmail_get_mailbox_rule` with
337
337
  `shipmail_create_mailbox_rule`, `shipmail_update_mailbox_rule`, and `shipmail_delete_mailbox_rule`
@@ -371,23 +371,19 @@ Pre-built prompts the agent can use as guided workflows:
371
371
 
372
372
  ## Configuration
373
373
 
374
- | Variable | Required | Description |
375
- | -------------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
376
- | `SHIPMAIL_API_KEY` | Yes (or `SHIPMAIL_API_KEY_FILE`) | Shipmail API key (`sm_live_...`). |
377
- | `SHIPMAIL_API_KEY_FILE` | No | Path to a file containing the API key. Takes precedence over `SHIPMAIL_API_KEY`. Reduces env-trace leak surface (Docker secrets, systemd `LoadCredential`). |
378
- | `SHIPMAIL_BASE_URL` | No | Override the API base URL. Must be https on a `shipmail.to` host. Defaults to `https://shipmail.to/api/v1`. |
379
- | `SHIPMAIL_ORGANIZATION_ID` | No | Delegated child organization for an approved infrastructure-only MCP session. |
380
-
381
- In a delegated partner session, call `shipmail_create_mailbox` with `generate_password: true`.
382
- Shipmail generates the primary credential and never returns it to the partner.
383
- | `SHIPMAIL_ALLOW_INSECURE_BASE_URL` | No | Set to `1` to permit a non-https or non-`shipmail.to` base URL. Local development only. |
384
- | `SHIPMAIL_MCP_DEBUG` | No | Set to `1` to include `request_id` and `status` in stderr tool-call logs. |
374
+ | Variable | Required | Description |
375
+ | ---------------------------------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
376
+ | `SHIPMAIL_API_KEY` | Yes (or `SHIPMAIL_API_KEY_FILE`) | Shipmail API key (`sm_live_...`). |
377
+ | `SHIPMAIL_API_KEY_FILE` | No | Path to a file containing the API key. Takes precedence over `SHIPMAIL_API_KEY`. Reduces env-trace leak surface (Docker secrets, systemd `LoadCredential`). |
378
+ | `SHIPMAIL_BASE_URL` | No | Override the API base URL. Must be https on a `shipmail.to` host. Defaults to `https://shipmail.to/api/v1`. |
379
+ | `SHIPMAIL_ALLOW_INSECURE_BASE_URL` | No | Set to `1` to permit a non-https or non-`shipmail.to` base URL. Local development only. |
380
+ | `SHIPMAIL_MCP_DEBUG` | No | Set to `1` to include `request_id` and `status` in stderr tool-call logs. |
385
381
 
386
382
  ## Security
387
383
 
388
384
  - **Tool namespacing**: All tools are prefixed with `shipmail_` to avoid collisions with peer MCP servers in the same host.
389
385
  - **Structured outputs**: Successful tools return both text fallback content and structured MCP `structuredContent`.
390
- - **Idempotency**: Mutating tools accept an optional `idempotency_key`. When omitted, the server generates a fresh key per tool call. Supply your own key if a specific request must stay idempotent across MCP retries. Mailbox app-password creation and partner grant consumption are excluded because their one-time plaintext secrets must never be cached.
386
+ - **Idempotency**: Mutating tools accept an optional `idempotency_key`. When omitted, the server generates a fresh key per tool call. Supply your own key if a specific request must stay idempotent across MCP retries. Mailbox app-password creation is excluded because its one-time plaintext secret must never be cached.
391
387
  - **Input sanitization**: Email content, addresses, and error text are stripped of ASCII control characters, DEL, and Unicode directional or BiDi markers (U+061C, U+200E/F, U+202A-E, U+2066-9). Long strings are truncated.
392
388
  - **Error redaction**: 5xx and unexpected Shipmail errors are redacted to a generic message; the original `request_id` is preserved for support. Generic `Error` thrown values (network errors, deserialization) are redacted to "Internal MCP error" before reaching the LLM. Detail lands on stderr.
393
389
  - **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.
Binary file
@@ -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"/>
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"/>
4
- <path d="M 55 75 L 85 75" fill="none" stroke="#F26522" stroke-width="12" stroke-linecap="round"/>
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"/>
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"/>
7
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -77.42 504.95 99.10" aria-label="shipmail" role="img"><path fill="#161615" fill-rule="evenodd" transform="translate(0 -68.52) scale(1.507) translate(-24.86 -23)" d="M30.87 23L68 23A16 16 0 0 1 84 39L84 61A16 16 0 0 1 68 77L30.87 77A6 6 0 0 1 26.7 66.68L40.27 53.6A5 5 0 0 0 40.27 46.4L26.7 33.32A6 6 0 0 1 30.87 23ZM49 58H69A4 4 0 0 1 73 62V62A4 4 0 0 1 69 66H49A4 4 0 0 1 45 62V62A4 4 0 0 1 49 58Z"/><path fill="#FFDD1F" transform="translate(0 -68.52) scale(1.507) translate(-24.86 -23)" d="M49 58H69A4 4 0 0 1 73 62V62A4 4 0 0 1 69 66H49A4 4 0 0 1 45 62V62A4 4 0 0 1 49 58Z"/><path fill="#161615" d="M144.11304979253111 1.2046680497925313Q139.669163208852 1.2046680497925313 135.4662102351314 0.04015560165975107Q131.26325726141079 -1.1243568464730291 127.71617911479944 -3.2526037344398344Q124.1691009681881 -5.38085062240664 121.59914246196404 -8.352365145228216L129.97827800829876 -16.811811894882435Q132.6285477178423 -13.840297372060858 136.1354702627939 -12.300999308437069Q139.6423928077455 -10.76170124481328 143.9256569847856 -10.76170124481328Q147.3522683264177 -10.76170124481328 149.1325 -11.765591286307055Q150.9127316735823 -12.76948132780083 150.9127316735823 -14.67017980636238Q150.9127316735823 -16.811811894882435 149.02541839557398 -17.962939142461963Q147.1381051175657 -19.114066390041494 144.1665905947441 -19.957334024896266Q141.19507607192253 -20.800601659751038 137.90231673582295 -21.777721300138314Q134.60955739972337 -22.75484094052559 131.62465767634853 -24.441376210235134Q128.63975795297372 -26.127911479944675 126.76582987551868 -29.086040802213Q124.89190179806361 -32.044170124481326 124.89190179806361 -36.72899031811895Q124.89190179806361 -41.68151452282158 127.32800829875518 -45.308903872752424Q129.76411479944676 -48.93629322268327 134.23477178423235 -50.95745850622407Q138.70542876901797 -52.978623789764875 144.83585062240664 -52.978623789764875Q151.23397648686029 -52.978623789764875 156.44081950207467 -50.743295297372065Q161.64766251728906 -48.507966804979255 165.02073305670817 -44.03730982019364L156.61482710926694 -35.57786307053942Q154.25903181189489 -38.4155255878285 151.28751728907332 -39.713890041493784Q148.31600276625173 -41.01225449515906 144.96970262793914 -41.01225449515906Q141.81079529737207 -41.01225449515906 140.16441562932226 -40.06190525587829Q138.51803596127246 -39.11155601659751 138.51803596127246 -37.37147994467497Q138.51803596127246 -35.470781466113415 140.3919640387275 -34.39996542185339Q142.26589211618256 -33.32914937759336 145.23740663900412 -32.52603734439834Q148.2089211618257 -31.722925311203323 151.48829529737205 -30.692264868603047Q154.76766943291838 -29.661604426002768 157.73918395573997 -27.85460235131397Q160.71069847856154 -26.047600276625175 162.5846265560166 -23.049315352697096Q164.45855463347164 -20.051030428769018 164.45855463347164 -15.259128630705394Q164.45855463347164 -7.683105117565699 158.970622406639 -3.239218533886584Q153.48269017980635 1.2046680497925313 144.11304979253111 1.2046680497925313ZM206.46131396957122 0.0V-29.634834024896268Q206.46131396957122 -34.266113416320884 203.57011065006915 -37.17070193637621Q200.67890733056709 -40.07529045643154 196.174377593361 -40.07529045643154Q193.10916666666668 -40.07529045643154 190.75022994467497 -38.763540802213Q188.39129322268326 -37.45179114799447 187.0661583679115 -35.08261065006916Q185.7410235131397 -32.71343015214385 185.7410235131397 -29.634834024896268L180.25309128630707 -32.47249654218534Q180.25309128630707 -38.495836791147994 182.83643499308437 -43.06019017980636Q185.4197786998617 -47.62454356846473 189.9891600318751 -50.207887275242044Q194.55854136388848 -52.791230982019364 200.4162312628571 -52.791230982019364Q206.32746196403872 -52.791230982019364 210.87843015214384 -50.23465767634855Q215.42939834024895 -47.67808437067774 217.9859716459198 -43.18065698478562Q220.5425449515906 -38.683229598893504 220.5425449515906 -32.76697095435685V0.0ZM171.65979253112033 0.0V-77.42H185.7410235131397V0.0ZM229.75156293222685 0.0V-51.72041493775934H243.8327939142462V0.0ZM236.79217842323652 -60.019239280774556Q233.39233748271093 -60.019239280774556 231.1436237897649 -62.33487897648686Q228.89491009681882 -64.65051867219917 228.89491009681882 -68.05035961272476Q228.89491009681882 -71.45020055325035 231.1436237897649 -73.76584024896266Q233.39233748271093 -76.08147994467497 236.79217842323652 -76.08147994467497Q240.29910096818813 -76.08147994467497 242.4942738589212 -73.76584024896266Q244.68944674965422 -71.45020055325035 244.68944674965422 -68.05035961272476Q244.68944674965422 -64.65051867219917 242.4942738589212 -62.33487897648686Q240.29910096818813 -60.019239280774556 236.79217842323652 -60.019239280774556ZM282.8640387275242 1.0708160442600276Q277.26902489626553 1.0708160442600276 272.77159751037345 -1.2046680497925313Q268.2741701244813 -3.48015214384509 265.58374481327803 -7.468941908713694Q262.8933195020747 -11.457731673582296 262.67915629322266 -16.54410788381743V-34.908603042876905Q262.8933195020747 -39.994979253112035 265.6239004149378 -44.050695020746886Q268.35448132780084 -48.106410788381744 272.8491928758995 -50.448820885200554Q277.3439044239982 -52.791230982019364 282.8640387275242 -52.791230982019364Q290.0385062240664 -52.791230982019364 295.7138312586445 -49.23076763485477Q301.38915629322264 -45.67030428769018 304.6551452282157 -39.58003803596127Q307.9211341632088 -33.48977178423237 307.9211341632088 -25.77989626556017Q307.9211341632088 -18.15033195020747 304.6551452282157 -12.073450899031812Q301.38915629322264 -5.996569847856155 295.7138312586445 -2.462876901798064Q290.0385062240664 1.0708160442600276 282.8640387275242 1.0708160442600276ZM254.11262793914244 21.684024896265562V-51.72041493775934H268.1938589211618V-38.133415979755505L265.8112932226833 -25.53896265560166L268.0600069156293 -13.010414937759336V21.684024896265562ZM280.4163488802 -11.886058091286309Q284.29290888658363 -11.886058091286309 287.2460187586445 -13.666289764868605Q290.1991286307054 -15.4465214384509 291.8856639004149 -18.607262358134864Q293.57219917012446 -21.76800327781883 293.57219917012446 -25.87010885011084Q293.57219917012446 -29.982849239280775 291.8856639004149 -33.128371369294605Q290.1991286307054 -36.273893499308436 287.2525651613423 -38.054125172890735Q284.3060016919792 -39.83435684647303 280.45288328029113 -39.83435684647303Q276.599764868603 -39.83435684647303 273.61505913364203 -38.06265639961698Q270.630353398681 -36.29095595276093 268.9837797422174 -33.137638046600706Q267.3372060857538 -29.984320140440477 267.3372060857538 -25.863737631662943Q267.3372060857538 -21.764336099585062 268.9702005532503 -18.60542876901798Q270.60319502074685 -15.4465214384509 273.5880947441217 -13.666289764868605Q276.5729944674965 -11.886058091286309 280.4163488802 -11.886058091286309ZM314.93497925311203 0.0V-51.72041493775934H329.0162102351314V0.0ZM348.6656846473029 0.0V-30.51825726141079Q348.6656846473029 -35.04245504840941 345.8547925311203 -37.55887275242047Q343.04390041493775 -40.07529045643154 338.89448824343015 -40.07529045643154Q336.0568257261411 -40.07529045643154 333.83488243430156 -38.93754840940526Q331.612939142462 -37.79980636237898 330.3145746887967 -35.67155947441218Q329.0162102351314 -33.54331258644537 329.0162102351314 -30.51825726141079L323.52827800829874 -33.19529737206086Q323.52827800829874 -39.21863762102352 326.1651625172891 -43.58221300138313Q328.8020470262794 -47.945788381742744 333.29947441217155 -50.36850968188105Q337.79690179806363 -52.791230982019364 343.4186860304288 -52.791230982019364Q348.85307745504844 -52.791230982019364 353.2300380359613 -50.3818948824343Q357.60699861687414 -47.97255878284924 360.1769571230982 -43.62236860304288Q362.7469156293223 -39.27217842323652 362.7469156293223 -33.22206777316736V0.0ZM382.39639004149376 0.0V-30.51825726141079Q382.39639004149376 -35.04245504840941 379.5854979253112 -37.55887275242047Q376.7746058091286 -40.07529045643154 372.625193637621 -40.07529045643154Q369.8678423236515 -40.07529045643154 367.6057434301522 -38.93754840940526Q365.34364453665285 -37.79980636237898 364.0452800829876 -35.67155947441218Q362.7469156293223 -33.54331258644537 362.7469156293223 -30.51825726141079L354.68902489626555 -32.41895573997234Q355.09058091286306 -38.683229598893504 357.9951694329184 -43.22081258644537Q360.89975795297374 -47.758395573997234 365.62473374827107 -50.274813278008295Q370.34970954356845 -52.791230982019364 376.13211618257264 -52.791230982019364Q381.8877524204703 -52.791230982019364 386.47887621023517 -50.355124481327806Q391.07 -47.91901798063624 393.77381051175655 -43.44836099585062Q396.47762102351317 -38.97770401106501 396.47762102351317 -32.71343015214385V0.0ZM427.26358229598895 1.0708160442600276Q420.19619640387276 1.0708160442600276 414.56102697095434 -2.462876901798064Q408.925857538036 -5.996569847856155 405.67325380359614 -12.073450899031812Q402.4206500691563 -18.15033195020747 402.4206500691563 -25.77989626556017Q402.4206500691563 -33.48977178423237 405.67325380359614 -39.58003803596127Q408.925857538036 -45.67030428769018 414.56102697095434 -49.23076763485477Q420.19619640387276 -52.791230982019364 427.26358229598895 -52.791230982019364Q432.83182572614106 -52.791230982019364 437.2221715076072 -50.515746887966806Q441.6125172890733 -48.24026279391425 444.2761721991701 -44.25147302904564Q446.93982710926696 -40.26268326417704 447.12721991701244 -35.17630705394191V-16.54410788381743Q446.93982710926696 -11.457731673582296 444.31632780082987 -7.468941908713694Q441.69282849239283 -3.48015214384509 437.26232710926695 -1.2046680497925313Q432.83182572614106 1.0708160442600276 427.26358229598895 1.0708160442600276ZM429.887081604426 -11.886058091286309Q435.77656984785614 -11.886058091286309 439.39057399723373 -15.80792185338866Q443.0045781466113 -19.72978561549101 443.0045781466113 -25.86020746887967Q443.0045781466113 -29.982849239280775 441.3715836791148 -33.128371369294605Q439.73858921161826 -36.273893499308436 436.7938450899032 -38.054125172890735Q433.8491009681881 -39.83435684647303 429.91385200553253 -39.83435684647303Q426.0589142461964 -39.83435684647303 423.11417012448135 -38.054125172890735Q420.1694260027663 -36.273893499308436 418.4695055325035 -33.11498616874135Q416.76958506224065 -29.956078838174275 416.76958506224065 -25.86020746887967Q416.76958506224065 -21.764336099585062 418.45612033195016 -18.60542876901798Q420.1426556016597 -15.4465214384509 423.1007849239281 -13.666289764868605Q426.0589142461964 -11.886058091286309 429.887081604426 -11.886058091286309ZM442.2817773167358 0.0V-13.89383817427386L444.5304910096819 -26.502697095435686L442.2817773167358 -39.00447441217151V-51.72041493775934H456.2291562932227V0.0ZM466.5089903181189 0.0V-51.72041493775934H480.5902213001383V0.0ZM473.5496058091286 -60.019239280774556Q470.14976486860303 -60.019239280774556 467.90105117565696 -62.33487897648686Q465.6523374827109 -64.65051867219917 465.6523374827109 -68.05035961272476Q465.6523374827109 -71.45020055325035 467.90105117565696 -73.76584024896266Q470.14976486860303 -76.08147994467497 473.5496058091286 -76.08147994467497Q477.05652835408017 -76.08147994467497 479.25170124481326 -73.76584024896266Q481.4468741355463 -71.45020055325035 481.4468741355463 -68.05035961272476Q481.4468741355463 -64.65051867219917 479.25170124481326 -62.33487897648686Q477.05652835408017 -60.019239280774556 473.5496058091286 -60.019239280774556ZM490.8700553250346 0.0V-77.42H504.951286307054V0.0Z"/></svg>
Binary file
Binary file
@@ -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"/>
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"/>
4
- <path d="M 55 75 L 85 75" fill="none" stroke="#F26522" stroke-width="12" stroke-linecap="round"/>
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"/>
6
- </svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><rect width="1024" height="1024" rx="230.4" fill="#FFDD1F"/><g transform="translate(-72.38 -24.8) scale(10.74)"><path fill="#161615" d="M30.87 23L68 23A16 16 0 0 1 84 39L84 61A16 16 0 0 1 68 77L30.87 77A6 6 0 0 1 26.7 66.68L40.27 53.6A5 5 0 0 0 40.27 46.4L26.7 33.32A6 6 0 0 1 30.87 23ZM49 58H69A4 4 0 0 1 73 62V62A4 4 0 0 1 69 66H49A4 4 0 0 1 45 62V62A4 4 0 0 1 49 58Z" fill-rule="evenodd"/></g></svg>
@@ -1,7 +1,7 @@
1
1
  import { ApiKeyScope } from 'shipmail/api-key-scopes';
2
2
 
3
3
  declare const MCP_CAPABILITY_VERSION = "1.1.0";
4
- declare const MCP_PERMISSION_GROUP_NAMES: readonly ["account_status", "automations", "mail_read", "drafts", "compose_drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "members", "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", "compose_drafts", "mail_organize", "send_mail", "calendar_read", "calendar_write", "booking_pages", "forwarding", "mailbox_rules", "members", "webhooks", "credentials", "mailbox_export", "domain_admin", "mailbox_admin", "newsletters", "audiences", "suppressions"];
5
5
  type McpPermissionGroupName = (typeof MCP_PERMISSION_GROUP_NAMES)[number];
6
6
  declare const MCP_MEMBER_PERMISSION_GROUP_NAMES: readonly ["account_status", "mail_read", "drafts", "compose_drafts", "mail_organize", "mailbox_rules", "send_mail", "calendar_read", "calendar_write", "automations"];
7
7
  type McpRole = "owner" | "member";
@@ -142,14 +142,8 @@ declare const MCP_PERMISSION_GROUPS: readonly [{
142
142
  readonly description: "Read and remove suppressed recipient addresses.";
143
143
  readonly scopes: readonly ["suppressions:read", "suppressions:write"];
144
144
  readonly persistent: false;
145
- }, {
146
- readonly name: "partner_admin";
147
- readonly label: "Partner administration";
148
- readonly description: "Manage delegated partner organizations, credential grants, and usage.";
149
- readonly scopes: readonly ["partner:organizations:read", "partner:organizations:write", "partner:organizations:access", "partner:mailbox_credentials:issue", "partner:usage:read"];
150
- readonly persistent: true;
151
145
  }];
152
- 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_create_mailbox_folder", "createMailboxFolder", "messages:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "messages:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "messages:write"], readonly ["shipmail_list_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_get_mailbox_rule", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_create_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_update_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_delete_mailbox_rule", "updateMailboxRules", "mailbox_rules: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_read_mailbox_inbox_attachment", "downloadMailboxInboxAttachment", "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_attention", "updateMailboxInboxThreadAttention", "messages:write"], readonly ["shipmail_create_draft", "createMailboxInboxDraft", "drafts:compose"], 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_get_mailbox_delivery_routing", "getMailboxDeliveryRouting", "mailboxes:read"], readonly ["shipmail_update_mailbox_delivery_routing", "updateMailboxDeliveryRouting", "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_resume_mailbox_import", "resumeMailboxImport", "mailboxes:write"], readonly ["shipmail_restore_mailbox_import", "restoreMailboxImport", "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_list_members", "listMembers", "members:read"], readonly ["shipmail_get_member", "getMember", "members: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_upload_newsletter_asset_with_file", "prepareNewsletterAssetUpload", "newsletters:write"], readonly ["shipmail_prepare_newsletter_asset_upload", "prepareNewsletterAssetUpload", "newsletters:write"], 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"]];
146
+ 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_create_mailbox_folder", "createMailboxFolder", "messages:write"], readonly ["shipmail_update_mailbox_folder", "updateMailboxFolder", "messages:write"], readonly ["shipmail_delete_mailbox_folder", "deleteMailboxFolder", "messages:write"], readonly ["shipmail_list_mailbox_rules", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_get_mailbox_rule", "getMailboxRules", "mailbox_rules:read"], readonly ["shipmail_create_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_update_mailbox_rule", "updateMailboxRules", "mailbox_rules:write"], readonly ["shipmail_delete_mailbox_rule", "updateMailboxRules", "mailbox_rules: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_read_mailbox_inbox_attachment", "downloadMailboxInboxAttachment", "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_attention", "updateMailboxInboxThreadAttention", "messages:write"], readonly ["shipmail_create_draft", "createMailboxInboxDraft", "drafts:compose"], 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_get_mailbox_delivery_routing", "getMailboxDeliveryRouting", "mailboxes:read"], readonly ["shipmail_update_mailbox_delivery_routing", "updateMailboxDeliveryRouting", "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_resume_mailbox_import", "resumeMailboxImport", "mailboxes:write"], readonly ["shipmail_restore_mailbox_import", "restoreMailboxImport", "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_list_members", "listMembers", "members:read"], readonly ["shipmail_get_member", "getMember", "members: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_upload_newsletter_asset_with_file", "prepareNewsletterAssetUpload", "newsletters:write"], readonly ["shipmail_prepare_newsletter_asset_upload", "prepareNewsletterAssetUpload", "newsletters:write"], 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"]];
153
147
  type McpToolName = (typeof CAPABILITY_ROWS)[number][0];
154
148
  type McpCapability = {
155
149
  readonly toolName: McpToolName;
@@ -22,8 +22,7 @@ var MCP_PERMISSION_GROUP_NAMES = [
22
22
  "mailbox_admin",
23
23
  "newsletters",
24
24
  "audiences",
25
- "suppressions",
26
- "partner_admin"
25
+ "suppressions"
27
26
  ];
28
27
  var MCP_MEMBER_PERMISSION_GROUP_NAMES = [
29
28
  "account_status",
@@ -184,19 +183,6 @@ var MCP_PERMISSION_GROUPS = [
184
183
  description: "Read and remove suppressed recipient addresses.",
185
184
  scopes: ["suppressions:read", "suppressions:write"],
186
185
  persistent: false
187
- },
188
- {
189
- name: "partner_admin",
190
- label: "Partner administration",
191
- description: "Manage delegated partner organizations, credential grants, and usage.",
192
- scopes: [
193
- "partner:organizations:read",
194
- "partner:organizations:write",
195
- "partner:organizations:access",
196
- "partner:mailbox_credentials:issue",
197
- "partner:usage:read"
198
- ],
199
- persistent: true
200
186
  }
201
187
  ];
202
188
  var CAPABILITY_ROWS = [
@@ -353,50 +339,7 @@ var CAPABILITY_ROWS = [
353
339
  ["shipmail_create_booking_page", "createBookingPage", "booking_pages:write"],
354
340
  ["shipmail_get_booking_page", "getBookingPage", "booking_pages:read"],
355
341
  ["shipmail_update_booking_page", "updateBookingPage", "booking_pages:write"],
356
- ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"],
357
- ["shipmail_list_partner_organizations", "listPartnerOrganizations", "partner:organizations:read"],
358
- [
359
- "shipmail_create_partner_organization",
360
- "createPartnerOrganization",
361
- "partner:organizations:write"
362
- ],
363
- ["shipmail_get_partner_organization", "getPartnerOrganization", "partner:organizations:read"],
364
- [
365
- "shipmail_update_partner_organization",
366
- "updatePartnerOrganization",
367
- "partner:organizations:write"
368
- ],
369
- [
370
- "shipmail_resend_partner_ownership_invitation",
371
- "resendPartnerOwnershipInvitation",
372
- "partner:organizations:write"
373
- ],
374
- [
375
- "shipmail_suspend_partner_organization",
376
- "suspendPartnerOrganization",
377
- "partner:organizations:write"
378
- ],
379
- [
380
- "shipmail_resume_partner_organization",
381
- "resumePartnerOrganization",
382
- "partner:organizations:write"
383
- ],
384
- [
385
- "shipmail_offboard_partner_organization",
386
- "offboardPartnerOrganization",
387
- "partner:organizations:write"
388
- ],
389
- [
390
- "shipmail_list_partner_mailbox_credential_grants",
391
- "listPartnerMailboxCredentialGrants",
392
- "partner:mailbox_credentials:issue"
393
- ],
394
- [
395
- "shipmail_consume_partner_mailbox_credential_grant",
396
- "consumePartnerMailboxCredentialGrant",
397
- "partner:mailbox_credentials:issue"
398
- ],
399
- ["shipmail_get_partner_usage", "getPartnerUsage", "partner:usage:read"]
342
+ ["shipmail_delete_booking_page", "deleteBookingPage", "booking_pages:write"]
400
343
  ];
401
344
  var MEMBER_GROUPS = new Set(
402
345
  MCP_MEMBER_PERMISSION_GROUP_NAMES
@@ -405,14 +348,12 @@ var DESTRUCTIVE_PREFIXES = [
405
348
  "shipmail_delete_",
406
349
  "shipmail_remove_",
407
350
  "shipmail_revoke_",
408
- "shipmail_offboard_",
409
351
  "shipmail_cancel_"
410
352
  ];
411
353
  var DESTRUCTIVE_TOOLS = /* @__PURE__ */ new Set([
412
354
  "shipmail_create_mailbox_app_password",
413
355
  "shipmail_create_mailbox_export",
414
356
  "shipmail_rotate_webhook_secret",
415
- "shipmail_consume_partner_mailbox_credential_grant",
416
357
  "shipmail_rotate_audience_feed",
417
358
  "shipmail_revoke_audience_feed"
418
359
  ]);
@@ -459,7 +400,6 @@ var OPEN_WORLD_READ_SCOPES = /* @__PURE__ */ new Set([
459
400
  ]);
460
401
  function permissionGroupFor(toolName, requiredScope) {
461
402
  if (requiredScope === "public") return "account_status";
462
- if (requiredScope.startsWith("partner:")) return "partner_admin";
463
403
  if (requiredScope.startsWith("domains:")) return "domain_admin";
464
404
  if (requiredScope.startsWith("mailbox_credentials:")) return "credentials";
465
405
  if (requiredScope.startsWith("mailbox_forwarding:")) return "forwarding";
@@ -500,7 +440,7 @@ function recipientControlFor(toolName) {
500
440
  }
501
441
  function durationFor(toolName) {
502
442
  if (toolName === "shipmail_run_automation") return "one_shot";
503
- if (toolName.includes("app_password") || toolName.includes("credential_grant") || toolName === "shipmail_rotate_webhook_secret") {
443
+ if (toolName.includes("app_password") || toolName === "shipmail_rotate_webhook_secret") {
504
444
  return "credential";
505
445
  }
506
446
  if (toolName.includes("forwarding") || toolName.includes("mailbox_rule") || toolName.includes("webhook") || toolName.includes("booking_page") || toolName.includes("automation")) {
@@ -513,7 +453,7 @@ function durationFor(toolName) {
513
453
  }
514
454
  function idempotencyFor(toolName, effect) {
515
455
  if (effect === "read") return "none";
516
- if (toolName === "shipmail_create_mailbox_app_password" || toolName === "shipmail_consume_partner_mailbox_credential_grant" || toolName === "shipmail_prepare_newsletter_asset_upload" || toolName === "shipmail_prepare_staged_attachment_upload") {
456
+ if (toolName === "shipmail_create_mailbox_app_password" || toolName === "shipmail_prepare_newsletter_asset_upload" || toolName === "shipmail_prepare_staged_attachment_upload") {
517
457
  return "forbidden";
518
458
  }
519
459
  if (DESTRUCTIVE_PREFIXES.some((prefix) => toolName.startsWith(prefix)) || toolName.startsWith("shipmail_suspend_") || toolName.startsWith("shipmail_resume_")) {
@@ -544,7 +484,7 @@ function defineCapability(row) {
544
484
  },
545
485
  auditAction: effect === "read" ? null : "api.mutation",
546
486
  transports: {
547
- hostedOAuth: permissionGroup !== "partner_admin",
487
+ hostedOAuth: true,
548
488
  directApiKeyHttp: true,
549
489
  stdio: toolName !== "shipmail_compose_message_with_file" && toolName !== "shipmail_upload_newsletter_asset_with_file"
550
490
  }