shipmail-mcp 0.2.10 → 0.3.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.
package/README.md CHANGED
@@ -181,18 +181,18 @@ Once connected, ask your agent:
181
181
 
182
182
  All tools are namespaced with `shipmail_` to avoid collisions with peer MCP servers.
183
183
 
184
- | Group | Tools |
185
- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
186
- | Status | `shipmail_status` |
187
- | 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` |
188
- | 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_forwarding`, `shipmail_create_mailbox_forwarding`, `shipmail_delete_mailbox_forwarding`, `shipmail_list_mailbox_folders`, `shipmail_create_mailbox_folder`, `shipmail_update_mailbox_folder`, `shipmail_delete_mailbox_folder`, `shipmail_list_mailbox_identities`, `shipmail_get_mailbox_rules`, `shipmail_set_mailbox_rules`, `shipmail_reset_mailbox_password`, `shipmail_set_auto_reply`, `shipmail_set_spam_filter`, `shipmail_inject_sandbox_inbound` |
189
- | Mailbox inbox | `shipmail_list_mailbox_inbox_messages`, `shipmail_get_mailbox_inbox_thread`, `shipmail_update_inbox_message`, `shipmail_move_inbox_message`, `shipmail_delete_inbox_message` |
190
- | Messages and threads | `shipmail_list_messages`, `shipmail_get_message`, `shipmail_send_message`, `shipmail_reply_to_message`, `shipmail_list_threads`, `shipmail_get_thread`, `shipmail_reply_to_thread` |
191
- | 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` |
192
- | Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
193
- | 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` |
194
- | 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` |
195
- | 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_get_partner_usage` |
184
+ | Group | Tools |
185
+ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
186
+ | Status | `shipmail_status` |
187
+ | 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` |
188
+ | 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_create_mailbox_folder`, `shipmail_update_mailbox_folder`, `shipmail_delete_mailbox_folder`, `shipmail_list_mailbox_identities`, `shipmail_get_mailbox_rules`, `shipmail_set_mailbox_rules`, `shipmail_reset_mailbox_password`, `shipmail_set_auto_reply`, `shipmail_set_spam_filter`, `shipmail_inject_sandbox_inbound` |
189
+ | Mailbox inbox | `shipmail_list_mailbox_inbox_messages`, `shipmail_get_mailbox_inbox_thread`, `shipmail_update_inbox_message`, `shipmail_move_inbox_message`, `shipmail_delete_inbox_message` |
190
+ | Messages and threads | `shipmail_list_messages`, `shipmail_get_message`, `shipmail_send_message`, `shipmail_reply_to_message`, `shipmail_list_threads`, `shipmail_get_thread`, `shipmail_reply_to_thread` |
191
+ | 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` |
192
+ | Suppressions | `shipmail_list_suppressions`, `shipmail_remove_suppression` |
193
+ | 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` |
194
+ | 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` |
195
+ | 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` |
196
196
 
197
197
  Message send and reply tools accept optional `client_reference`, scalar `metadata`,
198
198
  `source_rfc_message_id`, and validated safe `headers`. `shipmail_list_messages` accepts either a
@@ -200,6 +200,12 @@ Message send and reply tools accept optional `client_reference`, scalar `metadat
200
200
 
201
201
  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.
202
202
 
203
+ App-password creation, revocation, and partner grant consumption are destructive/high-risk tools.
204
+ Creation and grant consumption return a live secret once; revocation disconnects that client
205
+ immediately. Partner grant consumption requires the exact `partner:mailbox_credentials:issue`
206
+ scope and an operator-approved one-time grant. App-password creation and grant consumption do not
207
+ accept idempotency keys.
208
+
203
209
  To restrict the surface, pass `--tools` (overrides `SHIPMAIL_MCP_TOOLS`):
204
210
 
205
211
  ```json
@@ -258,7 +264,7 @@ Shipmail generates the primary credential and never returns it to the partner.
258
264
 
