@qikdev/mcp 6.6.48 ā 6.7.1
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 +26 -41
- package/build/src/tools/campaign.d.ts +41 -0
- package/build/src/tools/campaign.d.ts.map +1 -0
- package/build/src/tools/campaign.js +331 -0
- package/build/src/tools/campaign.js.map +1 -0
- package/build/src/tools/checkin.d.ts +25 -0
- package/build/src/tools/checkin.d.ts.map +1 -0
- package/build/src/tools/checkin.js +199 -0
- package/build/src/tools/checkin.js.map +1 -0
- package/build/src/tools/definition.d.ts +90 -0
- package/build/src/tools/definition.d.ts.map +1 -0
- package/build/src/tools/definition.js +803 -0
- package/build/src/tools/definition.js.map +1 -0
- package/build/src/tools/filters.d.ts +11 -0
- package/build/src/tools/filters.d.ts.map +1 -0
- package/build/src/tools/filters.js +146 -0
- package/build/src/tools/filters.js.map +1 -0
- package/build/src/tools/glossary.d.ts +9 -0
- package/build/src/tools/glossary.d.ts.map +1 -1
- package/build/src/tools/glossary.js +200 -23
- package/build/src/tools/glossary.js.map +1 -1
- package/build/src/tools/index.d.ts.map +1 -1
- package/build/src/tools/index.js +56 -1
- package/build/src/tools/index.js.map +1 -1
- package/build/src/tools/list.d.ts.map +1 -1
- package/build/src/tools/list.js +41 -1
- package/build/src/tools/list.js.map +1 -1
- package/build/src/tools/relationships.d.ts +11 -0
- package/build/src/tools/relationships.d.ts.map +1 -0
- package/build/src/tools/relationships.js +130 -0
- package/build/src/tools/relationships.js.map +1 -0
- package/build/src/tools/reporting.d.ts +22 -0
- package/build/src/tools/reporting.d.ts.map +1 -0
- package/build/src/tools/reporting.js +219 -0
- package/build/src/tools/reporting.js.map +1 -0
- package/build/src/tools/sms.d.ts +13 -0
- package/build/src/tools/sms.d.ts.map +1 -0
- package/build/src/tools/sms.js +128 -0
- package/build/src/tools/sms.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,53 +22,38 @@ A comprehensive Model Context Protocol (MCP) server for the Qik platform, enabli
|
|
|
22
22
|
- **Scope and Permission Awareness**: Respects content scopes and user permissions
|
|
23
23
|
- **Batch Operations**: Supports efficient bulk operations where available
|
|
24
24
|
|
|
25
|
-
## š¦
|
|
25
|
+
## š¦ Quick Start
|
|
26
|
+
|
|
27
|
+
Just run:
|
|
26
28
|
|
|
27
29
|
```bash
|
|
28
|
-
|
|
30
|
+
npx @qikdev/mcp setup
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
This interactive setup will:
|
|
34
|
+
1. Prompt you for your Qik API access token
|
|
35
|
+
2. Validate your token against the Qik API
|
|
36
|
+
3. Automatically configure Claude Desktop to use the MCP server
|
|
37
|
+
|
|
38
|
+
That's it! Restart Claude Desktop and you're ready to go.
|
|
39
|
+
|
|
40
|
+
## š§ Getting Your Access Token
|
|
41
|
+
|
|
42
|
+
1. Log in to your Qik dashboard at https://app.qik.dev
|
|
43
|
+
2. Navigate to Settings ā API Access
|
|
44
|
+
3. Generate a new access token
|
|
45
|
+
4. Copy the token and paste it when prompted during setup
|
|
46
|
+
|
|
47
|
+
## š CLI Commands
|
|
32
48
|
|
|
33
|
-
### Quick Setup
|
|
34
49
|
```bash
|
|
35
|
-
|
|
50
|
+
npx @qikdev/mcp setup # Initial setup (interactive)
|
|
51
|
+
npx @qikdev/mcp status # Check configuration status
|
|
52
|
+
npx @qikdev/mcp update-token # Update your access token
|
|
53
|
+
npx @qikdev/mcp install # Add to Claude Desktop config
|
|
54
|
+
npx @qikdev/mcp remove # Remove from Claude Desktop config
|
|
36
55
|
```
|
|
37
56
|
|
|
38
|
-
This will guide you through:
|
|
39
|
-
1. Entering your Qik API access token
|
|
40
|
-
2. Configuring your API URL (defaults to https://api.qik.dev)
|
|
41
|
-
3. Automatically adding the server to your MCP configuration
|
|
42
|
-
|
|
43
|
-
### Manual Setup
|
|
44
|
-
|
|
45
|
-
1. **Get your Qik API Access Token**:
|
|
46
|
-
- Log in to your Qik dashboard at https://app.qik.dev
|
|
47
|
-
- Navigate to Settings ā API Access
|
|
48
|
-
- Generate a new access token
|
|
49
|
-
|
|
50
|
-
2. **Configure Environment Variables**:
|
|
51
|
-
```bash
|
|
52
|
-
export QIK_ACCESS_TOKEN="your_access_token_here"
|
|
53
|
-
export QIK_API_URL="https://api.qik.dev" # Optional, defaults to this
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
3. **Add to MCP Configuration**:
|
|
57
|
-
Add this to your MCP settings file:
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"mcpServers": {
|
|
61
|
-
"qik": {
|
|
62
|
-
"command": "npx",
|
|
63
|
-
"args": ["@qikdev/mcp", "run"],
|
|
64
|
-
"env": {
|
|
65
|
-
"NODE_ENV": "production"
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
57
|
## š ļø Available Tools
|
|
73
58
|
|
|
74
59
|
### Authentication & Session
|
|
@@ -193,10 +178,10 @@ The server automatically caches glossary data for 5 minutes to improve performan
|
|
|
193
178
|
### Authentication Issues
|
|
194
179
|
```bash
|
|
195
180
|
# Check your token status
|
|
196
|
-
|
|
181
|
+
npx @qikdev/mcp status
|
|
197
182
|
|
|
198
183
|
# Reconfigure if needed
|
|
199
|
-
|
|
184
|
+
npx @qikdev/mcp setup
|
|
200
185
|
```
|
|
201
186
|
|
|
202
187
|
### Common Issues
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const getCampaignRecipientsTool: Tool;
|
|
3
|
+
export declare const getCampaignAnalyticsTool: Tool;
|
|
4
|
+
export declare const sendCampaignTool: Tool;
|
|
5
|
+
export declare const sendTestCampaignTool: Tool;
|
|
6
|
+
export declare function handleGetCampaignRecipients(args: {
|
|
7
|
+
campaignId: string;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
content: Array<{
|
|
10
|
+
type: string;
|
|
11
|
+
text: string;
|
|
12
|
+
}>;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function handleGetCampaignAnalytics(args: {
|
|
15
|
+
campaignId: string;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
content: Array<{
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}>;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function handleSendCampaign(args: {
|
|
23
|
+
campaignId: string;
|
|
24
|
+
scheduleDate?: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
content: Array<{
|
|
27
|
+
type: string;
|
|
28
|
+
text: string;
|
|
29
|
+
}>;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function handleSendTestCampaign(args: {
|
|
32
|
+
campaignId: string;
|
|
33
|
+
profileIds?: string[];
|
|
34
|
+
emails?: string[];
|
|
35
|
+
}): Promise<{
|
|
36
|
+
content: Array<{
|
|
37
|
+
type: string;
|
|
38
|
+
text: string;
|
|
39
|
+
}>;
|
|
40
|
+
}>;
|
|
41
|
+
//# sourceMappingURL=campaign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign.d.ts","sourceRoot":"","sources":["../../../src/tools/campaign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI1D,eAAO,MAAM,yBAAyB,EAAE,IAmBvC,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,IAoBtC,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,IAwB9B,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,IA4BlC,CAAC;AAGF,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2E3I;AAGD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAoD1I;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAsDzJ;AAGD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2EhL"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { ConfigManager } from "../config.js";
|
|
2
|
+
// Tool for previewing campaign recipients
|
|
3
|
+
export const getCampaignRecipientsTool = {
|
|
4
|
+
name: "get_campaign_recipients",
|
|
5
|
+
description: `Preview who would receive a campaign before sending.
|
|
6
|
+
|
|
7
|
+
Returns profiles that match the campaign's targeting criteria:
|
|
8
|
+
- **valid**: Profiles with email addresses who will receive the campaign
|
|
9
|
+
- **invalid**: Profiles without email or who already received it
|
|
10
|
+
|
|
11
|
+
Use this before publishing to verify targeting is correct.`,
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: "object",
|
|
14
|
+
properties: {
|
|
15
|
+
campaignId: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "The campaign ID to preview recipients for"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
required: ["campaignId"]
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
// Tool for getting campaign analytics
|
|
24
|
+
export const getCampaignAnalyticsTool = {
|
|
25
|
+
name: "get_campaign_analytics",
|
|
26
|
+
description: `Get email campaign performance metrics.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
- **total**: Number of emails sent
|
|
30
|
+
- **opened**: Number of emails opened (tracked via read receipts)
|
|
31
|
+
- **clicked**: Number of emails with link clicks
|
|
32
|
+
|
|
33
|
+
Use this to measure campaign effectiveness after sending.`,
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: "object",
|
|
36
|
+
properties: {
|
|
37
|
+
campaignId: {
|
|
38
|
+
type: "string",
|
|
39
|
+
description: "The campaign ID to get analytics for"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
required: ["campaignId"]
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
// Tool for publishing/sending a campaign
|
|
46
|
+
export const sendCampaignTool = {
|
|
47
|
+
name: "send_campaign",
|
|
48
|
+
description: `Publish and send an email campaign to its recipients.
|
|
49
|
+
|
|
50
|
+
Campaign must be in 'draft' state with valid recipients.
|
|
51
|
+
Can schedule for later or send immediately.
|
|
52
|
+
|
|
53
|
+
**States:** draft ā scheduled/processing ā sent
|
|
54
|
+
|
|
55
|
+
**IMPORTANT:** This will send real emails. Use get_campaign_recipients first to verify targeting.`,
|
|
56
|
+
inputSchema: {
|
|
57
|
+
type: "object",
|
|
58
|
+
properties: {
|
|
59
|
+
campaignId: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "The campaign ID to publish"
|
|
62
|
+
},
|
|
63
|
+
scheduleDate: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "ISO date string to schedule sending (optional - sends immediately if omitted)"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
required: ["campaignId"]
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
// Tool for sending test emails
|
|
72
|
+
export const sendTestCampaignTool = {
|
|
73
|
+
name: "send_test_campaign",
|
|
74
|
+
description: `Send test email(s) from a campaign to specific recipients.
|
|
75
|
+
|
|
76
|
+
Test emails have [TEST] prefix in subject line.
|
|
77
|
+
Use this to preview how the email looks before publishing to all recipients.
|
|
78
|
+
|
|
79
|
+
Provide either profile IDs or raw email addresses.`,
|
|
80
|
+
inputSchema: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
campaignId: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description: "The campaign ID to send test from"
|
|
86
|
+
},
|
|
87
|
+
profileIds: {
|
|
88
|
+
type: "array",
|
|
89
|
+
items: { type: "string" },
|
|
90
|
+
description: "Profile IDs to send test email to"
|
|
91
|
+
},
|
|
92
|
+
emails: {
|
|
93
|
+
type: "array",
|
|
94
|
+
items: { type: "string" },
|
|
95
|
+
description: "Raw email addresses to send test to"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
required: ["campaignId"]
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
// Handler for get_campaign_recipients
|
|
102
|
+
export async function handleGetCampaignRecipients(args) {
|
|
103
|
+
try {
|
|
104
|
+
const configManager = new ConfigManager();
|
|
105
|
+
const config = await configManager.loadConfig();
|
|
106
|
+
if (!config) {
|
|
107
|
+
throw new Error('Qik MCP server not configured. Run setup first.');
|
|
108
|
+
}
|
|
109
|
+
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/campaign/${args.campaignId}/preflight`, {
|
|
110
|
+
headers: {
|
|
111
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
112
|
+
'Content-Type': 'application/json',
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
if (!response.ok) {
|
|
116
|
+
const errorText = await response.text();
|
|
117
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
118
|
+
}
|
|
119
|
+
const data = await response.json();
|
|
120
|
+
const { recipients } = data;
|
|
121
|
+
let resultText = `# Campaign Recipients Preview\n\n`;
|
|
122
|
+
resultText += `## Summary\n`;
|
|
123
|
+
resultText += `- **Valid recipients**: ${recipients.valid.total}\n`;
|
|
124
|
+
resultText += `- **Invalid recipients**: ${recipients.invalid.total}\n\n`;
|
|
125
|
+
if (recipients.valid.total > 0) {
|
|
126
|
+
resultText += `## Valid Recipients (first 10)\n\n`;
|
|
127
|
+
const validSample = recipients.valid.profiles.slice(0, 10);
|
|
128
|
+
for (const profile of validSample) {
|
|
129
|
+
const name = [profile.firstName, profile.lastName].filter(Boolean).join(' ') || 'Unknown';
|
|
130
|
+
const email = profile.emails?.[0] || 'No email';
|
|
131
|
+
resultText += `- ${name} (${email})\n`;
|
|
132
|
+
}
|
|
133
|
+
if (recipients.valid.total > 10) {
|
|
134
|
+
resultText += `- ... and ${recipients.valid.total - 10} more\n`;
|
|
135
|
+
}
|
|
136
|
+
resultText += '\n';
|
|
137
|
+
}
|
|
138
|
+
if (recipients.invalid.total > 0) {
|
|
139
|
+
resultText += `## Invalid Recipients (first 10)\n\n`;
|
|
140
|
+
const invalidSample = recipients.invalid.profiles.slice(0, 10);
|
|
141
|
+
for (const item of invalidSample) {
|
|
142
|
+
const profile = item.profile;
|
|
143
|
+
const name = [profile.firstName, profile.lastName].filter(Boolean).join(' ') || 'Unknown';
|
|
144
|
+
resultText += `- ${name}: ${item.message}\n`;
|
|
145
|
+
}
|
|
146
|
+
if (recipients.invalid.total > 10) {
|
|
147
|
+
resultText += `- ... and ${recipients.invalid.total - 10} more\n`;
|
|
148
|
+
}
|
|
149
|
+
resultText += '\n';
|
|
150
|
+
}
|
|
151
|
+
resultText += `---\n`;
|
|
152
|
+
resultText += `š” Use \`send_campaign\` to publish, or \`send_test_campaign\` to preview first.`;
|
|
153
|
+
return {
|
|
154
|
+
content: [{
|
|
155
|
+
type: "text",
|
|
156
|
+
text: resultText
|
|
157
|
+
}]
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return {
|
|
162
|
+
content: [{
|
|
163
|
+
type: "text",
|
|
164
|
+
text: `ā Failed to get campaign recipients: ${error.message}`
|
|
165
|
+
}]
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Handler for get_campaign_analytics
|
|
170
|
+
export async function handleGetCampaignAnalytics(args) {
|
|
171
|
+
try {
|
|
172
|
+
const configManager = new ConfigManager();
|
|
173
|
+
const config = await configManager.loadConfig();
|
|
174
|
+
if (!config) {
|
|
175
|
+
throw new Error('Qik MCP server not configured. Run setup first.');
|
|
176
|
+
}
|
|
177
|
+
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/campaign/${args.campaignId}/analytics`, {
|
|
178
|
+
headers: {
|
|
179
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
180
|
+
'Content-Type': 'application/json',
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
if (!response.ok) {
|
|
184
|
+
const errorText = await response.text();
|
|
185
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
186
|
+
}
|
|
187
|
+
const data = await response.json();
|
|
188
|
+
const { total, opened, clicked } = data;
|
|
189
|
+
const openRate = total > 0 ? ((opened / total) * 100).toFixed(1) : '0';
|
|
190
|
+
const clickRate = total > 0 ? ((clicked / total) * 100).toFixed(1) : '0';
|
|
191
|
+
let resultText = `# Campaign Analytics\n\n`;
|
|
192
|
+
resultText += `## Metrics\n`;
|
|
193
|
+
resultText += `- **Total sent**: ${total}\n`;
|
|
194
|
+
resultText += `- **Opened**: ${opened} (${openRate}%)\n`;
|
|
195
|
+
resultText += `- **Clicked**: ${clicked} (${clickRate}%)\n\n`;
|
|
196
|
+
if (total === 0) {
|
|
197
|
+
resultText += `ā ļø No emails have been sent yet. Campaign may still be in draft state.`;
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
content: [{
|
|
201
|
+
type: "text",
|
|
202
|
+
text: resultText
|
|
203
|
+
}]
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return {
|
|
208
|
+
content: [{
|
|
209
|
+
type: "text",
|
|
210
|
+
text: `ā Failed to get campaign analytics: ${error.message}`
|
|
211
|
+
}]
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Handler for send_campaign
|
|
216
|
+
export async function handleSendCampaign(args) {
|
|
217
|
+
try {
|
|
218
|
+
const configManager = new ConfigManager();
|
|
219
|
+
const config = await configManager.loadConfig();
|
|
220
|
+
if (!config) {
|
|
221
|
+
throw new Error('Qik MCP server not configured. Run setup first.');
|
|
222
|
+
}
|
|
223
|
+
const body = {};
|
|
224
|
+
if (args.scheduleDate) {
|
|
225
|
+
body.date = args.scheduleDate;
|
|
226
|
+
}
|
|
227
|
+
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/campaign/${args.campaignId}/publish`, {
|
|
228
|
+
method: 'POST',
|
|
229
|
+
headers: {
|
|
230
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
231
|
+
'Content-Type': 'application/json',
|
|
232
|
+
},
|
|
233
|
+
body: JSON.stringify(body)
|
|
234
|
+
});
|
|
235
|
+
if (!response.ok) {
|
|
236
|
+
const errorText = await response.text();
|
|
237
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
238
|
+
}
|
|
239
|
+
const campaign = await response.json();
|
|
240
|
+
let resultText = `# Campaign Published\n\n`;
|
|
241
|
+
resultText += `ā
Campaign "${campaign.title}" has been ${args.scheduleDate ? 'scheduled' : 'published'}.\n\n`;
|
|
242
|
+
resultText += `- **ID**: ${campaign._id}\n`;
|
|
243
|
+
resultText += `- **Status**: ${campaign.state || 'processing'}\n`;
|
|
244
|
+
if (args.scheduleDate) {
|
|
245
|
+
resultText += `- **Scheduled for**: ${args.scheduleDate}\n`;
|
|
246
|
+
}
|
|
247
|
+
resultText += `\nš” Use \`get_campaign_analytics\` to track performance.`;
|
|
248
|
+
return {
|
|
249
|
+
content: [{
|
|
250
|
+
type: "text",
|
|
251
|
+
text: resultText
|
|
252
|
+
}]
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
return {
|
|
257
|
+
content: [{
|
|
258
|
+
type: "text",
|
|
259
|
+
text: `ā Failed to publish campaign: ${error.message}`
|
|
260
|
+
}]
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Handler for send_test_campaign
|
|
265
|
+
export async function handleSendTestCampaign(args) {
|
|
266
|
+
try {
|
|
267
|
+
const configManager = new ConfigManager();
|
|
268
|
+
const config = await configManager.loadConfig();
|
|
269
|
+
if (!config) {
|
|
270
|
+
throw new Error('Qik MCP server not configured. Run setup first.');
|
|
271
|
+
}
|
|
272
|
+
if (!args.profileIds?.length && !args.emails?.length) {
|
|
273
|
+
return {
|
|
274
|
+
content: [{
|
|
275
|
+
type: "text",
|
|
276
|
+
text: `ā Please provide either profileIds or emails to send test to.`
|
|
277
|
+
}]
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
const body = {};
|
|
281
|
+
if (args.profileIds?.length) {
|
|
282
|
+
body.ids = args.profileIds;
|
|
283
|
+
}
|
|
284
|
+
if (args.emails?.length) {
|
|
285
|
+
body.emails = args.emails;
|
|
286
|
+
}
|
|
287
|
+
const response = await fetch(`${config.apiUrl || 'https://api.qik.dev'}/campaign/${args.campaignId}/test`, {
|
|
288
|
+
method: 'POST',
|
|
289
|
+
headers: {
|
|
290
|
+
'Authorization': `Bearer ${config.accessToken}`,
|
|
291
|
+
'Content-Type': 'application/json',
|
|
292
|
+
},
|
|
293
|
+
body: JSON.stringify(body)
|
|
294
|
+
});
|
|
295
|
+
if (!response.ok) {
|
|
296
|
+
const errorText = await response.text();
|
|
297
|
+
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
|
298
|
+
}
|
|
299
|
+
const result = await response.json();
|
|
300
|
+
let resultText = `# Test Email Sent\n\n`;
|
|
301
|
+
resultText += `ā
Test email(s) sent successfully.\n\n`;
|
|
302
|
+
if (args.emails?.length) {
|
|
303
|
+
resultText += `**Sent to emails:**\n`;
|
|
304
|
+
for (const email of args.emails) {
|
|
305
|
+
resultText += `- ${email}\n`;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
if (args.profileIds?.length) {
|
|
309
|
+
resultText += `**Sent to profile IDs:**\n`;
|
|
310
|
+
for (const id of args.profileIds) {
|
|
311
|
+
resultText += `- ${id}\n`;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
resultText += `\nš” Check your inbox. Test emails have [TEST] prefix in subject.`;
|
|
315
|
+
return {
|
|
316
|
+
content: [{
|
|
317
|
+
type: "text",
|
|
318
|
+
text: resultText
|
|
319
|
+
}]
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
return {
|
|
324
|
+
content: [{
|
|
325
|
+
type: "text",
|
|
326
|
+
text: `ā Failed to send test campaign: ${error.message}`
|
|
327
|
+
}]
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=campaign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign.js","sourceRoot":"","sources":["../../../src/tools/campaign.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const createCheckinTool: Tool;
|
|
3
|
+
export declare const checkoutTool: Tool;
|
|
4
|
+
export declare function handleCreateCheckin(args: {
|
|
5
|
+
eventId: string;
|
|
6
|
+
profileIds: string[];
|
|
7
|
+
checkedInBy?: string;
|
|
8
|
+
absent?: boolean;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
content: Array<{
|
|
11
|
+
type: string;
|
|
12
|
+
text: string;
|
|
13
|
+
}>;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function handleCheckout(args: {
|
|
16
|
+
checkinIds: string[];
|
|
17
|
+
checkedOutBy?: string;
|
|
18
|
+
pin?: string;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
content: Array<{
|
|
21
|
+
type: string;
|
|
22
|
+
text: string;
|
|
23
|
+
}>;
|
|
24
|
+
}>;
|
|
25
|
+
//# sourceMappingURL=checkin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkin.d.ts","sourceRoot":"","sources":["../../../src/tools/checkin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,eAAO,MAAM,iBAAiB,EAAE,IAiC/B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,IA4B1B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+E9D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA4E9D"}
|