@disruptorganic/mcp-google-search-console 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 (108) hide show
  1. package/.env.example +141 -0
  2. package/LICENSE +21 -0
  3. package/README.md +0 -0
  4. package/dist/auth/index.d.ts +3 -0
  5. package/dist/auth/index.d.ts.map +1 -0
  6. package/dist/auth/index.js +2 -0
  7. package/dist/auth/index.js.map +1 -0
  8. package/dist/auth/oauth2.d.ts +31 -0
  9. package/dist/auth/oauth2.d.ts.map +1 -0
  10. package/dist/auth/oauth2.js +380 -0
  11. package/dist/auth/oauth2.js.map +1 -0
  12. package/dist/config/index.d.ts +36 -0
  13. package/dist/config/index.d.ts.map +1 -0
  14. package/dist/config/index.js +87 -0
  15. package/dist/config/index.js.map +1 -0
  16. package/dist/gsc/client.d.ts +72 -0
  17. package/dist/gsc/client.d.ts.map +1 -0
  18. package/dist/gsc/client.js +243 -0
  19. package/dist/gsc/client.js.map +1 -0
  20. package/dist/gsc/index.d.ts +3 -0
  21. package/dist/gsc/index.d.ts.map +1 -0
  22. package/dist/gsc/index.js +3 -0
  23. package/dist/gsc/index.js.map +1 -0
  24. package/dist/gsc/properties.d.ts +42 -0
  25. package/dist/gsc/properties.d.ts.map +1 -0
  26. package/dist/gsc/properties.js +393 -0
  27. package/dist/gsc/properties.js.map +1 -0
  28. package/dist/gsc/queries.d.ts +73 -0
  29. package/dist/gsc/queries.d.ts.map +1 -0
  30. package/dist/gsc/queries.js +390 -0
  31. package/dist/gsc/queries.js.map +1 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +186 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/tools/compare-date-ranges.d.ts +83 -0
  37. package/dist/tools/compare-date-ranges.d.ts.map +1 -0
  38. package/dist/tools/compare-date-ranges.js +462 -0
  39. package/dist/tools/compare-date-ranges.js.map +1 -0
  40. package/dist/tools/get-property-info.d.ts +30 -0
  41. package/dist/tools/get-property-info.d.ts.map +1 -0
  42. package/dist/tools/get-property-info.js +174 -0
  43. package/dist/tools/get-property-info.js.map +1 -0
  44. package/dist/tools/get-top-pages.d.ts +103 -0
  45. package/dist/tools/get-top-pages.d.ts.map +1 -0
  46. package/dist/tools/get-top-pages.js +254 -0
  47. package/dist/tools/get-top-pages.js.map +1 -0
  48. package/dist/tools/get-top-queries.d.ts +103 -0
  49. package/dist/tools/get-top-queries.d.ts.map +1 -0
  50. package/dist/tools/get-top-queries.js +254 -0
  51. package/dist/tools/get-top-queries.js.map +1 -0
  52. package/dist/tools/health-check.d.ts +12 -0
  53. package/dist/tools/health-check.d.ts.map +1 -0
  54. package/dist/tools/health-check.js +107 -0
  55. package/dist/tools/health-check.js.map +1 -0
  56. package/dist/tools/index.d.ts +1124 -0
  57. package/dist/tools/index.d.ts.map +1 -0
  58. package/dist/tools/index.js +70 -0
  59. package/dist/tools/index.js.map +1 -0
  60. package/dist/tools/list-properties.d.ts +50 -0
  61. package/dist/tools/list-properties.d.ts.map +1 -0
  62. package/dist/tools/list-properties.js +234 -0
  63. package/dist/tools/list-properties.js.map +1 -0
  64. package/dist/tools/query-advanced.d.ts +109 -0
  65. package/dist/tools/query-advanced.d.ts.map +1 -0
  66. package/dist/tools/query-advanced.js +378 -0
  67. package/dist/tools/query-advanced.js.map +1 -0
  68. package/dist/tools/query-by-keyword.d.ts +115 -0
  69. package/dist/tools/query-by-keyword.d.ts.map +1 -0
  70. package/dist/tools/query-by-keyword.js +339 -0
  71. package/dist/tools/query-by-keyword.js.map +1 -0
  72. package/dist/tools/query-by-url.d.ts +116 -0
  73. package/dist/tools/query-by-url.d.ts.map +1 -0
  74. package/dist/tools/query-by-url.js +366 -0
  75. package/dist/tools/query-by-url.js.map +1 -0
  76. package/dist/utils/cache.d.ts +22 -0
  77. package/dist/utils/cache.d.ts.map +1 -0
  78. package/dist/utils/cache.js +75 -0
  79. package/dist/utils/cache.js.map +1 -0
  80. package/dist/utils/index.d.ts +8 -0
  81. package/dist/utils/index.d.ts.map +1 -0
  82. package/dist/utils/index.js +8 -0
  83. package/dist/utils/index.js.map +1 -0
  84. package/dist/utils/logger.d.ts +4 -0
  85. package/dist/utils/logger.d.ts.map +1 -0
  86. package/dist/utils/logger.js +15 -0
  87. package/dist/utils/logger.js.map +1 -0
  88. package/dist/utils/metrics.d.ts +9 -0
  89. package/dist/utils/metrics.d.ts.map +1 -0
  90. package/dist/utils/metrics.js +54 -0
  91. package/dist/utils/metrics.js.map +1 -0
  92. package/dist/utils/rate-limiter.d.ts +24 -0
  93. package/dist/utils/rate-limiter.d.ts.map +1 -0
  94. package/dist/utils/rate-limiter.js +175 -0
  95. package/dist/utils/rate-limiter.js.map +1 -0
  96. package/dist/utils/token-estimator.d.ts +33 -0
  97. package/dist/utils/token-estimator.d.ts.map +1 -0
  98. package/dist/utils/token-estimator.js +226 -0
  99. package/dist/utils/token-estimator.js.map +1 -0
  100. package/dist/utils/types.d.ts +68 -0
  101. package/dist/utils/types.d.ts.map +1 -0
  102. package/dist/utils/types.js +13 -0
  103. package/dist/utils/types.js.map +1 -0
  104. package/dist/utils/validators.d.ts +579 -0
  105. package/dist/utils/validators.d.ts.map +1 -0
  106. package/dist/utils/validators.js +358 -0
  107. package/dist/utils/validators.js.map +1 -0
  108. package/package.json +73 -0