259
265
  - **Tool namespacing**: All tools are prefixed with `shipmail_` to avoid collisions with peer MCP servers in the same host.
260
266
  - **Structured outputs**: Successful tools return both text fallback content and structured MCP `structuredContent`.
261
- - **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.
267
+ - **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.
262
268
  - **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.
263
269
  - **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.
264
270
  - **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.
package/dist/index.js CHANGED
@@ -438,6 +438,39 @@ var mailboxExportSchema = z.object({
438
438
  started_at: z.string().nullable(),
439
439
  completed_at: z.string().nullable()
440
440
  });
441
+ var mailboxAppPasswordSchema = z.object({
442
+ object: z.literal("mailbox_app_password"),
443
+ id: z.string(),
444
+ mailbox_id: z.string(),
445
+ name: z.string(),
446
+ state: z.enum(["pending_create", "active", "pending_revoke", "revoked", "failed"]),
447
+ purpose: z.enum(["operator_client", "partner_embedded_webmail"]),
448
+ expires_at: z.string().nullable(),
449
+ allowed_cidrs: z.array(z.string()),
450
+ last_used_at: z.string().nullable(),
451
+ created_at: z.string(),
452
+ revoked_at: z.string().nullable()
453
+ });
454
+ var createdMailboxAppPasswordSchema = mailboxAppPasswordSchema.extend({
455
+ secret: z.string()
456
+ });
457
+ var partnerMailboxCredentialSchema = createdMailboxAppPasswordSchema.extend({
458
+ operator_notified: z.boolean()
459
+ });
460
+ var partnerMailboxCredentialGrantSchema = z.object({
461
+ object: z.literal("partner_mailbox_credential_grant"),
462
+ id: z.string(),
463
+ partner_organization_id: z.string(),
464
+ organization_id: z.string(),
465
+ organization_name: z.string(),
466
+ external_reference: z.string(),
467
+ operator_email: z.string(),
468
+ mailbox_id: z.string(),
469
+ mailbox_address: z.string(),
470
+ disclosure_version: z.string(),
471
+ expires_at: z.string(),
472
+ consented_at: z.string()
473
+ });
441
474
  var mailboxFolderSchema = z.object({
442
475
  object: z.literal("mailbox_folder"),
443
476
  id: z.string(),
@@ -813,6 +846,26 @@ var domainOutputSchema = z.object({ domain: domainSchema });
813
846
  var domainDnsRecordsOutputSchema = z.object({ dns_records: domainDnsRecordSetSchema });
814
847
  var mailboxOutputSchema = z.object({ mailbox: mailboxSchema });
815
848
  var mailboxExportOutputSchema = z.object({ export: mailboxExportSchema });
849
+ var mailboxAppPasswordOutputSchema = z.object({
850
+ app_password: mailboxAppPasswordSchema
851
+ });
852
+ var createdMailboxAppPasswordOutputSchema = z.object({
853
+ app_password: createdMailboxAppPasswordSchema
854
+ });
855
+ var mailboxAppPasswordsOutputSchema = z.object({
856
+ app_passwords: z.object({
857
+ object: z.literal("list"),
858
+ data: z.array(mailboxAppPasswordSchema)
859
+ })
860
+ });
861
+ var partnerMailboxCredentialOutputSchema = z.object({
862
+ credential: partnerMailboxCredentialSchema
863
+ });
864
+ var partnerMailboxCredentialGrantsOutputSchema = z.object({
865
+ grants: z.object({
866
+ data: z.array(partnerMailboxCredentialGrantSchema)
867
+ })
868
+ });
816
869
  var mailboxFolderOutputSchema = z.object({ folder: mailboxFolderSchema });
817
870
  var mailboxFoldersOutputSchema = z.object({ folders: mailboxFoldersSchema });
818
871
  var mailboxIdentitiesOutputSchema = z.object({ identities: mailboxIdentitiesSchema });
@@ -993,6 +1046,20 @@ var updateMailboxInputSchema = z.object({
993
1046
  display_name: recipientNameSchema.max(200).nullable().describe("New display name, or null to clear."),
994
1047
  idempotency_key: idempotencyKeySchema
995
1048
  });
1049
+ var appPasswordCidrInputSchema = z.union([
1050
+ z.cidrv4("Must be a valid IPv4 CIDR range."),
1051
+ z.cidrv6("Must be a valid IPv6 CIDR range.")
1052
+ ]);
1053
+ var createMailboxAppPasswordInputSchema = z.object({
1054
+ id: idSchema.describe("Mailbox ID."),
1055
+ name: noControlString(100, "name").trim().min(1),
1056
+ expires_at: z.iso.datetime().optional(),
1057
+ allowed_cidrs: z.array(appPasswordCidrInputSchema).max(20).optional()
1058
+ });
1059
+ var revokeMailboxAppPasswordInputSchema = z.object({
1060
+ id: idSchema.describe("Mailbox ID."),
1061
+ app_password_id: idSchema.describe("App password ID.")
1062
+ });
996
1063
  var createMailboxFolderInputSchema = z.object({
997
1064
  id: idSchema,
998
1065
  name: folderNameSchema.describe("Custom folder name to create."),
@@ -2015,6 +2082,12 @@ var resendPartnerInvitationInputSchema = partnerOrganizationByIdInputSchema.exte
2015
2082
  owner_email: emailSchema.optional(),
2016
2083
  idempotency_key: idempotencyKeySchema
2017
2084
  });
2085
+ var consumePartnerMailboxCredentialGrantInputSchema = z.object({
2086
+ grant_id: idSchema.describe("Single-use mailbox credential grant ID."),
2087
+ name: noControlString(100, "name").trim().min(1).optional(),
2088
+ expires_at: z.iso.datetime().optional(),
2089
+ allowed_cidrs: z.array(appPasswordCidrInputSchema).max(20).optional()
2090
+ });
2018
2091
 
2019
2092
  // src/prompts.ts
2020
2093
  var MAILBOX_LOCAL_REGEX = /^[a-zA-Z0-9]([a-zA-Z0-9._-]{0,62}[a-zA-Z0-9])?$/;
@@ -2460,6 +2533,8 @@ var SESSION_LIMITS = {
2460
2533
  shipmail_create_domain: 10,
2461
2534
  shipmail_create_mailbox: 20,
2462
2535
  shipmail_create_mailbox_export: 5,
2536
+ shipmail_create_mailbox_app_password: 10,
2537
+ shipmail_revoke_mailbox_app_password: 20,
2463
2538
  shipmail_create_mailbox_import: 5,
2464
2539
  shipmail_cancel_mailbox_import: 10,
2465
2540
  shipmail_undo_mailbox_import: 10,
@@ -2513,7 +2588,8 @@ var SESSION_LIMITS = {
2513
2588
  shipmail_resend_partner_ownership_invitation: 20,
2514
2589
  shipmail_suspend_partner_organization: 20,
2515
2590
  shipmail_resume_partner_organization: 20,
2516
- shipmail_offboard_partner_organization: 10
2591
+ shipmail_offboard_partner_organization: 10,
2592
+ shipmail_consume_partner_mailbox_credential_grant: 20
2517
2593
  };
2518
2594
  var SESSION_TOTAL_LIMIT = 500;
2519
2595
  var DEBUG_ENABLED = process.env["SHIPMAIL_MCP_DEBUG"] === "1";
@@ -2805,6 +2881,72 @@ function registerTools(server, client, selectedTools) {
2805
2881
  }))
2806
2882
  );
