@reaudit/mcp-server 1.0.0 → 1.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +101 -1
  3. package/dist/index.js +90 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api-client.d.ts +284 -0
  6. package/dist/lib/api-client.d.ts.map +1 -1
  7. package/dist/lib/api-client.js +148 -0
  8. package/dist/lib/api-client.js.map +1 -1
  9. package/dist/tools/agent-analytics.d.ts +42 -0
  10. package/dist/tools/agent-analytics.d.ts.map +1 -0
  11. package/dist/tools/agent-analytics.js +60 -0
  12. package/dist/tools/agent-analytics.js.map +1 -0
  13. package/dist/tools/analytics-query.d.ts +4 -4
  14. package/dist/tools/competitors.d.ts +140 -0
  15. package/dist/tools/competitors.d.ts.map +1 -0
  16. package/dist/tools/competitors.js +107 -0
  17. package/dist/tools/competitors.js.map +1 -0
  18. package/dist/tools/content-generation.d.ts +4 -4
  19. package/dist/tools/ga4.d.ts +50 -0
  20. package/dist/tools/ga4.d.ts.map +1 -0
  21. package/dist/tools/ga4.js +75 -0
  22. package/dist/tools/ga4.js.map +1 -0
  23. package/dist/tools/project-settings.d.ts +715 -0
  24. package/dist/tools/project-settings.d.ts.map +1 -0
  25. package/dist/tools/project-settings.js +381 -0
  26. package/dist/tools/project-settings.js.map +1 -0
  27. package/dist/tools/reddit.d.ts +116 -0
  28. package/dist/tools/reddit.d.ts.map +1 -0
  29. package/dist/tools/reddit.js +108 -0
  30. package/dist/tools/reddit.js.map +1 -0
  31. package/dist/tools/seo-alerts.d.ts +28 -0
  32. package/dist/tools/seo-alerts.d.ts.map +1 -0
  33. package/dist/tools/seo-alerts.js +48 -0
  34. package/dist/tools/seo-alerts.js.map +1 -0
  35. package/dist/tools/strategy-steps.d.ts +162 -0
  36. package/dist/tools/strategy-steps.d.ts.map +1 -0
  37. package/dist/tools/strategy-steps.js +342 -0
  38. package/dist/tools/strategy-steps.js.map +1 -0
  39. package/dist/tools/strategy.d.ts +6 -6
  40. package/dist/tools/tracking.d.ts +99 -0
  41. package/dist/tools/tracking.d.ts.map +1 -0
  42. package/dist/tools/tracking.js +148 -0
  43. package/dist/tools/tracking.js.map +1 -0
  44. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-settings.d.ts","sourceRoot":"","sources":["../../src/tools/project-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEtC,CAAC;AASH;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CA6GjB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;kBAYX,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiHR,MAAM,EAAE;;IAG7B,CAAC"}
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ /**
3
+ * Project Settings Tools
4
+ *
5
+ * MCP tools for reading and updating project settings.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.projectSettingsTools = exports.updateProjectSettingsSchema = exports.getProjectSettingsSchema = void 0;
9
+ exports.getProjectSettings = getProjectSettings;
10
+ exports.updateProjectSettings = updateProjectSettings;
11
+ const zod_1 = require("zod");
12
+ const projects_js_1 = require("./projects.js");
13
+ // Tool schemas
14
+ exports.getProjectSettingsSchema = zod_1.z.object({
15
+ projectId: zod_1.z.string().optional().describe('The ID of the project (uses active project if not specified)'),
16
+ });
17
+ exports.updateProjectSettingsSchema = zod_1.z.object({
18
+ projectId: zod_1.z.string().optional().describe('The ID of the project (uses active project if not specified)'),
19
+ name: zod_1.z.string().optional().describe('Update the project name'),
20
+ description: zod_1.z.string().optional().describe('Update the project description'),
21
+ settings: zod_1.z.object({
22
+ brandName: zod_1.z.string().optional().describe('Brand name'),
23
+ brandAliases: zod_1.z.array(zod_1.z.string()).optional().describe('Alternative brand names'),
24
+ products: zod_1.z.array(zod_1.z.string()).optional().describe('Product names to track'),
25
+ trademarks: zod_1.z.array(zod_1.z.string()).optional().describe('Trademark names to track'),
26
+ brandBlocklist: zod_1.z.array(zod_1.z.string()).optional().describe('Brand names to hide from rankings'),
27
+ website: zod_1.z.string().optional().describe('Brand website URL'),
28
+ brandDescription: zod_1.z.string().optional().describe('High-level brand description'),
29
+ idealCustomerProfile: zod_1.z.string().optional().describe('Ideal customer profile description'),
30
+ brandPointOfView: zod_1.z.string().optional().describe('Brand mission and core values'),
31
+ mainKeyword: zod_1.z.string().optional().describe('Main keyword for the brand'),
32
+ alternativeKeywords: zod_1.z.array(zod_1.z.string()).optional().describe('Secondary keywords to track and optimize for'),
33
+ mainAiPrompt: zod_1.z.string().optional().describe('Main AI prompt for tracking'),
34
+ targetMarket: zod_1.z.string().optional().describe('Target market description'),
35
+ marketingObjectives: zod_1.z.string().optional().describe('Marketing objectives'),
36
+ sitemap: zod_1.z.string().optional().describe('Sitemap URL'),
37
+ country: zod_1.z.string().optional().describe('Primary country'),
38
+ regions: zod_1.z.array(zod_1.z.string()).optional().describe('Target regions'),
39
+ industry: zod_1.z.string().optional().describe('Industry/sector'),
40
+ language: zod_1.z.string().optional().describe('Primary language code (e.g., en, es, fr)'),
41
+ timezone: zod_1.z.string().optional().describe('Timezone (e.g., UTC, America/New_York)'),
42
+ defaultLocation: zod_1.z.string().optional().describe('Default location code'),
43
+ writingStyle: zod_1.z.object({
44
+ authorPersona: zod_1.z.string().optional().describe('AI ghostwriter qualifications and expertise'),
45
+ enhancedToneOfVoice: zod_1.z.string().optional().describe('Detailed tone of voice description'),
46
+ }).optional().describe('Writing style settings for content generation'),
47
+ logo: zod_1.z.string().optional().describe('Logo URL'),
48
+ socialMedia: zod_1.z.object({
49
+ facebook: zod_1.z.string().optional(),
50
+ twitter: zod_1.z.string().optional(),
51
+ linkedin: zod_1.z.string().optional(),
52
+ instagram: zod_1.z.string().optional(),
53
+ youtube: zod_1.z.string().optional(),
54
+ tiktok: zod_1.z.string().optional(),
55
+ pinterest: zod_1.z.string().optional(),
56
+ github: zod_1.z.string().optional(),
57
+ }).optional().describe('Social media profile URLs'),
58
+ address: zod_1.z.object({
59
+ street: zod_1.z.string().optional(),
60
+ city: zod_1.z.string().optional(),
61
+ state: zod_1.z.string().optional(),
62
+ zipCode: zod_1.z.string().optional(),
63
+ country: zod_1.z.string().optional(),
64
+ }).optional().describe('Business address'),
65
+ phone: zod_1.z.string().optional().describe('Contact phone number'),
66
+ email: zod_1.z.string().optional().describe('Contact email address'),
67
+ competitors: zod_1.z.array(zod_1.z.union([
68
+ zod_1.z.string(),
69
+ zod_1.z.object({
70
+ name: zod_1.z.string(),
71
+ aliases: zod_1.z.array(zod_1.z.string()).optional(),
72
+ products: zod_1.z.array(zod_1.z.string()).optional(),
73
+ trademarks: zod_1.z.array(zod_1.z.string()).optional(),
74
+ website: zod_1.z.string().optional(),
75
+ }),
76
+ ])).optional().describe('Competitor list (names or structured objects)'),
77
+ authorCard: zod_1.z.object({
78
+ enabled: zod_1.z.boolean().optional(),
79
+ name: zod_1.z.string().optional(),
80
+ title: zod_1.z.string().optional(),
81
+ bio: zod_1.z.string().optional(),
82
+ avatarUrl: zod_1.z.string().optional(),
83
+ socialLinks: zod_1.z.array(zod_1.z.object({
84
+ platform: zod_1.z.string(),
85
+ url: zod_1.z.string(),
86
+ label: zod_1.z.string().optional(),
87
+ })).optional(),
88
+ }).optional().describe('Author card settings for content generation'),
89
+ }).optional().describe('Settings fields to update'),
90
+ });
91
+ /**
92
+ * Resolve project ID from args or active project
93
+ */
94
+ function resolveProjectId(args) {
95
+ return args.projectId || (0, projects_js_1.getActiveProjectId)();
96
+ }
97
+ /**
98
+ * Get project settings tool handler
99
+ */
100
+ async function getProjectSettings(client, args) {
101
+ const projectId = resolveProjectId(args);
102
+ if (!projectId) {
103
+ return 'No project specified. Use set_active_project first or provide a projectId.';
104
+ }
105
+ const result = await client.getProjectSettings(projectId);
106
+ let response = `## Project Settings: **${result.projectName}**\n\n`;
107
+ response += `**Project ID:** ${result.projectId}\n`;
108
+ if (result.description) {
109
+ response += `**Description:** ${result.description}\n`;
110
+ }
111
+ const s = result.settings;
112
+ // Brand Settings
113
+ response += '\n### Brand\n';
114
+ if (s.brandName)
115
+ response += `- **Brand Name:** ${s.brandName}\n`;
116
+ if (s.brandAliases?.length)
117
+ response += `- **Brand Aliases:** ${s.brandAliases.join(', ')}\n`;
118
+ if (s.products?.length)
119
+ response += `- **Products:** ${s.products.join(', ')}\n`;
120
+ if (s.trademarks?.length)
121
+ response += `- **Trademarks:** ${s.trademarks.join(', ')}\n`;
122
+ if (s.website)
123
+ response += `- **Website:** ${s.website}\n`;
124
+ if (s.brandDescription)
125
+ response += `- **Brand Description:** ${s.brandDescription}\n`;
126
+ if (s.idealCustomerProfile)
127
+ response += `- **Ideal Customer Profile:** ${s.idealCustomerProfile}\n`;
128
+ if (s.brandPointOfView)
129
+ response += `- **Brand Point of View:** ${s.brandPointOfView}\n`;
130
+ if (s.mainKeyword)
131
+ response += `- **Main Keyword:** ${s.mainKeyword}\n`;
132
+ if (s.alternativeKeywords?.length)
133
+ response += `- **Alternative Keywords:** ${s.alternativeKeywords.join(', ')}\n`;
134
+ if (s.mainAiPrompt)
135
+ response += `- **Main AI Prompt:** ${s.mainAiPrompt}\n`;
136
+ if (s.targetMarket)
137
+ response += `- **Target Market:** ${s.targetMarket}\n`;
138
+ if (s.marketingObjectives)
139
+ response += `- **Marketing Objectives:** ${s.marketingObjectives}\n`;
140
+ if (s.sitemap)
141
+ response += `- **Sitemap:** ${s.sitemap}\n`;
142
+ // General Settings
143
+ response += '\n### General\n';
144
+ if (s.industry)
145
+ response += `- **Industry:** ${s.industry}\n`;
146
+ if (s.language)
147
+ response += `- **Language:** ${s.language}\n`;
148
+ if (s.country)
149
+ response += `- **Country:** ${s.country}\n`;
150
+ if (s.regions?.length)
151
+ response += `- **Regions:** ${s.regions.join(', ')}\n`;
152
+ if (s.timezone)
153
+ response += `- **Timezone:** ${s.timezone}\n`;
154
+ if (s.defaultLocation)
155
+ response += `- **Default Location:** ${s.defaultLocation}\n`;
156
+ // Writing Style
157
+ if (s.writingStyle) {
158
+ response += '\n### Writing Style\n';
159
+ if (s.writingStyle.authorPersona)
160
+ response += `- **Author Persona:** ${s.writingStyle.authorPersona}\n`;
161
+ if (s.writingStyle.enhancedToneOfVoice)
162
+ response += `- **Tone of Voice:** ${s.writingStyle.enhancedToneOfVoice}\n`;
163
+ }
164
+ // Social Media
165
+ if (s.socialMedia) {
166
+ response += '\n### Social Media\n';
167
+ const entries = Object.entries(s.socialMedia).filter(([, v]) => v);
168
+ for (const [platform, url] of entries) {
169
+ response += `- **${platform.charAt(0).toUpperCase() + platform.slice(1)}:** ${url}\n`;
170
+ }
171
+ }
172
+ // Contact
173
+ if (s.phone || s.email || s.address) {
174
+ response += '\n### Contact\n';
175
+ if (s.email)
176
+ response += `- **Email:** ${s.email}\n`;
177
+ if (s.phone)
178
+ response += `- **Phone:** ${s.phone}\n`;
179
+ if (s.address) {
180
+ const parts = [s.address.street, s.address.city, s.address.state, s.address.zipCode, s.address.country].filter(Boolean);
181
+ if (parts.length)
182
+ response += `- **Address:** ${parts.join(', ')}\n`;
183
+ }
184
+ }
185
+ // Competitors
186
+ if (s.competitors?.length) {
187
+ response += '\n### Competitors\n';
188
+ for (const comp of s.competitors) {
189
+ if (typeof comp === 'string') {
190
+ response += `- ${comp}\n`;
191
+ }
192
+ else {
193
+ response += `- **${comp.name}**`;
194
+ if (comp.website)
195
+ response += ` (${comp.website})`;
196
+ response += '\n';
197
+ }
198
+ }
199
+ }
200
+ // Author Card
201
+ if (s.authorCard) {
202
+ response += '\n### Author Card\n';
203
+ response += `- **Enabled:** ${s.authorCard.enabled ? 'Yes' : 'No'}\n`;
204
+ if (s.authorCard.name)
205
+ response += `- **Name:** ${s.authorCard.name}\n`;
206
+ if (s.authorCard.title)
207
+ response += `- **Title:** ${s.authorCard.title}\n`;
208
+ if (s.authorCard.bio)
209
+ response += `- **Bio:** ${s.authorCard.bio}\n`;
210
+ }
211
+ // Reporting
212
+ if (s.reporting) {
213
+ response += '\n### Reporting\n';
214
+ response += `- **Enabled:** ${s.reporting.enabled ? 'Yes' : 'No'}\n`;
215
+ response += `- **Frequency:** ${s.reporting.frequency}\n`;
216
+ if (s.reporting.email)
217
+ response += `- **Report Email:** ${s.reporting.email}\n`;
218
+ }
219
+ // Brand Blocklist
220
+ if (s.brandBlocklist?.length) {
221
+ response += '\n### Brand Blocklist\n';
222
+ response += `- ${s.brandBlocklist.join(', ')}\n`;
223
+ }
224
+ return response;
225
+ }
226
+ /**
227
+ * Update project settings tool handler
228
+ */
229
+ async function updateProjectSettings(client, args) {
230
+ const projectId = resolveProjectId(args);
231
+ if (!projectId) {
232
+ return 'No project specified. Use set_active_project first or provide a projectId.';
233
+ }
234
+ const updatePayload = {};
235
+ if (args.name)
236
+ updatePayload.name = args.name;
237
+ if (args.description)
238
+ updatePayload.description = args.description;
239
+ if (args.settings)
240
+ updatePayload.settings = args.settings;
241
+ if (!updatePayload.name && !updatePayload.description && !updatePayload.settings) {
242
+ return 'No fields to update. Provide at least one of: name, description, or settings fields.';
243
+ }
244
+ const result = await client.updateProjectSettings(projectId, updatePayload);
245
+ let response = `Project settings updated successfully for **${result.projectName}**.\n\n`;
246
+ response += `**Updated fields:** ${result.updatedFields.join(', ')}\n`;
247
+ return response;
248
+ }
249
+ /**
250
+ * Tool definitions for MCP
251
+ */
252
+ exports.projectSettingsTools = [
253
+ {
254
+ name: 'get_project_settings',
255
+ description: 'Get all settings for a project including brand info, writing style, social media, competitors, author card, and more. Use this to read the current configuration of a project.',
256
+ inputSchema: {
257
+ type: 'object',
258
+ properties: {
259
+ projectId: {
260
+ type: 'string',
261
+ description: 'The ID of the project (uses active project if not specified)',
262
+ },
263
+ },
264
+ required: [],
265
+ },
266
+ },
267
+ {
268
+ name: 'update_project_settings',
269
+ description: 'Update project settings including brand name, description, writing style, social media links, competitors, author card, industry, language, and more. Only provide the fields you want to change.',
270
+ inputSchema: {
271
+ type: 'object',
272
+ properties: {
273
+ projectId: {
274
+ type: 'string',
275
+ description: 'The ID of the project (uses active project if not specified)',
276
+ },
277
+ name: {
278
+ type: 'string',
279
+ description: 'Update the project name',
280
+ },
281
+ description: {
282
+ type: 'string',
283
+ description: 'Update the project description',
284
+ },
285
+ settings: {
286
+ type: 'object',
287
+ description: 'Settings fields to update. Only provide the fields you want to change.',
288
+ properties: {
289
+ brandName: { type: 'string', description: 'Brand name' },
290
+ brandAliases: { type: 'array', items: { type: 'string' }, description: 'Alternative brand names' },
291
+ products: { type: 'array', items: { type: 'string' }, description: 'Product names to track' },
292
+ trademarks: { type: 'array', items: { type: 'string' }, description: 'Trademark names to track' },
293
+ brandBlocklist: { type: 'array', items: { type: 'string' }, description: 'Brand names to hide from rankings' },
294
+ website: { type: 'string', description: 'Brand website URL' },
295
+ brandDescription: { type: 'string', description: 'High-level brand description' },
296
+ idealCustomerProfile: { type: 'string', description: 'Ideal customer profile description' },
297
+ brandPointOfView: { type: 'string', description: 'Brand mission and core values' },
298
+ mainKeyword: { type: 'string', description: 'Main keyword for the brand' },
299
+ alternativeKeywords: { type: 'array', items: { type: 'string' }, description: 'Secondary keywords to track and optimize for' },
300
+ mainAiPrompt: { type: 'string', description: 'Main AI prompt for tracking' },
301
+ targetMarket: { type: 'string', description: 'Target market description' },
302
+ marketingObjectives: { type: 'string', description: 'Marketing objectives' },
303
+ sitemap: { type: 'string', description: 'Sitemap URL' },
304
+ country: { type: 'string', description: 'Primary country' },
305
+ regions: { type: 'array', items: { type: 'string' }, description: 'Target regions' },
306
+ industry: { type: 'string', description: 'Industry/sector' },
307
+ language: { type: 'string', description: 'Primary language code (e.g., en, es, fr)' },
308
+ timezone: { type: 'string', description: 'Timezone (e.g., UTC, America/New_York)' },
309
+ defaultLocation: { type: 'string', description: 'Default location code' },
310
+ writingStyle: {
311
+ type: 'object',
312
+ description: 'Writing style settings for content generation',
313
+ properties: {
314
+ authorPersona: { type: 'string', description: 'AI ghostwriter qualifications and expertise' },
315
+ enhancedToneOfVoice: { type: 'string', description: 'Detailed tone of voice description' },
316
+ },
317
+ },
318
+ logo: { type: 'string', description: 'Logo URL' },
319
+ socialMedia: {
320
+ type: 'object',
321
+ description: 'Social media profile URLs',
322
+ properties: {
323
+ facebook: { type: 'string' },
324
+ twitter: { type: 'string' },
325
+ linkedin: { type: 'string' },
326
+ instagram: { type: 'string' },
327
+ youtube: { type: 'string' },
328
+ tiktok: { type: 'string' },
329
+ pinterest: { type: 'string' },
330
+ github: { type: 'string' },
331
+ },
332
+ },
333
+ address: {
334
+ type: 'object',
335
+ description: 'Business address',
336
+ properties: {
337
+ street: { type: 'string' },
338
+ city: { type: 'string' },
339
+ state: { type: 'string' },
340
+ zipCode: { type: 'string' },
341
+ country: { type: 'string' },
342
+ },
343
+ },
344
+ phone: { type: 'string', description: 'Contact phone number' },
345
+ email: { type: 'string', description: 'Contact email address' },
346
+ competitors: {
347
+ type: 'array',
348
+ description: 'Competitor list (names or structured objects with name, aliases, products, trademarks, website)',
349
+ items: {},
350
+ },
351
+ authorCard: {
352
+ type: 'object',
353
+ description: 'Author card settings for content generation',
354
+ properties: {
355
+ enabled: { type: 'boolean' },
356
+ name: { type: 'string' },
357
+ title: { type: 'string', description: 'e.g., Founder & CEO at Company' },
358
+ bio: { type: 'string', description: 'Short bio text' },
359
+ avatarUrl: { type: 'string', description: 'Photo/avatar URL' },
360
+ socialLinks: {
361
+ type: 'array',
362
+ items: {
363
+ type: 'object',
364
+ properties: {
365
+ platform: { type: 'string' },
366
+ url: { type: 'string' },
367
+ label: { type: 'string' },
368
+ },
369
+ required: ['platform', 'url'],
370
+ },
371
+ },
372
+ },
373
+ },
374
+ },
375
+ },
376
+ },
377
+ required: [],
378
+ },
379
+ },
380
+ ];
381
+ //# sourceMappingURL=project-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-settings.js","sourceRoot":"","sources":["../../src/tools/project-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * MCP Tools - Reddit Lead Monitoring
3
+ * Monitor subreddits and manage identified leads
4
+ */
5
+ import { z } from 'zod';
6
+ import type { ReauditAPIClient } from '../lib/api-client.js';
7
+ export declare const listRedditMonitorsSchema: z.ZodObject<{
8
+ projectId: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ projectId: string;
11
+ }, {
12
+ projectId: string;
13
+ }>;
14
+ export declare const getRedditLeadsSchema: z.ZodObject<{
15
+ projectId: z.ZodString;
16
+ status: z.ZodOptional<z.ZodEnum<["new", "contacted", "qualified", "converted", "dismissed"]>>;
17
+ minScore: z.ZodOptional<z.ZodNumber>;
18
+ limit: z.ZodOptional<z.ZodNumber>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ projectId: string;
21
+ status?: "converted" | "contacted" | "new" | "qualified" | "dismissed" | undefined;
22
+ limit?: number | undefined;
23
+ minScore?: number | undefined;
24
+ }, {
25
+ projectId: string;
26
+ status?: "converted" | "contacted" | "new" | "qualified" | "dismissed" | undefined;
27
+ limit?: number | undefined;
28
+ minScore?: number | undefined;
29
+ }>;
30
+ export declare const updateRedditLeadSchema: z.ZodObject<{
31
+ leadId: z.ZodString;
32
+ status: z.ZodEnum<["new", "contacted", "qualified", "converted", "dismissed"]>;
33
+ notes: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ status: "converted" | "contacted" | "new" | "qualified" | "dismissed";
36
+ leadId: string;
37
+ notes?: string | undefined;
38
+ }, {
39
+ status: "converted" | "contacted" | "new" | "qualified" | "dismissed";
40
+ leadId: string;
41
+ notes?: string | undefined;
42
+ }>;
43
+ export declare function listRedditMonitors(apiClient: ReauditAPIClient, args: z.infer<typeof listRedditMonitorsSchema>): Promise<string>;
44
+ export declare function getRedditLeads(apiClient: ReauditAPIClient, args: z.infer<typeof getRedditLeadsSchema>): Promise<string>;
45
+ export declare function updateRedditLead(apiClient: ReauditAPIClient, args: z.infer<typeof updateRedditLeadSchema>): Promise<string>;
46
+ export declare const redditTools: ({
47
+ name: string;
48
+ description: string;
49
+ inputSchema: {
50
+ type: "object";
51
+ properties: {
52
+ projectId: {
53
+ type: string;
54
+ description: string;
55
+ };
56
+ status?: undefined;
57
+ minScore?: undefined;
58
+ limit?: undefined;
59
+ leadId?: undefined;
60
+ notes?: undefined;
61
+ };
62
+ required: string[];
63
+ };
64
+ } | {
65
+ name: string;
66
+ description: string;
67
+ inputSchema: {
68
+ type: "object";
69
+ properties: {
70
+ projectId: {
71
+ type: string;
72
+ description: string;
73
+ };
74
+ status: {
75
+ type: string;
76
+ description: string;
77
+ };
78
+ minScore: {
79
+ type: string;
80
+ description: string;
81
+ };
82
+ limit: {
83
+ type: string;
84
+ description: string;
85
+ };
86
+ leadId?: undefined;
87
+ notes?: undefined;
88
+ };
89
+ required: string[];
90
+ };
91
+ } | {
92
+ name: string;
93
+ description: string;
94
+ inputSchema: {
95
+ type: "object";
96
+ properties: {
97
+ leadId: {
98
+ type: string;
99
+ description: string;
100
+ };
101
+ status: {
102
+ type: string;
103
+ description: string;
104
+ };
105
+ notes: {
106
+ type: string;
107
+ description: string;
108
+ };
109
+ projectId?: undefined;
110
+ minScore?: undefined;
111
+ limit?: undefined;
112
+ };
113
+ required: string[];
114
+ };
115
+ })[];
116
+ //# sourceMappingURL=reddit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit.d.ts","sourceRoot":"","sources":["../../src/tools/reddit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAIH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,gBAAgB,EAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAKjB;AAID,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuCvB,CAAC"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Tools - Reddit Lead Monitoring
4
+ * Monitor subreddits and manage identified leads
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.redditTools = exports.updateRedditLeadSchema = exports.getRedditLeadsSchema = exports.listRedditMonitorsSchema = void 0;
8
+ exports.listRedditMonitors = listRedditMonitors;
9
+ exports.getRedditLeads = getRedditLeads;
10
+ exports.updateRedditLead = updateRedditLead;
11
+ const zod_1 = require("zod");
12
+ // ---- Schemas ----
13
+ exports.listRedditMonitorsSchema = zod_1.z.object({
14
+ projectId: zod_1.z.string(),
15
+ });
16
+ exports.getRedditLeadsSchema = zod_1.z.object({
17
+ projectId: zod_1.z.string(),
18
+ status: zod_1.z.enum(['new', 'contacted', 'qualified', 'converted', 'dismissed']).optional(),
19
+ minScore: zod_1.z.number().min(0).max(100).optional(),
20
+ limit: zod_1.z.number().min(1).max(100).optional(),
21
+ });
22
+ exports.updateRedditLeadSchema = zod_1.z.object({
23
+ leadId: zod_1.z.string(),
24
+ status: zod_1.z.enum(['new', 'contacted', 'qualified', 'converted', 'dismissed']),
25
+ notes: zod_1.z.string().optional(),
26
+ });
27
+ // ---- Handlers ----
28
+ async function listRedditMonitors(apiClient, args) {
29
+ const data = await apiClient.listRedditMonitors(args.projectId);
30
+ const monitors = (data.monitors || []);
31
+ if (monitors.length === 0) {
32
+ return 'No Reddit monitors configured for this project.';
33
+ }
34
+ const lines = [
35
+ `## Reddit Monitors (${monitors.length})\n`,
36
+ ...monitors.map((m, i) => {
37
+ const keywords = m.keywords || [];
38
+ return `${i + 1}. **r/${m.subreddit}** ${m.displayName ? `(${m.displayName})` : ''}\n Subscribers: ${m.subscribers || 'N/A'} | Posts found: ${m.postsFound || 0} | Leads: ${m.leadsIdentified || 0}\n Keywords: ${keywords.join(', ') || 'none'}\n Active: ${m.isActive ? 'Yes' : 'No'} | Last checked: ${m.lastChecked || 'never'}`;
39
+ }),
40
+ ];
41
+ return lines.join('\n');
42
+ }
43
+ async function getRedditLeads(apiClient, args) {
44
+ const data = await apiClient.getRedditLeads(args.projectId, {
45
+ status: args.status,
46
+ minScore: args.minScore,
47
+ limit: args.limit,
48
+ });
49
+ const leads = (data.leads || []);
50
+ if (leads.length === 0) {
51
+ return 'No Reddit leads found matching your criteria.';
52
+ }
53
+ const lines = [
54
+ `## Reddit Leads (${leads.length})\n`,
55
+ ...leads.map((l, i) => {
56
+ const keywords = l.matchedKeywords || [];
57
+ return `${i + 1}. **${l.title}** (score: ${l.leadScore}/100)\n r/${l.subreddit} by u/${l.author} | Status: ${l.status} | Intent: ${l.intent || 'N/A'}\n Reason: ${l.leadReason || 'N/A'}\n Keywords: ${keywords.join(', ')}\n Link: https://reddit.com${l.permalink}`;
58
+ }),
59
+ ];
60
+ return lines.join('\n');
61
+ }
62
+ async function updateRedditLead(apiClient, args) {
63
+ const data = await apiClient.updateRedditLead(args.leadId, args.status, args.notes);
64
+ const lead = (data.lead || {});
65
+ return `Lead updated (ID: ${lead.id})\nNew status: **${lead.status}**${lead.notes ? `\nNotes: ${lead.notes}` : ''}`;
66
+ }
67
+ // ---- Tool Definitions ----
68
+ exports.redditTools = [
69
+ {
70
+ name: 'list_reddit_monitors',
71
+ description: 'List monitored subreddits for a project. Shows active monitors, keywords tracked, and lead statistics.',
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ projectId: { type: 'string', description: 'Project ID to list monitors for' },
76
+ },
77
+ required: ['projectId'],
78
+ },
79
+ },
80
+ {
81
+ name: 'get_reddit_leads',
82
+ description: 'Get Reddit leads identified from monitored subreddits. Filter by status, minimum lead score, etc.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ projectId: { type: 'string', description: 'Project ID to get leads for' },
87
+ status: { type: 'string', description: 'Filter by status: new, contacted, qualified, converted, dismissed' },
88
+ minScore: { type: 'number', description: 'Minimum lead score to include (0-100)' },
89
+ limit: { type: 'number', description: 'Max leads to return (default 50)' },
90
+ },
91
+ required: ['projectId'],
92
+ },
93
+ },
94
+ {
95
+ name: 'update_reddit_lead',
96
+ description: 'Update a Reddit lead status (new, contacted, qualified, converted, dismissed). Optionally add notes.',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {
100
+ leadId: { type: 'string', description: 'The ID of the lead to update' },
101
+ status: { type: 'string', description: 'New status: new, contacted, qualified, converted, dismissed' },
102
+ notes: { type: 'string', description: 'Optional notes about the lead' },
103
+ },
104
+ required: ['leadId', 'status'],
105
+ },
106
+ },
107
+ ];
108
+ //# sourceMappingURL=reddit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit.js","sourceRoot":"","sources":["../../src/tools/reddit.ts"],"names":[],"mappings":"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"}