@serpstat/serpstat-mcp-server 1.0.2

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 (72) hide show
  1. package/.env.example +10 -0
  2. package/LICENSE +21 -0
  3. package/README.md +288 -0
  4. package/dist/handlers/backlinks_tools.d.ts +11 -0
  5. package/dist/handlers/backlinks_tools.d.ts.map +1 -0
  6. package/dist/handlers/backlinks_tools.js +59 -0
  7. package/dist/handlers/backlinks_tools.js.map +1 -0
  8. package/dist/handlers/base.d.ts +10 -0
  9. package/dist/handlers/base.d.ts.map +1 -0
  10. package/dist/handlers/base.js +26 -0
  11. package/dist/handlers/base.js.map +1 -0
  12. package/dist/handlers/domain.d.ts +11 -0
  13. package/dist/handlers/domain.d.ts.map +1 -0
  14. package/dist/handlers/domain.js +75 -0
  15. package/dist/handlers/domain.js.map +1 -0
  16. package/dist/handlers/domain_tools.d.ts +51 -0
  17. package/dist/handlers/domain_tools.d.ts.map +1 -0
  18. package/dist/handlers/domain_tools.js +538 -0
  19. package/dist/handlers/domain_tools.js.map +1 -0
  20. package/dist/handlers/keyword_tools.d.ts +19 -0
  21. package/dist/handlers/keyword_tools.d.ts.map +1 -0
  22. package/dist/handlers/keyword_tools.js +251 -0
  23. package/dist/handlers/keyword_tools.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +31 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/server.d.ts +9 -0
  29. package/dist/server.d.ts.map +1 -0
  30. package/dist/server.js +76 -0
  31. package/dist/server.js.map +1 -0
  32. package/dist/services/backlinks_tools.d.ts +7 -0
  33. package/dist/services/backlinks_tools.d.ts.map +1 -0
  34. package/dist/services/backlinks_tools.js +25 -0
  35. package/dist/services/backlinks_tools.js.map +1 -0
  36. package/dist/services/base.d.ts +13 -0
  37. package/dist/services/base.d.ts.map +1 -0
  38. package/dist/services/base.js +83 -0
  39. package/dist/services/base.js.map +1 -0
  40. package/dist/services/domain.d.ts +7 -0
  41. package/dist/services/domain.d.ts.map +1 -0
  42. package/dist/services/domain.js +26 -0
  43. package/dist/services/domain.js.map +1 -0
  44. package/dist/services/domain_tools.d.ts +13 -0
  45. package/dist/services/domain_tools.d.ts.map +1 -0
  46. package/dist/services/domain_tools.js +111 -0
  47. package/dist/services/domain_tools.js.map +1 -0
  48. package/dist/services/keyword_tools.d.ts +8 -0
  49. package/dist/services/keyword_tools.d.ts.map +1 -0
  50. package/dist/services/keyword_tools.js +43 -0
  51. package/dist/services/keyword_tools.js.map +1 -0
  52. package/dist/types/mcp.d.ts +12 -0
  53. package/dist/types/mcp.d.ts.map +1 -0
  54. package/dist/types/mcp.js +3 -0
  55. package/dist/types/mcp.js.map +1 -0
  56. package/dist/types/serpstat.d.ts +237 -0
  57. package/dist/types/serpstat.d.ts.map +1 -0
  58. package/dist/types/serpstat.js +24 -0
  59. package/dist/types/serpstat.js.map +1 -0
  60. package/dist/utils/config.d.ts +24 -0
  61. package/dist/utils/config.d.ts.map +1 -0
  62. package/dist/utils/config.js +21 -0
  63. package/dist/utils/config.js.map +1 -0
  64. package/dist/utils/logger.d.ts +3 -0
  65. package/dist/utils/logger.d.ts.map +1 -0
  66. package/dist/utils/logger.js +19 -0
  67. package/dist/utils/logger.js.map +1 -0
  68. package/dist/utils/validation.d.ts +952 -0
  69. package/dist/utils/validation.d.ts.map +1 -0
  70. package/dist/utils/validation.js +257 -0
  71. package/dist/utils/validation.js.map +1 -0
  72. package/package.json +46 -0
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetDomainUniqKeywordsHandler = exports.DomainRegionsCountHandler = exports.DomainUrlsHandler = exports.DomainKeywordsHandler = exports.CompetitorsHandler = exports.DomainsInfoHandler = void 0;
4
+ const base_js_1 = require("./base.js");
5
+ const domain_tools_js_1 = require("../services/domain_tools.js");
6
+ const validation_js_1 = require("../utils/validation.js");
7
+ const config_js_1 = require("../utils/config.js");
8
+ const zod_1 = require("zod");
9
+ class DomainsInfoHandler extends base_js_1.BaseHandler {
10
+ domainService;
11
+ constructor() {
12
+ super();
13
+ const config = (0, config_js_1.loadConfig)();
14
+ this.domainService = new domain_tools_js_1.DomainService(config);
15
+ }
16
+ getName() {
17
+ return 'get_domains_info';
18
+ }
19
+ getDescription() {
20
+ return 'Get comprehensive SEO information for multiple domains including visibility, keywords, traffic, and dynamics';
21
+ }
22
+ getInputSchema() {
23
+ return {
24
+ type: "object",
25
+ properties: {
26
+ domains: {
27
+ type: "array",
28
+ items: {
29
+ type: "string",
30
+ pattern: "^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",
31
+ minLength: 4,
32
+ maxLength: 253
33
+ },
34
+ description: "List of domains to analyze (1-100 domains)",
35
+ minItems: 1,
36
+ maxItems: 100
37
+ },
38
+ se: {
39
+ type: "string",
40
+ enum: [
41
+ 'g_us', 'g_uk', 'g_de', 'g_fr', 'g_es', 'g_it', 'g_ca', 'g_au',
42
+ 'g_nl', 'g_be', 'g_dk', 'g_se', 'g_no', 'g_fi', 'g_pl', 'g_cz',
43
+ 'g_ua', 'g_kz', 'bing_us'
44
+ ],
45
+ description: "Search engine database (e.g., g_us for Google US)"
46
+ },
47
+ filters: {
48
+ type: "object",
49
+ properties: {
50
+ traff: { type: "number", description: "Exact traffic value" },
51
+ traff_from: { type: "number", description: "Minimum traffic value" },
52
+ traff_to: { type: "number", description: "Maximum traffic value" },
53
+ visible: { type: "number", description: "Exact visibility value" },
54
+ visible_from: { type: "number", description: "Minimum visibility value" },
55
+ visible_to: { type: "number", description: "Maximum visibility value" }
56
+ },
57
+ additionalProperties: false,
58
+ description: "Optional filters for the results"
59
+ }
60
+ },
61
+ required: ["domains", "se"],
62
+ additionalProperties: false
63
+ };
64
+ }
65
+ async handle(call) {
66
+ try {
67
+ const params = validation_js_1.domainsInfoSchema.parse(call.arguments);
68
+ const result = await this.domainService.getDomainsInfo(params);
69
+ return this.createSuccessResponse(result);
70
+ }
71
+ catch (error) {
72
+ if (error instanceof zod_1.z.ZodError) {
73
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
74
+ }
75
+ return this.createErrorResponse(error);
76
+ }
77
+ }
78
+ }
79
+ exports.DomainsInfoHandler = DomainsInfoHandler;
80
+ class CompetitorsHandler extends base_js_1.BaseHandler {
81
+ domainService;
82
+ constructor() {
83
+ super();
84
+ const config = (0, config_js_1.loadConfig)();
85
+ this.domainService = new domain_tools_js_1.DomainService(config);
86
+ }
87
+ getName() {
88
+ return 'get_domain_competitors';
89
+ }
90
+ getDescription() {
91
+ return 'Get a list of competitor domains for a given domain, including visibility, traffic, and relevance.';
92
+ }
93
+ getInputSchema() {
94
+ return {
95
+ type: "object",
96
+ properties: {
97
+ domain: {
98
+ type: "string",
99
+ pattern: "^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",
100
+ minLength: 4,
101
+ maxLength: 253,
102
+ description: "Domain to analyze"
103
+ },
104
+ se: {
105
+ type: "string",
106
+ enum: [
107
+ 'g_us', 'g_uk', 'g_au', 'g_ca', 'g_de',
108
+ 'g_fr', 'g_kz', 'g_br', 'g_mx', 'g_es',
109
+ 'g_it', 'g_nl', 'g_pl', 'g_ua'
110
+ ],
111
+ description: "Search engine database ID"
112
+ },
113
+ size: {
114
+ type: "integer",
115
+ minimum: 1,
116
+ maximum: 100,
117
+ default: 10,
118
+ description: "Number of results to return"
119
+ },
120
+ filters: {
121
+ type: "object",
122
+ properties: {
123
+ visible: { type: "number", minimum: 0, description: "Minimum site visibility" },
124
+ traff: { type: "integer", minimum: 0, description: "Minimum estimated traffic" },
125
+ minus_domains: {
126
+ type: "array",
127
+ items: {
128
+ type: "string",
129
+ pattern: "^([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\\.)+[a-zA-Z]{2,}$"
130
+ },
131
+ minItems: 1,
132
+ maxItems: 50,
133
+ uniqueItems: true,
134
+ description: "Array of domains to exclude from the analysis."
135
+ }
136
+ },
137
+ additionalProperties: false,
138
+ description: "Optional filter conditions"
139
+ }
140
+ },
141
+ required: ["domain", "se", "size"],
142
+ additionalProperties: false
143
+ };
144
+ }
145
+ async handle(call) {
146
+ try {
147
+ const params = validation_js_1.competitorsGetSchema.parse(call.arguments);
148
+ const result = await this.domainService.getCompetitors(params);
149
+ return this.createSuccessResponse(result);
150
+ }
151
+ catch (error) {
152
+ if (error instanceof zod_1.z.ZodError) {
153
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
154
+ }
155
+ return this.createErrorResponse(error);
156
+ }
157
+ }
158
+ }
159
+ exports.CompetitorsHandler = CompetitorsHandler;
160
+ class DomainKeywordsHandler extends base_js_1.BaseHandler {
161
+ domainService;
162
+ constructor() {
163
+ super();
164
+ const config = (0, config_js_1.loadConfig)();
165
+ this.domainService = new domain_tools_js_1.DomainService(config);
166
+ }
167
+ getName() {
168
+ return 'get_domain_keywords';
169
+ }
170
+ getDescription() {
171
+ return 'Get keywords that domain ranks for in Google search results. Includes position, traffic, difficulty analysis with comprehensive SEO insights and performance metrics.';
172
+ }
173
+ getInputSchema() {
174
+ return {
175
+ type: "object",
176
+ properties: {
177
+ domain: {
178
+ type: "string",
179
+ pattern: "^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",
180
+ minLength: 4,
181
+ maxLength: 253,
182
+ description: "Domain name to analyze"
183
+ },
184
+ se: {
185
+ type: "string",
186
+ enum: [
187
+ 'g_us', 'g_uk', 'g_au', 'g_ca', 'g_de',
188
+ 'g_fr', 'g_ua', 'g_br', 'g_mx', 'g_es',
189
+ 'g_it', 'g_kz'
190
+ ],
191
+ default: 'g_us',
192
+ description: "Search engine database ID"
193
+ },
194
+ withSubdomains: { type: "boolean", description: "Include subdomains in analysis", default: false },
195
+ withIntents: { type: "boolean", description: "Include keyword intents (works for g_ua and g_us only)", default: false },
196
+ url: { type: "string", description: "Specific URL to filter results" },
197
+ keywords: {
198
+ type: "array",
199
+ items: { type: "string", minLength: 1, maxLength: 100 },
200
+ maxItems: 50,
201
+ description: "Array of keywords to search for"
202
+ },
203
+ minusKeywords: {
204
+ type: "array",
205
+ items: { type: "string", minLength: 1, maxLength: 100 },
206
+ maxItems: 50,
207
+ description: "Array of keywords to exclude from search"
208
+ },
209
+ page: { type: "integer", minimum: 1, default: 1, description: "Page number" },
210
+ size: { type: "integer", minimum: 1, maximum: 1000, default: 100, description: "Number of results per page" },
211
+ sort: {
212
+ type: "object",
213
+ properties: {
214
+ position: { type: "string", enum: ["asc", "desc"] },
215
+ region_queries_count: { type: "string", enum: ["asc", "desc"] },
216
+ cost: { type: "string", enum: ["asc", "desc"] },
217
+ traff: { type: "string", enum: ["asc", "desc"] },
218
+ difficulty: { type: "string", enum: ["asc", "desc"] },
219
+ keyword_length: { type: "string", enum: ["asc", "desc"] },
220
+ concurrency: { type: "string", enum: ["asc", "desc"] }
221
+ },
222
+ additionalProperties: false,
223
+ description: "Sort configuration"
224
+ },
225
+ filters: {
226
+ type: "object",
227
+ properties: {
228
+ position: { type: "integer", minimum: 1, maximum: 100 },
229
+ position_from: { type: "integer", minimum: 1, maximum: 100 },
230
+ position_to: { type: "integer", minimum: 1, maximum: 100 },
231
+ cost: { type: "number", minimum: 0 },
232
+ cost_from: { type: "number", minimum: 0 },
233
+ cost_to: { type: "number", minimum: 0 },
234
+ region_queries_count: { type: "integer", minimum: 0 },
235
+ region_queries_count_from: { type: "integer", minimum: 0 },
236
+ region_queries_count_to: { type: "integer", minimum: 0 },
237
+ traff: { type: "integer", minimum: 0 },
238
+ difficulty: { type: "number", minimum: 0, maximum: 100 },
239
+ difficulty_from: { type: "number", minimum: 0, maximum: 100 },
240
+ difficulty_to: { type: "number", minimum: 0, maximum: 100 },
241
+ keyword_length: { type: "integer", minimum: 1 },
242
+ concurrency: { type: "integer", minimum: 1, maximum: 100 },
243
+ concurrency_from: { type: "integer", minimum: 1, maximum: 100 },
244
+ concurrency_to: { type: "integer", minimum: 1, maximum: 100 },
245
+ right_spelling: { type: "boolean" },
246
+ keyword_contain: { type: "string" },
247
+ keyword_not_contain: { type: "string" },
248
+ intents_contain: {
249
+ type: "array",
250
+ items: { type: "string", enum: ["informational", "navigational", "commercial", "transactional"] }
251
+ },
252
+ intents_not_contain: {
253
+ type: "array",
254
+ items: { type: "string", enum: ["informational", "navigational", "commercial", "transactional"] }
255
+ }
256
+ },
257
+ additionalProperties: false,
258
+ description: "Filter conditions"
259
+ }
260
+ },
261
+ required: ["domain", "se"],
262
+ additionalProperties: false
263
+ };
264
+ }
265
+ async handle(call) {
266
+ try {
267
+ const params = validation_js_1.domainKeywordsSchema.parse(call.arguments);
268
+ const result = await this.domainService.getDomainKeywords(params);
269
+ return this.createSuccessResponse(result);
270
+ }
271
+ catch (error) {
272
+ if (error instanceof zod_1.z.ZodError) {
273
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
274
+ }
275
+ return this.createErrorResponse(error);
276
+ }
277
+ }
278
+ }
279
+ exports.DomainKeywordsHandler = DomainKeywordsHandler;
280
+ class DomainUrlsHandler extends base_js_1.BaseHandler {
281
+ domainService;
282
+ constructor() {
283
+ super();
284
+ const config = (0, config_js_1.loadConfig)();
285
+ this.domainService = new domain_tools_js_1.DomainService(config);
286
+ }
287
+ getName() {
288
+ return 'get_domain_urls';
289
+ }
290
+ getDescription() {
291
+ return 'Get URLs within a domain and keyword count for each URL. Analyze URL structure, performance distribution, and identify top-performing pages. Each URL costs 1 API credit, minimum 1 credit per request.';
292
+ }
293
+ getInputSchema() {
294
+ return {
295
+ type: "object",
296
+ properties: {
297
+ domain: {
298
+ type: "string",
299
+ pattern: "^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",
300
+ minLength: 4,
301
+ maxLength: 253,
302
+ description: "Domain name to analyze"
303
+ },
304
+ se: {
305
+ type: "string",
306
+ enum: [
307
+ "g_us", "g_uk", "g_au", "g_ca", "g_de",
308
+ "g_fr", "g_kz", "g_br", "g_mx", "g_es",
309
+ "g_it", "g_nl", "g_pl", "g_ua"
310
+ ],
311
+ default: "g_us",
312
+ description: "Search engine database ID"
313
+ },
314
+ filters: {
315
+ type: "object",
316
+ properties: {
317
+ url_prefix: { type: "string", maxLength: 500, description: "Filter URLs that start with given prefix" },
318
+ url_contain: { type: "string", maxLength: 200, description: "Filter URLs that contain specified substring" },
319
+ url_not_contain: { type: "string", maxLength: 200, description: "Exclude URLs that contain specified substring" }
320
+ },
321
+ additionalProperties: false,
322
+ description: "URL filtering options"
323
+ },
324
+ sort: {
325
+ type: "object",
326
+ properties: {
327
+ keywords: { type: "string", enum: ["asc", "desc"], description: "Sort by number of keywords" }
328
+ },
329
+ additionalProperties: false,
330
+ description: "Sort configuration"
331
+ },
332
+ page: { type: "integer", minimum: 1, default: 1, description: "Page number" },
333
+ size: { type: "integer", minimum: 1, maximum: 1000, default: 100, description: "Number of results per page" }
334
+ },
335
+ required: ["domain", "se"],
336
+ additionalProperties: false
337
+ };
338
+ }
339
+ async handle(call) {
340
+ try {
341
+ const params = validation_js_1.domainUrlsSchema.parse(call.arguments);
342
+ const result = await this.domainService.getDomainUrls(params);
343
+ return this.createSuccessResponse(result);
344
+ }
345
+ catch (error) {
346
+ if (error instanceof zod_1.z.ZodError) {
347
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
348
+ }
349
+ return this.createErrorResponse(error);
350
+ }
351
+ }
352
+ }
353
+ exports.DomainUrlsHandler = DomainUrlsHandler;
354
+ class DomainRegionsCountHandler extends base_js_1.BaseHandler {
355
+ domainService;
356
+ constructor() {
357
+ super();
358
+ const config = (0, config_js_1.loadConfig)();
359
+ this.domainService = new domain_tools_js_1.DomainService(config);
360
+ }
361
+ getName() {
362
+ return 'get_domain_regions_count';
363
+ }
364
+ getDescription() {
365
+ return '**REQUIRED FIRST STEP** for domain analysis: Determines optimal regional database (se parameter) by analyzing domain keyword presence across all Google regions. This tool identifies which regional database contains the most keyword data for the domain, ensuring subsequent analysis uses the correct market context. \n' +
366
+ '**WORKFLOW:** Always call this first → use the top region from results as `se` parameter in serpstat_domains_info, get_domain_keywords, get_domain_urls, and serpstat_get_competitors.\n' +
367
+ 'Returns: keyword count by country, regional performance comparison, and identifies primary market for the domain.';
368
+ }
369
+ getInputSchema() {
370
+ return {
371
+ type: "object",
372
+ properties: {
373
+ domain: {
374
+ type: "string",
375
+ pattern: "^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",
376
+ minLength: 4,
377
+ maxLength: 253,
378
+ description: "Domain name to analyze"
379
+ },
380
+ sort: {
381
+ type: "string",
382
+ enum: ["keywords_count", "country_name_en", "db_name"],
383
+ description: "Sort by field",
384
+ default: undefined
385
+ },
386
+ order: {
387
+ type: "string",
388
+ enum: ["asc", "desc"],
389
+ description: "Sort order",
390
+ default: undefined
391
+ }
392
+ },
393
+ required: ["domain"],
394
+ additionalProperties: false
395
+ };
396
+ }
397
+ async handle(call) {
398
+ try {
399
+ const params = validation_js_1.domainRegionsCountSchema.parse(call.arguments);
400
+ const result = await this.domainService.getDomainRegionsCount(params);
401
+ return this.createSuccessResponse(result);
402
+ }
403
+ catch (error) {
404
+ if (error instanceof zod_1.z.ZodError) {
405
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
406
+ }
407
+ return this.createErrorResponse(error);
408
+ }
409
+ }
410
+ }
411
+ exports.DomainRegionsCountHandler = DomainRegionsCountHandler;
412
+ class GetDomainUniqKeywordsHandler extends base_js_1.BaseHandler {
413
+ domainService;
414
+ constructor() {
415
+ super();
416
+ const config = (0, config_js_1.loadConfig)();
417
+ this.domainService = new domain_tools_js_1.DomainService(config);
418
+ }
419
+ getName() {
420
+ return 'get_domain_uniq_keywords';
421
+ }
422
+ getDescription() {
423
+ return 'Returns unique keywords of two domains for which a third domain does not rank. Equivalent to a Domain vs domain report.';
424
+ }
425
+ getInputSchema() {
426
+ return {
427
+ type: 'object',
428
+ properties: {
429
+ se: {
430
+ type: 'string',
431
+ enum: [
432
+ 'g_us', 'g_uk', 'g_au', 'g_ca', 'g_de', 'g_fr', 'g_kz', 'g_br', 'g_mx', 'g_es', 'g_it', 'g_nl', 'g_pl', 'g_ua'
433
+ ],
434
+ description: 'Search engine database ID',
435
+ default: 'g_us'
436
+ },
437
+ domains: {
438
+ type: 'array',
439
+ description: 'Array of domains to analyze for unique keywords (min 1, max 2)',
440
+ minItems: 1,
441
+ maxItems: 2,
442
+ uniqueItems: true,
443
+ items: {
444
+ type: 'string',
445
+ pattern: '^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$',
446
+ minLength: 4,
447
+ maxLength: 253
448
+ }
449
+ },
450
+ minusDomain: {
451
+ type: 'string',
452
+ description: 'Domain with keywords which must not intersect with domains parameter',
453
+ pattern: '^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$',
454
+ minLength: 4,
455
+ maxLength: 253
456
+ },
457
+ page: {
458
+ type: 'integer',
459
+ description: 'Page number',
460
+ minimum: 1,
461
+ default: 1
462
+ },
463
+ size: {
464
+ type: 'integer',
465
+ description: 'Number of results per page',
466
+ minimum: 1,
467
+ maximum: 1000,
468
+ default: 100
469
+ },
470
+ filters: {
471
+ type: 'object',
472
+ description: 'Filter conditions for unique keywords',
473
+ properties: {
474
+ right_spelling: { type: 'boolean', description: 'Include or exclude correctly spelled keywords' },
475
+ misspelled: { type: 'boolean', description: 'Include or exclude misspelled keywords' },
476
+ keywords: {
477
+ type: 'array',
478
+ description: 'List of included keywords',
479
+ items: { type: 'string', minLength: 1, maxLength: 100 },
480
+ maxItems: 100
481
+ },
482
+ minus_keywords: {
483
+ type: 'array',
484
+ description: 'List of excluded keywords',
485
+ items: { type: 'string', minLength: 1, maxLength: 100 },
486
+ maxItems: 100
487
+ },
488
+ queries: { type: 'integer', description: 'Exact number of keyword searches per month', minimum: 0 },
489
+ queries_from: { type: 'integer', description: 'Minimum number of keyword searches per month', minimum: 0 },
490
+ queries_to: { type: 'integer', description: 'Maximum number of keyword searches per month', minimum: 0 },
491
+ region_queries_count: { type: 'integer', description: 'Exact search volume for the selected region', minimum: 0 },
492
+ region_queries_count_from: { type: 'integer', description: 'Minimum search volume for the selected region', minimum: 0 },
493
+ region_queries_count_to: { type: 'integer', description: 'Maximum search volume for the selected region', minimum: 0 },
494
+ region_queries_count_wide: { type: 'integer', description: 'Exact search volume in broad match', minimum: 0 },
495
+ region_queries_count_wide_from: { type: 'integer', description: 'Minimum search volume in broad match', minimum: 0 },
496
+ region_queries_count_wide_to: { type: 'integer', description: 'Maximum search volume in broad match', minimum: 0 },
497
+ cost: { type: 'number', description: 'Exact cost per click (in USD)', minimum: 0 },
498
+ cost_from: { type: 'number', description: 'Minimum cost per click (in USD)', minimum: 0 },
499
+ cost_to: { type: 'number', description: 'Maximum cost per click (in USD)', minimum: 0 },
500
+ concurrency: { type: 'integer', description: 'Exact competition level (1-100)', minimum: 1, maximum: 100 },
501
+ concurrency_from: { type: 'integer', description: 'Minimum competition level (1-100)', minimum: 1, maximum: 100 },
502
+ concurrency_to: { type: 'integer', description: 'Maximum competition level (1-100)', minimum: 1, maximum: 100 },
503
+ difficulty: { type: 'integer', description: 'Exact keyword difficulty', minimum: 0, maximum: 100 },
504
+ difficulty_from: { type: 'integer', description: 'Minimum keyword difficulty', minimum: 0, maximum: 100 },
505
+ difficulty_to: { type: 'integer', description: 'Maximum keyword difficulty', minimum: 0, maximum: 100 },
506
+ keyword_length: { type: 'integer', description: 'Exact number of words in a keyword', minimum: 1 },
507
+ keyword_length_from: { type: 'integer', description: 'Minimum number of words in a keyword', minimum: 1 },
508
+ keyword_length_to: { type: 'integer', description: 'Maximum number of words in a keyword', minimum: 1 },
509
+ traff: { type: 'integer', description: 'Exact traffic volume for the keyword', minimum: 0 },
510
+ traff_from: { type: 'integer', description: 'Minimum traffic volume for the keyword', minimum: 0 },
511
+ traff_to: { type: 'integer', description: 'Maximum traffic volume for the keyword', minimum: 0 },
512
+ position: { type: 'integer', description: 'Exact keyword position in the SERP', minimum: 1, maximum: 100 },
513
+ position_from: { type: 'integer', description: 'Minimum keyword position in the SERP', minimum: 1, maximum: 100 },
514
+ position_to: { type: 'integer', description: 'Maximum keyword position in the SERP', minimum: 1, maximum: 100 }
515
+ },
516
+ additionalProperties: false
517
+ }
518
+ },
519
+ required: ['se', 'domains', 'minusDomain'],
520
+ additionalProperties: false
521
+ };
522
+ }
523
+ async handle(call) {
524
+ try {
525
+ const params = validation_js_1.domainUniqKeywordsSchema.parse(call.arguments);
526
+ const result = await this.domainService.getDomainUniqKeywords(params);
527
+ return this.createSuccessResponse(result);
528
+ }
529
+ catch (error) {
530
+ if (error instanceof zod_1.z.ZodError) {
531
+ return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
532
+ }
533
+ return this.createErrorResponse(error);
534
+ }
535
+ }
536
+ }
537
+ exports.GetDomainUniqKeywordsHandler = GetDomainUniqKeywordsHandler;
538
+ //# sourceMappingURL=domain_tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain_tools.js","sourceRoot":"","sources":["../../src/handlers/domain_tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseHandler } from './base.js';
2
+ import { MCPToolCall, MCPToolResponse } from '../types/mcp.js';
3
+ export declare class GetKeywordsHandler extends BaseHandler {
4
+ private keywordService;
5
+ constructor();
6
+ getName(): string;
7
+ getDescription(): string;
8
+ getInputSchema(): object;
9
+ handle(call: MCPToolCall): Promise<MCPToolResponse>;
10
+ }
11
+ export declare class GetRelatedKeywordsHandler extends BaseHandler {
12
+ private keywordService;
13
+ constructor();
14
+ getName(): string;
15
+ getDescription(): string;
16
+ getInputSchema(): object;
17
+ handle(call: MCPToolCall): Promise<MCPToolResponse>;
18
+ }
19
+ //# sourceMappingURL=keyword_tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyword_tools.d.ts","sourceRoot":"","sources":["../../src/handlers/keyword_tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK/D,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAiGlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,yBAA0B,SAAQ,WAAW;IACtD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IA8FlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAS5D"}