2807
2883
  });
2884
+ registerIfAllowed("shipmail_list_mailbox_app_passwords", () => {
2885
+ server.registerTool(
2886
+ "shipmail_list_mailbox_app_passwords",
2887
+ {
2888
+ title: "List Mailbox App Passwords",
2889
+ description: "List app-password metadata for one mailbox. Secret values are never returned by this read operation.",
2890
+ inputSchema: getByIdInputSchema,
2891
+ outputSchema: mailboxAppPasswordsOutputSchema,
2892
+ annotations: { readOnlyHint: true, openWorldHint: false }
2893
+ },
2894
+ async ({ id }) => runTool(
2895
+ "shipmail_list_mailbox_app_passwords",
2896
+ mailboxAppPasswordsOutputSchema,
2897
+ async () => ({ app_passwords: await client.mailboxes.listAppPasswords(id) })
2898
+ )
2899
+ );
2900
+ });
2901
+ registerIfAllowed("shipmail_create_mailbox_app_password", () => {
2902
+ server.registerTool(
2903
+ "shipmail_create_mailbox_app_password",
2904
+ {
2905
+ title: "Create Mailbox App Password",
2906
+ description: "Create a revocable mailbox credential for an email client. The secret is returned exactly once in this tool result, so only call after explicit operator approval and store it securely.",
2907
+ inputSchema: createMailboxAppPasswordInputSchema,
2908
+ outputSchema: createdMailboxAppPasswordOutputSchema,
2909
+ annotations: {
2910
+ readOnlyHint: false,
2911
+ destructiveHint: true,
2912
+ idempotentHint: false,
2913
+ openWorldHint: false
2914
+ }
2915
+ },
2916
+ async (args) => runTool(
2917
+ "shipmail_create_mailbox_app_password",
2918
+ createdMailboxAppPasswordOutputSchema,
2919
+ async () => ({
2920
+ app_password: await client.mailboxes.createAppPassword(args.id, {
2921
+ name: args.name,
2922
+ ...args.expires_at ? { expires_at: args.expires_at } : {},
2923
+ ...args.allowed_cidrs ? { allowed_cidrs: args.allowed_cidrs } : {}
2924
+ })
2925
+ })
2926
+ )
2927
+ );
2928
+ });
2929
+ registerIfAllowed("shipmail_revoke_mailbox_app_password", () => {
2930
+ server.registerTool(
2931
+ "shipmail_revoke_mailbox_app_password",
2932
+ {
2933
+ title: "Revoke Mailbox App Password",
2934
+ description: "Permanently revoke one mailbox app password. The associated client will lose access immediately.",
2935
+ inputSchema: revokeMailboxAppPasswordInputSchema,
2936
+ outputSchema: acknowledgmentOutputSchema,
2937
+ annotations: {
2938
+ readOnlyHint: false,
2939
+ destructiveHint: true,
2940
+ idempotentHint: true,
2941
+ openWorldHint: false
2942
+ }
2943
+ },
2944
+ async ({ id, app_password_id }) => runTool("shipmail_revoke_mailbox_app_password", acknowledgmentOutputSchema, async () => {
2945
+ await client.mailboxes.revokeAppPassword(id, app_password_id);
2946
+ return { result: { ok: true, id: app_password_id } };
2947
+ })
2948
+ );
2949
+ });
2808
2950
  registerIfAllowed("shipmail_suspend_mailbox", () => {
2809
2951
  server.registerTool(
2810
2952
  "shipmail_suspend_mailbox",
@@ -4819,6 +4961,50 @@ function registerTools(server, client, selectedTools) {
4819
4961
  );
4820
4962
  });
4821
4963
  }
