@iterable/mcp 1.0.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.
Files changed (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +318 -0
  3. package/TOOLS.md +133 -0
  4. package/dist/client-detection.d.ts +7 -0
  5. package/dist/client-detection.d.ts.map +1 -0
  6. package/dist/client-detection.js +22 -0
  7. package/dist/client-detection.js.map +1 -0
  8. package/dist/config.d.ts +25 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +74 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/http-headers.d.ts +5 -0
  13. package/dist/http-headers.d.ts.map +1 -0
  14. package/dist/http-headers.js +5 -0
  15. package/dist/http-headers.js.map +1 -0
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +43 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/install.d.ts +41 -0
  21. package/dist/install.d.ts.map +1 -0
  22. package/dist/install.js +725 -0
  23. package/dist/install.js.map +1 -0
  24. package/dist/key-manager.d.ts +236 -0
  25. package/dist/key-manager.d.ts.map +1 -0
  26. package/dist/key-manager.js +776 -0
  27. package/dist/key-manager.js.map +1 -0
  28. package/dist/keys-cli.d.ts +8 -0
  29. package/dist/keys-cli.d.ts.map +1 -0
  30. package/dist/keys-cli.js +487 -0
  31. package/dist/keys-cli.js.map +1 -0
  32. package/dist/prompts.d.ts +15 -0
  33. package/dist/prompts.d.ts.map +1 -0
  34. package/dist/prompts.js +66 -0
  35. package/dist/prompts.js.map +1 -0
  36. package/dist/schema-utils.d.ts +22 -0
  37. package/dist/schema-utils.d.ts.map +1 -0
  38. package/dist/schema-utils.js +65 -0
  39. package/dist/schema-utils.js.map +1 -0
  40. package/dist/server.d.ts +13 -0
  41. package/dist/server.d.ts.map +1 -0
  42. package/dist/server.js +172 -0
  43. package/dist/server.js.map +1 -0
  44. package/dist/shutdown.d.ts +5 -0
  45. package/dist/shutdown.d.ts.map +1 -0
  46. package/dist/shutdown.js +68 -0
  47. package/dist/shutdown.js.map +1 -0
  48. package/dist/tool-filter.d.ts +19 -0
  49. package/dist/tool-filter.d.ts.map +1 -0
  50. package/dist/tool-filter.js +144 -0
  51. package/dist/tool-filter.js.map +1 -0
  52. package/dist/tools/campaigns.d.ts +7 -0
  53. package/dist/tools/campaigns.d.ts.map +1 -0
  54. package/dist/tools/campaigns.js +88 -0
  55. package/dist/tools/campaigns.js.map +1 -0
  56. package/dist/tools/catalogs.d.ts +7 -0
  57. package/dist/tools/catalogs.d.ts.map +1 -0
  58. package/dist/tools/catalogs.js +85 -0
  59. package/dist/tools/catalogs.js.map +1 -0
  60. package/dist/tools/events.d.ts +7 -0
  61. package/dist/tools/events.d.ts.map +1 -0
  62. package/dist/tools/events.js +34 -0
  63. package/dist/tools/events.js.map +1 -0
  64. package/dist/tools/experiments.d.ts +7 -0
  65. package/dist/tools/experiments.d.ts.map +1 -0
  66. package/dist/tools/experiments.js +16 -0
  67. package/dist/tools/experiments.js.map +1 -0
  68. package/dist/tools/export.d.ts +7 -0
  69. package/dist/tools/export.d.ts.map +1 -0
  70. package/dist/tools/export.js +41 -0
  71. package/dist/tools/export.js.map +1 -0
  72. package/dist/tools/index.d.ts +19 -0
  73. package/dist/tools/index.d.ts.map +1 -0
  74. package/dist/tools/index.js +44 -0
  75. package/dist/tools/index.js.map +1 -0
  76. package/dist/tools/journeys.d.ts +10 -0
  77. package/dist/tools/journeys.d.ts.map +1 -0
  78. package/dist/tools/journeys.js +25 -0
  79. package/dist/tools/journeys.js.map +1 -0
  80. package/dist/tools/lists.d.ts +7 -0
  81. package/dist/tools/lists.d.ts.map +1 -0
  82. package/dist/tools/lists.js +58 -0
  83. package/dist/tools/lists.js.map +1 -0
  84. package/dist/tools/messaging.d.ts +11 -0
  85. package/dist/tools/messaging.d.ts.map +1 -0
  86. package/dist/tools/messaging.js +103 -0
  87. package/dist/tools/messaging.js.map +1 -0
  88. package/dist/tools/snippets.d.ts +7 -0
  89. package/dist/tools/snippets.d.ts.map +1 -0
  90. package/dist/tools/snippets.js +46 -0
  91. package/dist/tools/snippets.js.map +1 -0
  92. package/dist/tools/subscriptions.d.ts +4 -0
  93. package/dist/tools/subscriptions.d.ts.map +1 -0
  94. package/dist/tools/subscriptions.js +37 -0
  95. package/dist/tools/subscriptions.js.map +1 -0
  96. package/dist/tools/templates.d.ts +7 -0
  97. package/dist/tools/templates.d.ts.map +1 -0
  98. package/dist/tools/templates.js +118 -0
  99. package/dist/tools/templates.js.map +1 -0
  100. package/dist/tools/users.d.ts +10 -0
  101. package/dist/tools/users.d.ts.map +1 -0
  102. package/dist/tools/users.js +74 -0
  103. package/dist/tools/users.js.map +1 -0
  104. package/dist/tools/webhooks.d.ts +7 -0
  105. package/dist/tools/webhooks.d.ts.map +1 -0
  106. package/dist/tools/webhooks.js +22 -0
  107. package/dist/tools/webhooks.js.map +1 -0
  108. package/dist/utils/cli-env.d.ts +11 -0
  109. package/dist/utils/cli-env.d.ts.map +1 -0
  110. package/dist/utils/cli-env.js +32 -0
  111. package/dist/utils/cli-env.js.map +1 -0
  112. package/dist/utils/endpoint-prompt.d.ts +14 -0
  113. package/dist/utils/endpoint-prompt.d.ts.map +1 -0
  114. package/dist/utils/endpoint-prompt.js +73 -0
  115. package/dist/utils/endpoint-prompt.js.map +1 -0
  116. package/dist/utils/formatting.d.ts +10 -0
  117. package/dist/utils/formatting.d.ts.map +1 -0
  118. package/dist/utils/formatting.js +12 -0
  119. package/dist/utils/formatting.js.map +1 -0
  120. package/dist/utils/password-prompt.d.ts +19 -0
  121. package/dist/utils/password-prompt.d.ts.map +1 -0
  122. package/dist/utils/password-prompt.js +37 -0
  123. package/dist/utils/password-prompt.js.map +1 -0
  124. package/dist/utils/sanitize.d.ts +13 -0
  125. package/dist/utils/sanitize.d.ts.map +1 -0
  126. package/dist/utils/sanitize.js +23 -0
  127. package/dist/utils/sanitize.js.map +1 -0
  128. package/dist/utils/tool-config.d.ts +13 -0
  129. package/dist/utils/tool-config.d.ts.map +1 -0
  130. package/dist/utils/tool-config.js +45 -0
  131. package/dist/utils/tool-config.js.map +1 -0
  132. package/dist/utils/ui.d.ts +90 -0
  133. package/dist/utils/ui.d.ts.map +1 -0
  134. package/dist/utils/ui.js +298 -0
  135. package/dist/utils/ui.js.map +1 -0
  136. package/dist/utils/url.d.ts +20 -0
  137. package/dist/utils/url.d.ts.map +1 -0
  138. package/dist/utils/url.js +53 -0
  139. package/dist/utils/url.js.map +1 -0
  140. package/package.json +105 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Consolidated messaging tools for all communication channels
3
+ * Uses factory pattern to eliminate duplication across channels
4
+ */
5
+ import { CancelEmailParamsSchema, GetChannelsParamsSchema, GetEmbeddedMessagesParamsSchema, GetInAppMessagesParamsSchema, GetMessageTypesParamsSchema, SendEmailParamsSchema, SendInAppParamsSchema, SendPushParamsSchema, SendSMSParamsSchema, SendWebPushParamsSchema, SendWhatsAppParamsSchema, } from "@iterable/api";
6
+ import { createTool } from "../schema-utils.js";
7
+ const MESSAGING_CHANNELS = [
8
+ {
9
+ channel: "email",
10
+ displayName: "email",
11
+ sendSchema: SendEmailParamsSchema,
12
+ sendMethodName: "sendEmail",
13
+ cancelMethodName: "cancelEmail",
14
+ },
15
+ {
16
+ channel: "sms",
17
+ displayName: "SMS message",
18
+ sendSchema: SendSMSParamsSchema,
19
+ sendMethodName: "sendSMS",
20
+ cancelMethodName: "cancelSMS",
21
+ },
22
+ {
23
+ channel: "whatsapp",
24
+ displayName: "WhatsApp message",
25
+ sendSchema: SendWhatsAppParamsSchema,
26
+ sendMethodName: "sendWhatsApp",
27
+ cancelMethodName: "cancelWhatsApp",
28
+ },
29
+ {
30
+ channel: "web_push",
31
+ displayName: "web push notification",
32
+ sendSchema: SendWebPushParamsSchema,
33
+ sendMethodName: "sendWebPush",
34
+ cancelMethodName: "cancelWebPush",
35
+ },
36
+ {
37
+ channel: "push",
38
+ displayName: "push notification",
39
+ sendSchema: SendPushParamsSchema,
40
+ sendMethodName: "sendPush",
41
+ cancelMethodName: "cancelPush",
42
+ },
43
+ {
44
+ channel: "in_app",
45
+ displayName: "in-app message",
46
+ sendSchema: SendInAppParamsSchema,
47
+ sendMethodName: "sendInApp",
48
+ cancelMethodName: "cancelInApp",
49
+ },
50
+ ];
51
+ function createMessagingToolsForChannel(config, client) {
52
+ const tools = [
53
+ createTool({
54
+ name: `send_${config.channel}`,
55
+ description: `Send ${config.displayName} to user`,
56
+ schema: config.sendSchema,
57
+ execute: (params) => client[config.sendMethodName](params),
58
+ }),
59
+ ];
60
+ if (config.hasCancel !== false && config.cancelMethodName) {
61
+ tools.push(createTool({
62
+ name: `cancel_${config.channel}`,
63
+ description: `Cancel scheduled ${config.displayName} for specific user`,
64
+ schema: CancelEmailParamsSchema, // All cancel operations use the same schema
65
+ execute: (params) => client[config.cancelMethodName](params),
66
+ }));
67
+ }
68
+ return tools;
69
+ }
70
+ /**
71
+ * Create all messaging tools using the factory pattern
72
+ */
73
+ export function createMessagingTools(client) {
74
+ return [
75
+ // Generate tools for all messaging channels
76
+ ...MESSAGING_CHANNELS.flatMap((config) => createMessagingToolsForChannel(config, client)),
77
+ createTool({
78
+ name: "get_channels",
79
+ description: "Get all available communication channels (email, SMS, push, etc.)",
80
+ schema: GetChannelsParamsSchema,
81
+ execute: () => client.getChannels(),
82
+ }),
83
+ createTool({
84
+ name: "get_message_types",
85
+ description: "Get all message types within the project for use in templates",
86
+ schema: GetMessageTypesParamsSchema,
87
+ execute: () => client.getMessageTypes(),
88
+ }),
89
+ createTool({
90
+ name: "get_in_app_messages",
91
+ description: "Get in-app messages for a user",
92
+ schema: GetInAppMessagesParamsSchema,
93
+ execute: (params) => client.getInAppMessages(params),
94
+ }),
95
+ createTool({
96
+ name: "get_embedded_messages",
97
+ description: "Get embedded messages for a user, grouped by placement ID",
98
+ schema: GetEmbeddedMessagesParamsSchema,
99
+ execute: (params) => client.getEmbeddedMessages(params),
100
+ }),
101
+ ];
102
+ }
103
+ //# sourceMappingURL=messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/tools/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP tools for Iterable snippets operations
3
+ */
4
+ import type { IterableClient } from "@iterable/api";
5
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
6
+ export declare function createSnippetTools(client: IterableClient): Tool[];
7
+ //# sourceMappingURL=snippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../../src/tools/snippets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CA2CjE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * MCP tools for Iterable snippets operations
3
+ */
4
+ import { CreateSnippetRequestSchema, DeleteSnippetParamsSchema, GetSnippetParamsSchema, UpdateSnippetRequestSchema, } from "@iterable/api";
5
+ import { z } from "zod";
6
+ import { createTool } from "../schema-utils.js";
7
+ export function createSnippetTools(client) {
8
+ return [
9
+ createTool({
10
+ name: "get_snippets",
11
+ description: "Get all snippets for the current project",
12
+ schema: z.object({}),
13
+ execute: () => client.getSnippets(),
14
+ }),
15
+ createTool({
16
+ name: "create_snippet",
17
+ description: "Create a new snippet with Handlebars templating support",
18
+ schema: CreateSnippetRequestSchema,
19
+ execute: (params) => client.createSnippet(params),
20
+ }),
21
+ createTool({
22
+ name: "get_snippet",
23
+ description: "Get a snippet by ID (numeric) or name (string)",
24
+ schema: GetSnippetParamsSchema,
25
+ execute: (params) => client.getSnippet(params),
26
+ }),
27
+ createTool({
28
+ name: "update_snippet",
29
+ description: "Update a snippet by ID (numeric) or name (string)",
30
+ schema: z.object({
31
+ identifier: z
32
+ .union([z.string(), z.number()])
33
+ .describe("Snippet ID (numeric) or name (string)"),
34
+ body: UpdateSnippetRequestSchema.describe("Snippet update data"),
35
+ }),
36
+ execute: (params) => client.updateSnippet({ identifier: params.identifier }, params.body),
37
+ }),
38
+ createTool({
39
+ name: "delete_snippet",
40
+ description: "Delete a snippet by ID (numeric) or name (string)",
41
+ schema: DeleteSnippetParamsSchema,
42
+ execute: (params) => client.deleteSnippet(params),
43
+ }),
44
+ ];
45
+ }
46
+ //# sourceMappingURL=snippets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../src/tools/snippets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,0CAA0C;YACvD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,yDAAyD;YACtE,MAAM,EAAE,0BAA0B;YAClC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,gDAAgD;YAC7D,MAAM,EAAE,sBAAsB;YAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;SAC/C,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,UAAU,EAAE,CAAC;qBACV,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;qBAC/B,QAAQ,CAAC,uCAAuC,CAAC;gBACpD,IAAI,EAAE,0BAA0B,CAAC,QAAQ,CAAC,qBAAqB,CAAC;aACjE,CAAC;YACF,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;SACvE,CAAC;QAEF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,yBAAyB;YACjC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IterableClient } from "@iterable/api";
2
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
3
+ export declare function createSubscriptionTools(client: IterableClient): Tool[];
4
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../src/tools/subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG/D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAkCtE"}
@@ -0,0 +1,37 @@
1
+ import { BulkUpdateSubscriptionsParamsSchema, SubscribeUserByEmailParamsSchema, SubscribeUserByUserIdParamsSchema, UnsubscribeUserByEmailParamsSchema, UnsubscribeUserByUserIdParamsSchema, } from "@iterable/api";
2
+ import { createTool } from "../schema-utils.js";
3
+ export function createSubscriptionTools(client) {
4
+ return [
5
+ createTool({
6
+ name: "bulk_update_subscriptions",
7
+ description: "Subscribe or unsubscribe multiple users to/from a subscription group",
8
+ schema: BulkUpdateSubscriptionsParamsSchema,
9
+ execute: (params) => client.bulkUpdateSubscriptions(params),
10
+ }),
11
+ createTool({
12
+ name: "subscribe_user_by_email",
13
+ description: "Subscribe a user to a subscription group by email",
14
+ schema: SubscribeUserByEmailParamsSchema,
15
+ execute: (params) => client.subscribeUserByEmail(params),
16
+ }),
17
+ createTool({
18
+ name: "subscribe_user_by_userid",
19
+ description: "Subscribe a user to a subscription group by userId",
20
+ schema: SubscribeUserByUserIdParamsSchema,
21
+ execute: (params) => client.subscribeUserByUserId(params),
22
+ }),
23
+ createTool({
24
+ name: "unsubscribe_user_by_email",
25
+ description: "Unsubscribe a user from a subscription group by email",
26
+ schema: UnsubscribeUserByEmailParamsSchema,
27
+ execute: (params) => client.unsubscribeUserByEmail(params),
28
+ }),
29
+ createTool({
30
+ name: "unsubscribe_user_by_userid",
31
+ description: "Unsubscribe a user from a subscription group by userId",
32
+ schema: UnsubscribeUserByUserIdParamsSchema,
33
+ execute: (params) => client.unsubscribeUserByUserId(params),
34
+ }),
35
+ ];
36
+ }
37
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../src/tools/subscriptions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,2BAA2B;YACjC,WAAW,EACT,sEAAsE;YACxE,MAAM,EAAE,mCAAmC;YAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;SAC5D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,mDAAmD;YAChE,MAAM,EAAE,gCAAgC;YACxC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC;SACzD,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,oDAAoD;YACjE,MAAM,EAAE,iCAAiC;YACzC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC;SAC1D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,uDAAuD;YACpE,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC;SAC3D,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,wDAAwD;YACrE,MAAM,EAAE,mCAAmC;YAC3C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;SAC5D,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP tools for Iterable template operations
3
+ */
4
+ import type { IterableClient } from "@iterable/api";
5
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
6
+ export declare function createTemplateTools(client: IterableClient): Tool[];
7
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiBpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAoH/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CA4BlE"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * MCP tools for Iterable template operations
3
+ */
4
+ import { BulkDeleteTemplatesParamsSchema, GetTemplateByClientIdParamsSchema, GetTemplateParamsSchema, GetTemplatesParamsSchema, PreviewTemplateParamsSchema, TemplateProofRequestSchema, UpdateEmailTemplateParamsSchema, UpdateInAppTemplateParamsSchema, UpdatePushTemplateParamsSchema, UpdateSMSTemplateParamsSchema, UpsertEmailTemplateParamsSchema, UpsertInAppTemplateParamsSchema, UpsertPushTemplateParamsSchema, UpsertSMSTemplateParamsSchema, } from "@iterable/api";
5
+ import { createTool } from "../schema-utils.js";
6
+ const TEMPLATE_TYPES = [
7
+ {
8
+ type: "email",
9
+ displayName: "email",
10
+ upsertSchema: UpsertEmailTemplateParamsSchema,
11
+ updateSchema: UpdateEmailTemplateParamsSchema,
12
+ getMethodName: "getEmailTemplate",
13
+ upsertMethodName: "upsertEmailTemplate",
14
+ updateMethodName: "updateEmailTemplate",
15
+ proofMethodName: "sendEmailTemplateProof",
16
+ previewMethodName: "previewEmailTemplate",
17
+ getParamsTransform: (params) => params.templateId, // Email uses just templateId
18
+ },
19
+ {
20
+ type: "sms",
21
+ displayName: "SMS",
22
+ upsertSchema: UpsertSMSTemplateParamsSchema,
23
+ updateSchema: UpdateSMSTemplateParamsSchema,
24
+ getMethodName: "getSMSTemplate",
25
+ upsertMethodName: "upsertSMSTemplate",
26
+ updateMethodName: "updateSMSTemplate",
27
+ proofMethodName: "sendSMSTemplateProof",
28
+ },
29
+ {
30
+ type: "push",
31
+ displayName: "push notification",
32
+ upsertSchema: UpsertPushTemplateParamsSchema,
33
+ updateSchema: UpdatePushTemplateParamsSchema,
34
+ getMethodName: "getPushTemplate",
35
+ upsertMethodName: "upsertPushTemplate",
36
+ updateMethodName: "updatePushTemplate",
37
+ proofMethodName: "sendPushTemplateProof",
38
+ },
39
+ {
40
+ type: "inapp",
41
+ displayName: "in-app message",
42
+ upsertSchema: UpsertInAppTemplateParamsSchema,
43
+ updateSchema: UpdateInAppTemplateParamsSchema,
44
+ getMethodName: "getInAppTemplate",
45
+ upsertMethodName: "upsertInAppTemplate",
46
+ updateMethodName: "updateInAppTemplate",
47
+ proofMethodName: "sendInAppTemplateProof",
48
+ previewMethodName: "previewInAppTemplate",
49
+ },
50
+ ];
51
+ function createTemplateToolsForType(config, client) {
52
+ const tools = [
53
+ createTool({
54
+ name: `get_${config.type}_template`,
55
+ description: `Get details for specific ${config.displayName} template by ID`,
56
+ schema: GetTemplateParamsSchema,
57
+ execute: (params) => {
58
+ const methodParams = config.getParamsTransform
59
+ ? config.getParamsTransform(params)
60
+ : params;
61
+ return client[config.getMethodName](methodParams);
62
+ },
63
+ }),
64
+ createTool({
65
+ name: `upsert_${config.type}_template`,
66
+ description: `Create or update ${config.displayName} template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.`,
67
+ schema: config.upsertSchema,
68
+ execute: (params) => client[config.upsertMethodName](params),
69
+ }),
70
+ createTool({
71
+ name: `update_${config.type}_template`,
72
+ description: `Update existing ${config.displayName} template by templateId`,
73
+ schema: config.updateSchema,
74
+ execute: (params) => client[config.updateMethodName](params),
75
+ }),
76
+ createTool({
77
+ name: `send_${config.type}_template_proof`,
78
+ description: `Send a proof of a ${config.displayName} template to a specific user`,
79
+ schema: TemplateProofRequestSchema,
80
+ execute: (params) => client[config.proofMethodName](params),
81
+ }),
82
+ ];
83
+ if (config.previewMethodName) {
84
+ tools.push(createTool({
85
+ name: `preview_${config.type}_template`,
86
+ description: `Preview ${config.displayName} template with custom data. Returns fully rendered HTML with user, event, and/or data feed data substituted.`,
87
+ schema: PreviewTemplateParamsSchema,
88
+ execute: (params) => client[config.previewMethodName](params),
89
+ }));
90
+ }
91
+ return tools;
92
+ }
93
+ export function createTemplateTools(client) {
94
+ return [
95
+ // General template tools
96
+ createTool({
97
+ name: "get_templates",
98
+ description: "Retrieve templates",
99
+ schema: GetTemplatesParamsSchema,
100
+ execute: (params) => client.getTemplates(params),
101
+ }),
102
+ createTool({
103
+ name: "get_template_by_client_id",
104
+ description: "Get template by client template ID",
105
+ schema: GetTemplateByClientIdParamsSchema,
106
+ execute: (params) => client.getTemplateByClientId(params.clientTemplateId),
107
+ }),
108
+ createTool({
109
+ name: "delete_templates",
110
+ description: "Delete one or more templates by ID",
111
+ schema: BulkDeleteTemplatesParamsSchema,
112
+ execute: (params) => client.deleteTemplates(params.ids),
113
+ }),
114
+ // Generate tools for all template types using configuration-driven approach
115
+ ...TEMPLATE_TYPES.flatMap((config) => createTemplateToolsForType(config, client)),
116
+ ];
117
+ }
118
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * MCP tools for Iterable user operations
3
+ */
4
+ import type { IterableClient } from "@iterable/api";
5
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
6
+ /**
7
+ * Create all user management tools
8
+ */
9
+ export declare function createUserTools(client: IterableClient): Tool[];
10
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAYpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAK/D;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAqE9D"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * MCP tools for Iterable user operations
3
+ */
4
+ import { BulkUpdateUsersParamsSchema, DeleteUserByEmailParamsSchema, DeleteUserByUserIdParamsSchema, GetSentMessagesParamsSchema, GetUserByEmailParamsSchema, GetUserByIdParamsSchema, UpdateEmailParamsSchema, UpdateUserParamsSchema, UpdateUserSubscriptionsParamsSchema, } from "@iterable/api";
5
+ import { z } from "zod";
6
+ import { createTool } from "../schema-utils.js";
7
+ /**
8
+ * Create all user management tools
9
+ */
10
+ export function createUserTools(client) {
11
+ return [
12
+ createTool({
13
+ name: "get_user_by_email",
14
+ description: "Get user profile information by email address",
15
+ schema: GetUserByEmailParamsSchema,
16
+ execute: (params) => client.getUserByEmail(params.email),
17
+ }),
18
+ createTool({
19
+ name: "get_user_by_user_id",
20
+ description: "Get user profile information by user ID",
21
+ schema: GetUserByIdParamsSchema,
22
+ execute: (params) => client.getUserByUserId(params.userId),
23
+ }),
24
+ createTool({
25
+ name: "update_user",
26
+ description: "Update user profile information (accepts email OR userId in params)",
27
+ schema: UpdateUserParamsSchema,
28
+ execute: (params) => client.updateUser(params),
29
+ }),
30
+ createTool({
31
+ name: "delete_user_by_email",
32
+ description: "Delete a user by email address (asynchronous - does not prevent future data collection)",
33
+ schema: DeleteUserByEmailParamsSchema,
34
+ execute: (params) => client.deleteUserByEmail(params.email),
35
+ }),
36
+ createTool({
37
+ name: "delete_user_by_user_id",
38
+ description: "Delete a user by user ID (asynchronous - does not prevent future data collection, deletes all users with same userId)",
39
+ schema: DeleteUserByUserIdParamsSchema,
40
+ execute: (params) => client.deleteUserByUserId(params.userId),
41
+ }),
42
+ createTool({
43
+ name: "update_email",
44
+ description: "Update a user's email address (only use with email-based projects; for userId/hybrid projects, use update_user instead)",
45
+ schema: UpdateEmailParamsSchema,
46
+ execute: (params) => client.updateEmail(params),
47
+ }),
48
+ createTool({
49
+ name: "update_user_subscriptions",
50
+ description: "Update user subscriptions (IMPORTANT: overwrites existing data for any non-null fields specified)",
51
+ schema: UpdateUserSubscriptionsParamsSchema,
52
+ execute: (params) => client.updateUserSubscriptions(params),
53
+ }),
54
+ createTool({
55
+ name: "bulk_update_users",
56
+ description: "Update multiple users at once",
57
+ schema: BulkUpdateUsersParamsSchema,
58
+ execute: (params) => client.bulkUpdateUsers(params),
59
+ }),
60
+ createTool({
61
+ name: "get_sent_messages",
62
+ description: "Get messages sent to a specific user with optional filtering",
63
+ schema: GetSentMessagesParamsSchema,
64
+ execute: (params) => client.getSentMessages(params),
65
+ }),
66
+ createTool({
67
+ name: "get_user_fields",
68
+ description: "Get all user profile field definitions and their types",
69
+ schema: z.object({}),
70
+ execute: () => client.getUserFields(),
71
+ }),
72
+ ];
73
+ }
74
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/tools/users.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP tools for Iterable webhook operations
3
+ */
4
+ import type { IterableClient } from "@iterable/api";
5
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
6
+ export declare function createWebhookTools(client: IterableClient): Tool[];
7
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,CAejE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * MCP tools for Iterable webhook operations
3
+ */
4
+ import { GetWebhooksParamsSchema, UpdateWebhookParamsSchema, } from "@iterable/api";
5
+ import { createTool } from "../schema-utils.js";
6
+ export function createWebhookTools(client) {
7
+ return [
8
+ createTool({
9
+ name: "get_webhooks",
10
+ description: "Get all webhooks for the project",
11
+ schema: GetWebhooksParamsSchema,
12
+ execute: () => client.getWebhooks(),
13
+ }),
14
+ createTool({
15
+ name: "update_webhook",
16
+ description: "Update a webhook configuration",
17
+ schema: UpdateWebhookParamsSchema,
18
+ execute: (params) => client.updateWebhook(params),
19
+ }),
20
+ ];
21
+ }
22
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,OAAO;QACL,UAAU,CAAC;YACT,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,uBAAuB;YAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,UAAU,CAAC;YACT,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,gCAAgC;YAC7C,MAAM,EAAE,yBAAyB;YACjC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SAClD,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare function isTestEnv(): boolean;
2
+ type Spinner = {
3
+ start: (msg?: string) => void;
4
+ stop: () => void;
5
+ succeed: (msg?: string) => void;
6
+ fail: (msg?: string) => void;
7
+ };
8
+ export declare function getSpinner(): Promise<Spinner>;
9
+ export declare function loadUi(): Promise<any>;
10
+ export {};
11
+ //# sourceMappingURL=cli-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-env.d.ts","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,KAAK,OAAO,GAAG;IAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAElI,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAUnD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAe3C"}
@@ -0,0 +1,32 @@
1
+ export function isTestEnv() {
2
+ return process.env.NODE_ENV === "test";
3
+ }
4
+ export async function getSpinner() {
5
+ if (isTestEnv()) {
6
+ return { start: () => { }, stop: () => { }, succeed: () => { }, fail: () => { } };
7
+ }
8
+ try {
9
+ const ora = (await import("ora")).default;
10
+ return ora();
11
+ }
12
+ catch {
13
+ return { start: () => { }, stop: () => { }, succeed: () => { }, fail: () => { } };
14
+ }
15
+ }
16
+ export async function loadUi() {
17
+ if (isTestEnv()) {
18
+ return {
19
+ createTable: () => ({ push: () => { }, toString: () => "" }),
20
+ formatKeyValue: (_k, v, _c) => v,
21
+ icons: { key: "", globe: "", zap: "" },
22
+ showBox: () => { },
23
+ showError: () => { },
24
+ showInfo: () => { },
25
+ showIterableLogo: () => { },
26
+ showSection: () => { },
27
+ showSuccess: () => { },
28
+ };
29
+ }
30
+ return await import("./ui.js");
31
+ }
32
+ //# sourceMappingURL=cli-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-env.js","sourceRoot":"","sources":["../../src/utils/cli-env.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AACzC,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO;YACL,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,cAAc,EAAE,CAAC,EAAU,EAAE,CAAS,EAAE,EAAQ,EAAE,EAAE,CAAC,CAAC;YACtD,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACtC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;YACnB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;YAClB,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC;YAC1B,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;YACrB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;SACtB,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface EndpointPromptDeps {
2
+ inquirer: any;
3
+ icons: {
4
+ globe?: string;
5
+ };
6
+ chalk: any;
7
+ showError: (message: string) => void;
8
+ }
9
+ /**
10
+ * Prompt user to select Iterable region or provide a custom endpoint.
11
+ * Returns the validated base URL string.
12
+ */
13
+ export declare function promptForIterableBaseUrl(deps: EndpointPromptDeps): Promise<string>;
14
+ //# sourceMappingURL=endpoint-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-prompt.d.ts","sourceRoot":"","sources":["../../src/utils/endpoint-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmExF"}