@@ -0,0 +1,378 @@
1
+ import { listProperties, matchProperty, generatePropertyMatchError } from '../gsc/properties.js';
2
+ import { queryAdvancedParamsSchema } from '../utils/validators.js';
3
+ import { chunkResults } from '../utils/token-estimator.js';
4
+ import { logger } from '../utils/logger.js';
5
+ export const queryAdvancedTool = {
6
+ name: 'query_advanced',
7
+ description: 'Performs multi-dimensional custom queries with up to 3 dimensions (e.g., query + device + country) and flexible filtering. Use for complex analysis not covered by specialized tools. Supports all GSC dimensions and metrics with sorting and aggregation options. Automatically chunks results to stay under token limits. IMPORTANT: Use list_properties first to get the correct property identifier.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ property: {
12
+ type: 'string',
13
+ description: 'Property identifier from list_properties (e.g., "sc-domain:example.com")',
14
+ },
15
+ startDate: {
16
+ type: 'string',
17
+ description: 'Start date in ISO 8601 format (YYYY-MM-DD)',
18
+ pattern: '^\\d{4}-\\d{2}-\\d{2}$',
19
+ },
20
+ endDate: {
21
+ type: 'string',
22
+ description: 'End date in ISO 8601 format (YYYY-MM-DD)',
23
+ pattern: '^\\d{4}-\\d{2}-\\d{2}$',
24
+ },
25
+ dimensions: {
26
+ type: 'array',
27
+ items: {
28
+ type: 'string',
29
+ enum: ['query', 'page', 'country', 'device', 'searchAppearance', 'date'],
30
+ },
31
+ description: 'Array of 1-3 dimensions to group results by',
32
+ minItems: 1,
33
+ maxItems: 3,
34
+ },
35
+ filters: {
36
+ type: 'array',
37
+ items: {
38
+ type: 'object',
39
+ properties: {
40
+ dimension: {
41
+ type: 'string',
42
+ enum: ['query', 'page', 'country', 'device', 'searchAppearance', 'date'],
43
+ },
44
+ operator: {
45
+ type: 'string',
46
+ enum: ['equals', 'notEquals', 'contains', 'notContains', 'includingRegex', 'excludingRegex'],
47
+ },
48
+ expression: {
49
+ type: 'string',
50
+ },
51
+ },
52
+ required: ['dimension', 'operator', 'expression'],
53
+ },
54
+ description: 'Optional array of filters to apply',
55
+ },
56
+ searchType: {
57
+ type: 'string',
58
+ enum: ['web', 'image', 'video', 'news', 'discover', 'googleNews'],
59
+ description: 'Search type filter (default: web)',
60
+ default: 'web',
61
+ },
62
+ rowLimit: {
63
+ type: 'number',
64
+ description: 'Maximum rows to retrieve (1-25000, default: 25000)',
65
+ minimum: 1,
66
+ maximum: 25000,
67
+ default: 25000,
68
+ },
69
+ sortBy: {
70
+ type: 'string',
71
+ enum: ['clicks', 'impressions', 'ctr', 'position'],
72
+ description: 'Metric to sort by (default: clicks)',
73
+ default: 'clicks',
74
+ },
75
+ sortOrder: {
76
+ type: 'string',
77
+ enum: ['asc', 'desc'],
78
+ description: 'Sort order (default: desc)',
79
+ default: 'desc',
80
+ },
81
+ offset: {
82
+ type: 'number',
83
+ description: 'Pagination offset (default: 0)',
84
+ default: 0,
85
+ minimum: 0,
86
+ },
87
+ limit: {
88
+ type: 'number',
89
+ description: 'Results per chunk - auto-calculated if not provided',
90
+ minimum: 1,
91
+ maximum: 25000,
92
+ },
93
+ },
94
+ required: ['property', 'startDate', 'endDate', 'dimensions'],
95
+ },
96
+ };
97
+ function transformOperator(mcpOperator) {
98
+ const operatorMap = {
99
+ 'equals': 'EQUALS',
100
+ 'notEquals': 'NOT_EQUALS',
101
+ 'contains': 'CONTAINS',
102
+ 'notContains': 'NOT_CONTAINS',
103
+ 'includingRegex': 'INCLUDING_REGEX',
104
+ 'excludingRegex': 'EXCLUDING_REGEX',
105
+ };
106
+ const result = operatorMap[mcpOperator];
107
+ if (!result) {
108
+ logger.warn('Unknown filter operator, using as-is', { mcpOperator });
109
+ return mcpOperator.toUpperCase();
110
+ }
111
+ return result;
112
+ }
113
+ function transformFiltersToGSCFormat(filters) {
114
+ if (!filters || filters.length === 0) {
115
+ return undefined;
116
+ }
117
+ return {
118
+ filters: filters.map(filter => ({
119
+ dimension: filter.dimension,
120
+ operator: transformOperator(filter.operator),
121
+ expression: filter.expression,
122
+ })),
123
+ };
124
+ }
125
+ function transformRowToMCPFormat(row, dimensions) {
126
+ const result = {
127
+ clicks: 0,
128
+ impressions: 0,
129
+ ctr: 0,
130
+ position: 0,
131
+ };
132
+ if (row.keys && Array.isArray(row.keys)) {
133
+ row.keys.forEach((key, index) => {
134
+ const dimension = dimensions[index];
135
+ if (dimension) {
136
+ result[dimension] = key;
137
+ }
138
+ });
139
+ }
140
+ result.clicks = row.clicks || 0;
141
+ result.impressions = row.impressions || 0;
142
+ result.ctr = row.ctr || 0;
143
+ result.position = row.position || 0;
144
+ return result;
145
+ }
146
+ function sortResults(results, sortBy, sortOrder) {
147
+ results.sort((a, b) => {
148
+ const aVal = a[sortBy];
149
+ const bVal = b[sortBy];
150
+ if (aVal === undefined || aVal === null)
151
+ return 1;
152
+ if (bVal === undefined || bVal === null)
153
+ return -1;
154
+ const direction = sortOrder === 'asc' ? 1 : -1;
155
+ return direction * (aVal - bVal);
156
+ });
157
+ }
158
+ export async function handleQueryAdvanced(params, client) {
159
+ try {
160
+ logger.info('Handling query_advanced request', {
161
+ propertyInput: params.property,
162
+ dimensions: params.dimensions,
163
+ filterCount: params.filters?.length || 0,
164
+ dateRange: params.startDate && params.endDate ? `${params.startDate} to ${params.endDate}` : 'not provided',
165
+ });
166
+ const validationResult = queryAdvancedParamsSchema.safeParse(params);
167
+ if (!validationResult.success) {
168
+ const errorMessages = validationResult.error.issues.map(issue => {
169
+ const path = issue.path.length > 0 ? `${issue.path.join('.')}: ` : '';
170
+ return `${path}${issue.message}`;
171
+ }).join('; ');
172
+ logger.error('Input validation failed', {
173
+ errors: errorMessages,
174
+ params,
175
+ });
176
+ return {
177
+ content: [{
178
+ type: 'text',
179
+ text: JSON.stringify({
180
+ error: 'Input validation failed',
181
+ details: errorMessages,
182
+ }, null, 2),
183
+ }],
184
+ isError: true,
185
+ };
186
+ }
187
+ const validated = validationResult.data;
188
+ const { property, startDate, endDate, dimensions, filters, searchType = 'web', rowLimit = 25000, sortBy = 'clicks', sortOrder = 'desc', offset = 0, limit, } = validated;
189
+ logger.debug('Fetching available properties');
190
+ const availableProperties = await listProperties(client);
191
+ if (availableProperties.length === 0) {
192
+ logger.warn('No properties found for this account');
193
+ return {
194
+ content: [{
195
+ type: 'text',
196
+ text: JSON.stringify({
197
+ error: 'No properties found',
198
+ details: 'No Google Search Console properties are accessible with this account. Please verify your account has access to at least one property.',
199
+ }, null, 2),
200
+ }],
201
+ isError: true,
202
+ };
203
+ }
204
+ const matchResult = matchProperty(property, availableProperties);
205
+ if (!matchResult.matched) {
206
+ const errorMessage = generatePropertyMatchError(matchResult, availableProperties);
207
+ logger.error('Property matching failed', {
208
+ searchInput: property,
209
+ matchType: matchResult.matchType,
210
+ alternativeCount: matchResult.alternatives?.length || 0,
211
+ });
212
+ return {
213
+ content: [{
214
+ type: 'text',
215
+ text: JSON.stringify({
216
+ error: 'Property not found or ambiguous',
217
+ details: errorMessage,
218
+ }, null, 2),
219
+ }],
220
+ isError: true,
221
+ };
222
+ }
223
+ const matchedProperty = matchResult.matched;
224
+ logger.info('Property matched successfully', {
225
+ searchInput: property,
226
+ matched: matchedProperty.propertyUrl,
227
+ matchType: matchResult.matchType,
228
+ });
229
+ const request = {
230
+ startDate,
231
+ endDate,
232
+ dimensions,
233
+ type: searchType,
234
+ dataState: 'final',
235
+ rowLimit: Math.min(rowLimit, 25000),
236
+ startRow: 0,
237
+ };
238
+ if (filters && filters.length > 0) {
239
+ const transformedFilters = transformFiltersToGSCFormat(filters);
240
+ if (transformedFilters) {
241
+ request.dimensionFilterGroups = [transformedFilters];
242
+ }
243
+ }
244
+ logger.debug('GSC API request prepared', {
245
+ dimensions: request.dimensions,
246
+ filters: request.dimensionFilterGroups?.length || 0,
247
+ searchType: request.type,
248
+ rowLimit: request.rowLimit,
249
+ });
250
+ logger.info('Executing advanced query', {
251
+ property: matchedProperty.propertyUrl,
252
+ dimensions,
253
+ dateRange: `${startDate} to ${endDate}`,
254
+ });
255
+ const response = await client.query({
256
+ propertyUrl: matchedProperty.propertyUrl,
257
+ startDate,
258
+ endDate,
259
+ dimensions,
260
+ filters: request.dimensionFilterGroups ? [transformFiltersToGSCFormat(filters)].filter(Boolean) : undefined,
261
+ searchType,
262
+ rowLimit: request.rowLimit,
263
+ startRow: request.startRow,
264
+ dataState: 'final',
265
+ });
266
+ if (!response || !response.rows || response.rows.length === 0) {
267
+ logger.info('Query returned no results', {
268
+ property: matchedProperty.propertyUrl,
269
+ dimensions,
270
+ });
271
+ return {
272
+ content: [{
273
+ type: 'text',
274
+ text: JSON.stringify({
275
+ property: matchedProperty.propertyUrl,
276
+ dateRange: { start: startDate, end: endDate },
277
+ dimensions,
278
+ filters: filters || [],
279
+ searchType,
280
+ sortBy,
281
+ sortOrder,
282
+ results: [],
283
+ pagination: {
284
+ offset: 0,
285
+ limit: 0,
286
+ total_rows: 0,
287
+ current_chunk: 1,
288
+ total_chunks: 1,
289
+ has_more: false,
290
+ },
291
+ }, null, 2),
292
+ }],
293
+ };
294
+ }
295
+ logger.debug('Transforming GSC response', {
296
+ rowCount: response.rows.length,
297
+ });
298
+ const results = response.rows.map((row) => transformRowToMCPFormat(row, dimensions));
299
+ logger.debug('Sorting results', { sortBy, sortOrder });
300
+ sortResults(results, sortBy, sortOrder);
301
+ logger.debug('Applying chunking', {
302
+ totalRows: results.length,
303
+ offset,
304
+ limit: limit || 'auto',
305
+ });
306
+ const chunked = chunkResults(results, offset, limit);
307
+ logger.info('Results chunked', {
308
+ totalRows: results.length,
309
+ offset,
310
+ limit: chunked.pagination.limit,
311
+ currentChunk: chunked.pagination.current_chunk,
312
+ totalChunks: chunked.pagination.total_chunks,
313
+ hasMore: chunked.pagination.has_more,
314
+ });
315
+ const responseObject = {
316
+ property: matchedProperty.propertyUrl,
317
+ dateRange: {
318
+ start: startDate,
319
+ end: endDate,
320
+ },
321
+ dimensions,
322
+ filters: filters || [],
323
+ searchType,
324
+ sortBy,
325
+ sortOrder,
326
+ results: chunked.results,
327
+ pagination: chunked.pagination,
328
+ };
329
+ logger.info('Query advanced completed successfully', {
330
+ property: matchedProperty.propertyUrl,
331
+ dimensions,
332
+ resultsReturned: chunked.results.length,
333
+ hasMore: chunked.pagination.has_more,
334
+ });
335
+ return {
336
+ content: [{
337
+ type: 'text',
338
+ text: JSON.stringify(responseObject, null, 2),
339
+ }],
340
+ };
341
+ }
342
+ catch (error) {
343
+ const errorMessage = error instanceof Error ? error.message : String(error);
344
+ const errorStack = error instanceof Error ? error.stack : undefined;
345
+ logger.error('Query advanced handler failed', {
346
+ error: errorMessage,
347
+ stack: errorStack,
348
+ params,
349
+ });
350
+ let userFriendlyMessage = errorMessage;
351
+ if (errorMessage.includes('permission') || errorMessage.includes('Permission')) {
352
+ userFriendlyMessage = `Permission denied for property ${params.property}. Use list_properties to see accessible properties.`;
353
+ }
354
+ else if (errorMessage.includes('not found') || errorMessage.includes('Not Found')) {
355
+ userFriendlyMessage = `Property ${params.property} not found. Use list_properties to get valid property identifiers.`;
356
+ }
357
+ else if (errorMessage.includes('dimension') || errorMessage.includes('Dimension')) {
358
+ userFriendlyMessage = 'Invalid dimension configuration. Valid dimensions: query, page, country, device, searchAppearance, date. Maximum 3 dimensions allowed per query.';
359
+ }
360
+ else if (errorMessage.includes('date') || errorMessage.includes('Date')) {
361
+ userFriendlyMessage = `Invalid date range. ${errorMessage}`;
362
+ }
363
+ else if (errorMessage.includes('rate limit') || errorMessage.includes('Rate limit')) {
364
+ userFriendlyMessage = 'Rate limit exceeded. Please wait a moment and try again.';
365
+ }
366
+ return {
367
+ content: [{
368
+ type: 'text',
369
+ text: JSON.stringify({
370
+ error: 'Query execution failed',
371
+ details: userFriendlyMessage,
372
+ }, null, 2),
373
+ }],
374
+ isError: true,
375
+ };
376
+ }
377
+ }
378
+ //# sourceMappingURL=query-advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-advanced.js","sourceRoot":"","sources":["../../src/tools/query-advanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ import { GSCClient } from '../gsc/client.js';
3
+ export interface ToolResponse {
4
+ content: Array<{
5
+ type: 'text';
6
+ text: string;
7
+ }>;
8
+ isError?: boolean;
9
+ }
10
+ export declare const QueryByKeywordSchema: z.ZodObject<{
11
+ property: z.ZodString;
12
+ keywords: z.ZodArray<z.ZodString, "many">;
13
+ startDate: z.ZodString;
14
+ endDate: z.ZodString;
15
+ searchType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["web", "image", "video", "news", "discover", "googleNews"]>>>;
16
+ dimensions: z.ZodOptional<z.ZodArray<z.ZodEnum<["page", "device", "country", "searchAppearance", "date"]>, "many">>;
17
+ deviceType: z.ZodOptional<z.ZodEnum<["desktop", "mobile", "tablet"]>>;
18
+ country: z.ZodOptional<z.ZodString>;
19
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
20
+ limit: z.ZodOptional<z.ZodNumber>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ startDate: string;
23
+ endDate: string;
24
+ searchType: "web" | "image" | "video" | "news" | "discover" | "googleNews";
25
+ property: string;
26
+ offset: number;
27
+ keywords: string[];
28
+ dimensions?: ("page" | "country" | "device" | "searchAppearance" | "date")[] | undefined;
29
+ limit?: number | undefined;
30
+ deviceType?: "desktop" | "mobile" | "tablet" | undefined;
31
+ country?: string | undefined;
32
+ }, {
33
+ startDate: string;
34
+ endDate: string;
35
+ property: string;
36
+ keywords: string[];
37
+ dimensions?: ("page" | "country" | "device" | "searchAppearance" | "date")[] | undefined;
38
+ searchType?: "web" | "image" | "video" | "news" | "discover" | "googleNews" | undefined;
39
+ limit?: number | undefined;
40
+ deviceType?: "desktop" | "mobile" | "tablet" | undefined;
41
+ country?: string | undefined;
42
+ offset?: number | undefined;
43
+ }>;
44
+ export type QueryByKeywordParams = z.infer<typeof QueryByKeywordSchema>;
45
+ export declare const queryByKeywordTool: {
46
+ name: string;
47
+ description: string;
48
+ inputSchema: {
49
+ type: string;
50
+ properties: {
51
+ property: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ keywords: {
56
+ type: string;
57
+ items: {
58
+ type: string;
59
+ };
60
+ description: string;
61
+ minItems: number;
62
+ maxItems: number;
63
+ };
64
+ startDate: {
65
+ type: string;
66
+ description: string;
67
+ pattern: string;
68
+ };
69
+ endDate: {
70
+ type: string;
71
+ description: string;
72
+ pattern: string;
73
+ };
74
+ searchType: {
75
+ type: string;
76
+ enum: string[];
77
+ description: string;
78
+ default: string;
79
+ };
80
+ dimensions: {
81
+ type: string;
82
+ items: {
83
+ type: string;
84
+ enum: string[];
85
+ };
86
+ description: string;
87
+ };
88
+ deviceType: {
89
+ type: string;
90
+ enum: string[];
91
+ description: string;
92
+ };
93
+ country: {
94
+ type: string;
95
+ description: string;
96
+ pattern: string;
97
+ };
98
+ offset: {
99
+ type: string;
100
+ description: string;
101
+ default: number;
102
+ minimum: number;
103
+ };
104
+ limit: {
105
+ type: string;
106
+ description: string;
107
+ minimum: number;
108
+ maximum: number;
109
+ };
110
+ };
111
+ required: string[];
112
+ };
113
+ };
114
+ export declare function handleQueryByKeyword(params: any, client: GSCClient): Promise<ToolResponse>;
115
+ //# sourceMappingURL=query-by-keyword.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-by-keyword.d.ts","sourceRoot":"","sources":["../../src/tools/query-by-keyword.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAc7C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAYD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkD/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAcxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkE9B,CAAC;AA0FF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,YAAY,CAAC,CAiSvB"}