4964
+ registerIfAllowed("shipmail_consume_partner_mailbox_credential_grant", () => {
4965
+ server.registerTool(
4966
+ "shipmail_consume_partner_mailbox_credential_grant",
4967
+ {
4968
+ title: "Consume Partner Mailbox Credential Grant",
4969
+ description: "Consume an operator-approved, single-use grant and issue an embedded-webmail credential. The secret is returned exactly once and the operator is notified. Call only after explicit partner approval.",
4970
+ inputSchema: consumePartnerMailboxCredentialGrantInputSchema,
4971
+ outputSchema: partnerMailboxCredentialOutputSchema,
4972
+ annotations: {
4973
+ readOnlyHint: false,
4974
+ destructiveHint: true,
4975
+ idempotentHint: false,
4976
+ openWorldHint: true
4977
+ }
4978
+ },
4979
+ async (args) => runTool(
4980
+ "shipmail_consume_partner_mailbox_credential_grant",
4981
+ partnerMailboxCredentialOutputSchema,
4982
+ async () => ({
4983
+ credential: await client.partner.consumeMailboxCredentialGrant(args.grant_id, {
4984
+ ...args.name ? { name: args.name } : {},
4985
+ ...args.expires_at ? { expires_at: args.expires_at } : {},
4986
+ ...args.allowed_cidrs ? { allowed_cidrs: args.allowed_cidrs } : {}
4987
+ })
4988
+ })
4989
+ )
4990
+ );
4991
+ });
4992
+ registerIfAllowed("shipmail_list_partner_mailbox_credential_grants", () => {
4993
+ server.registerTool(
4994
+ "shipmail_list_partner_mailbox_credential_grants",
4995
+ {
4996
+ title: "List Partner Mailbox Credential Grants",
4997
+ description: "List active ten-minute mailbox approvals created by operator owners. Grant metadata contains no app-password secret.",
4998
+ outputSchema: partnerMailboxCredentialGrantsOutputSchema,
4999
+ annotations: { readOnlyHint: true, openWorldHint: false }
5000
+ },
5001
+ async () => runTool(
5002
+ "shipmail_list_partner_mailbox_credential_grants",
5003
+ partnerMailboxCredentialGrantsOutputSchema,
5004
+ async () => ({ grants: await client.partner.listMailboxCredentialGrants() })
5005
+ )
5006
+ );
5007
+ });
4822
5008
  registerIfAllowed("shipmail_get_partner_usage", () => {
4823
5009
  server.registerTool(
4824
5010
  "shipmail_get_partner_usage",
@@ -4843,7 +5029,7 @@ function registerTools(server, client, selectedTools) {
4843
5029
  }
4844
5030
 
4845
5031
  // src/version.ts
4846
- var VERSION = "0.2.10";
5032
+ var VERSION = "0.3.0";
4847
5033
 
4848
5034
  // src/server.ts
4849
5035
  var INSTRUCTIONS = `ShipMail MCP exposes business email tools for domains, mailboxes, messages, threads, webhooks, and suppressions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shipmail-mcp",
3
- "version": "0.2.10",
3
+ "version": "0.3.0",
4
4
  "mcpName": "io.github.jcoulaud/shipmail-mcp",
5
5
  "description": "Official Model Context Protocol (MCP) server for Shipmail, a business email provider with REST API, webhooks, and custom-domain inboxes for AI agents.",
6
6
  "type": "module",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@modelcontextprotocol/sdk": "1.29.0",
62
- "shipmail": "0.1.33",
62
+ "shipmail": "0.2.0",
63
63
  "zod": "4.4.3"
64
64
  },
65
65
  "devDependencies": {
package/server.json CHANGED
@@ -6,14 +6,14 @@
6
6
  "url": "https://github.com/jcoulaud/shipmail-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.2.10",
9
+ "version": "0.3.0",
10
10
  "websiteUrl": "https://shipmail.to/docs/mcp",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "shipmail-mcp",
16
- "version": "0.2.10",
16
+ "version": "0.3.0",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
package/smithery.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  # Smithery configuration file: https://smithery.ai/docs/build/project-config/smithery-yaml
2
2
  name: shipmail-mcp
3
- version: 0.2.10
3
+ version: 0.3.0
4
4
  description: Official Shipmail MCP server for AI-agent custom-domain business email inboxes with REST API and webhooks.
5
5
  author: ShipMail
6
6
  repository: https://github.com/jcoulaud/shipmail-mcp