domain-search-mcp 1.1.4 → 1.1.5
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/dist/registrars/godaddy-mcp.d.ts +22 -2
- package/dist/registrars/godaddy-mcp.d.ts.map +1 -1
- package/dist/registrars/godaddy-mcp.js +118 -0
- package/dist/registrars/godaddy-mcp.js.map +1 -1
- package/dist/registrars/index.d.ts +1 -1
- package/dist/registrars/index.d.ts.map +1 -1
- package/dist/registrars/index.js.map +1 -1
- package/dist/tools/suggest_domains_smart.d.ts +7 -2
- package/dist/tools/suggest_domains_smart.d.ts.map +1 -1
- package/dist/tools/suggest_domains_smart.js +171 -56
- package/dist/tools/suggest_domains_smart.js.map +1 -1
- package/package.json +1 -1
- package/src/registrars/godaddy-mcp.ts +152 -1
- package/src/registrars/index.ts +6 -1
- package/src/tools/suggest_domains_smart.ts +187 -59
|
@@ -22,7 +22,16 @@ import type { DomainResult, TLDInfo } from '../types.js';
|
|
|
22
22
|
* Parse availability from GoDaddy MCP text response.
|
|
23
23
|
* The response is markdown-formatted text with different formats for single vs bulk queries.
|
|
24
24
|
*/
|
|
25
|
-
interface ParsedAvailability {
|
|
25
|
+
export interface ParsedAvailability {
|
|
26
|
+
available: boolean;
|
|
27
|
+
premium: boolean;
|
|
28
|
+
auction: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parsed suggestion from GoDaddy's domains_suggest response.
|
|
32
|
+
*/
|
|
33
|
+
export interface GodaddySuggestion {
|
|
34
|
+
domain: string;
|
|
26
35
|
available: boolean;
|
|
27
36
|
premium: boolean;
|
|
28
37
|
auction: boolean;
|
|
@@ -54,6 +63,18 @@ export declare class GodaddyMcpAdapter extends RegistrarAdapter {
|
|
|
54
63
|
* Get TLD info - not supported by GoDaddy MCP.
|
|
55
64
|
*/
|
|
56
65
|
getTldInfo(_tld: string): Promise<TLDInfo | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Get domain suggestions from GoDaddy MCP.
|
|
68
|
+
* Uses their domains_suggest tool for AI-powered suggestions.
|
|
69
|
+
*
|
|
70
|
+
* @param query - Keywords or business description (e.g., "sustainable fashion")
|
|
71
|
+
* @param options - Optional parameters for suggestion customization
|
|
72
|
+
* @returns Array of suggested domains with availability info
|
|
73
|
+
*/
|
|
74
|
+
suggestDomains(query: string, options?: {
|
|
75
|
+
tlds?: string[];
|
|
76
|
+
limit?: number;
|
|
77
|
+
}): Promise<GodaddySuggestion[]>;
|
|
57
78
|
/**
|
|
58
79
|
* Call a GoDaddy MCP tool via JSON-RPC.
|
|
59
80
|
*/
|
|
@@ -63,5 +84,4 @@ export declare class GodaddyMcpAdapter extends RegistrarAdapter {
|
|
|
63
84
|
* Singleton instance.
|
|
64
85
|
*/
|
|
65
86
|
export declare const godaddyMcpAdapter: GodaddyMcpAdapter;
|
|
66
|
-
export {};
|
|
67
87
|
//# sourceMappingURL=godaddy-mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"godaddy-mcp.d.ts","sourceRoot":"","sources":["../../src/registrars/godaddy-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,gBAAgB,EAAe,MAAM,WAAW,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCzD;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"godaddy-mcp.d.ts","sourceRoot":"","sources":["../../src/registrars/godaddy-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,gBAAgB,EAAe,MAAM,WAAW,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCzD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAmND;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,EAAE,aAAa;;IAQxB;;;OAGG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BhE;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAmB7E;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIvD;;;;;;;OAOG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAsC/B;;OAEG;YACW,WAAW;CAyG1B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -49,6 +49,85 @@ const McpResponseSchema = zod_1.z.object({
|
|
|
49
49
|
message: zod_1.z.string(),
|
|
50
50
|
}).optional(),
|
|
51
51
|
});
|
|
52
|
+
/**
|
|
53
|
+
* Parse suggestions from GoDaddy MCP domains_suggest response.
|
|
54
|
+
* Response format varies but typically includes categorized domain lists.
|
|
55
|
+
*/
|
|
56
|
+
function parseSuggestResponse(text) {
|
|
57
|
+
const suggestions = [];
|
|
58
|
+
const seenDomains = new Set();
|
|
59
|
+
// Helper to add a suggestion without duplicates
|
|
60
|
+
const addSuggestion = (domain, available, premium, auction) => {
|
|
61
|
+
const normalized = domain.toLowerCase().trim();
|
|
62
|
+
// Validate it looks like a domain (has at least one dot)
|
|
63
|
+
if (normalized.includes('.') && !seenDomains.has(normalized)) {
|
|
64
|
+
seenDomains.add(normalized);
|
|
65
|
+
suggestions.push({ domain: normalized, available, premium, auction });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
// ==== SECTION-BASED PARSING ====
|
|
69
|
+
// GoDaddy groups suggestions by category with emojis
|
|
70
|
+
// ✅ Available/Standard domains
|
|
71
|
+
const availableMatch = text.match(/✅\s*\*\*(?:AVAILABLE|STANDARD)[^]*?(?=(?:💎|🔨|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
72
|
+
if (availableMatch) {
|
|
73
|
+
for (const section of availableMatch) {
|
|
74
|
+
// Extract domain names (word.tld format)
|
|
75
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
76
|
+
if (domainMatches) {
|
|
77
|
+
for (const domain of domainMatches) {
|
|
78
|
+
addSuggestion(domain, true, false, false);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// 💎 Premium domains
|
|
84
|
+
const premiumMatch = text.match(/💎\s*\*\*PREMIUM[^]*?(?=(?:✅|🔨|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
85
|
+
if (premiumMatch) {
|
|
86
|
+
for (const section of premiumMatch) {
|
|
87
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
88
|
+
if (domainMatches) {
|
|
89
|
+
for (const domain of domainMatches) {
|
|
90
|
+
addSuggestion(domain, true, true, false);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 🔨 Auction domains
|
|
96
|
+
const auctionMatch = text.match(/🔨\s*\*\*AUCTION[^]*?(?=(?:✅|💎|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
97
|
+
if (auctionMatch) {
|
|
98
|
+
for (const section of auctionMatch) {
|
|
99
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
100
|
+
if (domainMatches) {
|
|
101
|
+
for (const domain of domainMatches) {
|
|
102
|
+
addSuggestion(domain, true, false, true);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ==== FALLBACK: Line-by-line extraction ====
|
|
108
|
+
// If section parsing didn't find much, try line-by-line
|
|
109
|
+
if (suggestions.length < 3) {
|
|
110
|
+
const lines = text.split('\n');
|
|
111
|
+
for (const line of lines) {
|
|
112
|
+
const lowerLine = line.toLowerCase();
|
|
113
|
+
// Skip header lines
|
|
114
|
+
if (lowerLine.includes('**') && !lowerLine.includes('.'))
|
|
115
|
+
continue;
|
|
116
|
+
// Extract any domain-like patterns
|
|
117
|
+
const domainMatches = line.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
118
|
+
if (domainMatches) {
|
|
119
|
+
for (const domain of domainMatches) {
|
|
120
|
+
// Determine type from context
|
|
121
|
+
const isPremium = lowerLine.includes('premium') || lowerLine.includes('💎');
|
|
122
|
+
const isAuction = lowerLine.includes('auction') || lowerLine.includes('🔨');
|
|
123
|
+
const isUnavailable = lowerLine.includes('❌') || lowerLine.includes('unavailable');
|
|
124
|
+
addSuggestion(domain, !isUnavailable, isPremium, isAuction);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return suggestions;
|
|
130
|
+
}
|
|
52
131
|
function parseAvailabilityResponse(text, domain) {
|
|
53
132
|
const normalizedDomain = domain.toLowerCase();
|
|
54
133
|
const normalizedText = text.toLowerCase();
|
|
@@ -220,6 +299,45 @@ class GodaddyMcpAdapter extends base_js_1.RegistrarAdapter {
|
|
|
220
299
|
async getTldInfo(_tld) {
|
|
221
300
|
return null;
|
|
222
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Get domain suggestions from GoDaddy MCP.
|
|
304
|
+
* Uses their domains_suggest tool for AI-powered suggestions.
|
|
305
|
+
*
|
|
306
|
+
* @param query - Keywords or business description (e.g., "sustainable fashion")
|
|
307
|
+
* @param options - Optional parameters for suggestion customization
|
|
308
|
+
* @returns Array of suggested domains with availability info
|
|
309
|
+
*/
|
|
310
|
+
async suggestDomains(query, options = {}) {
|
|
311
|
+
const { tlds, limit = 50 } = options;
|
|
312
|
+
return this.retryWithBackoff(async () => {
|
|
313
|
+
// Build the query - GoDaddy accepts natural language
|
|
314
|
+
let fullQuery = query;
|
|
315
|
+
if (tlds && tlds.length > 0) {
|
|
316
|
+
fullQuery = `${query} (prefer .${tlds.join(', .')})`;
|
|
317
|
+
}
|
|
318
|
+
const text = await this.callMcpTool('domains_suggest', {
|
|
319
|
+
query: fullQuery,
|
|
320
|
+
});
|
|
321
|
+
logger_js_1.logger.debug('GoDaddy domains_suggest raw response', {
|
|
322
|
+
query: fullQuery,
|
|
323
|
+
response_length: text.length,
|
|
324
|
+
preview: text.substring(0, 500),
|
|
325
|
+
});
|
|
326
|
+
const suggestions = parseSuggestResponse(text);
|
|
327
|
+
// Filter by TLD if specified
|
|
328
|
+
let filtered = suggestions;
|
|
329
|
+
if (tlds && tlds.length > 0) {
|
|
330
|
+
const tldSet = new Set(tlds.map(t => t.toLowerCase()));
|
|
331
|
+
filtered = suggestions.filter(s => {
|
|
332
|
+
const parts = s.domain.split('.');
|
|
333
|
+
const tld = parts[parts.length - 1];
|
|
334
|
+
return tld && tldSet.has(tld);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
// Limit results
|
|
338
|
+
return filtered.slice(0, limit);
|
|
339
|
+
}, `suggest domains for "${query}"`);
|
|
340
|
+
}
|
|
223
341
|
/**
|
|
224
342
|
* Call a GoDaddy MCP tool via JSON-RPC.
|
|
225
343
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"godaddy-mcp.js","sourceRoot":"","sources":["../../src/registrars/godaddy-mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"godaddy-mcp.js","sourceRoot":"","sources":["../../src/registrars/godaddy-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
export { RegistrarAdapter } from './base.js';
|
|
5
5
|
export { PorkbunAdapter, porkbunAdapter } from './porkbun.js';
|
|
6
6
|
export { NamecheapAdapter, namecheapAdapter } from './namecheap.js';
|
|
7
|
-
export { GodaddyMcpAdapter, godaddyMcpAdapter } from './godaddy-mcp.js';
|
|
7
|
+
export { GodaddyMcpAdapter, godaddyMcpAdapter, type GodaddySuggestion, type ParsedAvailability, } from './godaddy-mcp.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registrars/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registrars/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registrars/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,2CAA8D;AAArD,4GAAA,cAAc,OAAA;AAAE,4GAAA,cAAc,OAAA;AACvC,+CAAoE;AAA3D,gHAAA,gBAAgB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAC3C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registrars/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,2CAA8D;AAArD,4GAAA,cAAc,OAAA;AAAE,4GAAA,cAAc,OAAA;AACvC,+CAAoE;AAA3D,gHAAA,gBAAgB,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAC3C,mDAK0B;AAJxB,mHAAA,iBAAiB,OAAA;AACjB,mHAAA,iBAAiB,OAAA"}
|
|
@@ -18,8 +18,8 @@ export declare const suggestDomainsSmartSchema: z.ZodObject<{
|
|
|
18
18
|
include_premium: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
19
19
|
}, "strip", z.ZodTypeAny, {
|
|
20
20
|
tld: string;
|
|
21
|
-
max_suggestions: number;
|
|
22
21
|
query: string;
|
|
22
|
+
max_suggestions: number;
|
|
23
23
|
style: "creative" | "brandable" | "descriptive" | "short";
|
|
24
24
|
include_premium: boolean;
|
|
25
25
|
industry?: "tech" | "health" | "finance" | "food" | "creative" | "social" | "startup" | "ecommerce" | "education" | "gaming" | undefined;
|
|
@@ -85,6 +85,7 @@ interface SmartSuggestion {
|
|
|
85
85
|
privacy_included: boolean;
|
|
86
86
|
score: number;
|
|
87
87
|
category: 'standard' | 'premium' | 'auction' | 'unavailable';
|
|
88
|
+
source: 'semantic_engine' | 'godaddy_suggest' | 'both';
|
|
88
89
|
}
|
|
89
90
|
/**
|
|
90
91
|
* Response format for smart suggestions.
|
|
@@ -95,7 +96,11 @@ interface SuggestDomainsSmartResponse {
|
|
|
95
96
|
detected_industry: string | null;
|
|
96
97
|
tld: string;
|
|
97
98
|
style: string;
|
|
98
|
-
|
|
99
|
+
sources: {
|
|
100
|
+
semantic_engine: number;
|
|
101
|
+
godaddy_suggest: number;
|
|
102
|
+
merged: number;
|
|
103
|
+
};
|
|
99
104
|
total_checked: number;
|
|
100
105
|
results: {
|
|
101
106
|
available: SmartSuggestion[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest_domains_smart.d.ts","sourceRoot":"","sources":["../../src/tools/suggest_domains_smart.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"suggest_domains_smart.d.ts","sourceRoot":"","sources":["../../src/tools/suggest_domains_smart.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAuCpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDnC,CAAC;AA8CF;;GAEG;AACH,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;IAC7D,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,MAAM,CAAC;CACxD;AAED;;GAEG;AACH,UAAU,2BAA2B;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QACP,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,OAAO,EAAE,eAAe,EAAE,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,2BAA2B,CAAC,CAmRtC"}
|
|
@@ -13,6 +13,8 @@ const zod_1 = require("zod");
|
|
|
13
13
|
const domain_search_js_1 = require("../services/domain-search.js");
|
|
14
14
|
const errors_js_1 = require("../utils/errors.js");
|
|
15
15
|
const semantic_engine_js_1 = require("../utils/semantic-engine.js");
|
|
16
|
+
const index_js_1 = require("../registrars/index.js");
|
|
17
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
16
18
|
/**
|
|
17
19
|
* Premium price thresholds by TLD (first year price in USD).
|
|
18
20
|
* If price exceeds threshold, domain is marked as premium.
|
|
@@ -86,14 +88,16 @@ exports.suggestDomainsSmartTool = {
|
|
|
86
88
|
description: `AI-powered domain name suggestion engine.
|
|
87
89
|
|
|
88
90
|
Generate creative, brandable domain names from keywords or business descriptions.
|
|
89
|
-
|
|
91
|
+
Combines our semantic engine with GoDaddy's AI suggestions for maximum coverage.
|
|
90
92
|
|
|
91
93
|
Features:
|
|
94
|
+
- Dual-source suggestions: Our semantic engine + GoDaddy AI
|
|
92
95
|
- Understands natural language queries ("coffee shop in seattle")
|
|
93
96
|
- Auto-detects industry for contextual suggestions
|
|
94
97
|
- Generates portmanteau/blended names (instagram = instant + telegram)
|
|
95
98
|
- Applies modern naming patterns (ly, ify, io, hub, etc.)
|
|
96
99
|
- Filters premium domains by default
|
|
100
|
+
- Pre-verified availability via GoDaddy
|
|
97
101
|
|
|
98
102
|
Examples:
|
|
99
103
|
- suggest_domains_smart("ai customer service") → AI-themed suggestions
|
|
@@ -178,84 +182,194 @@ async function executeSuggestDomainsSmart(input) {
|
|
|
178
182
|
const normalizedQuery = query.toLowerCase().trim();
|
|
179
183
|
const detectedWords = (0, semantic_engine_js_1.segmentWords)(normalizedQuery);
|
|
180
184
|
const detectedIndustry = industry || (0, semantic_engine_js_1.detectIndustry)(detectedWords);
|
|
181
|
-
//
|
|
182
|
-
const
|
|
183
|
-
|
|
185
|
+
// Track source statistics
|
|
186
|
+
const sourceStats = {
|
|
187
|
+
semantic_engine: 0,
|
|
188
|
+
godaddy_suggest: 0,
|
|
189
|
+
merged: 0,
|
|
190
|
+
};
|
|
191
|
+
// ========================================
|
|
192
|
+
// STEP 1: Generate suggestions from BOTH sources in parallel
|
|
193
|
+
// ========================================
|
|
194
|
+
// Source 1: Our semantic engine
|
|
195
|
+
const semanticSuggestions = (0, semantic_engine_js_1.generateSmartSuggestions)(normalizedQuery, {
|
|
196
|
+
maxSuggestions: max_suggestions * 3,
|
|
184
197
|
includePortmanteau: style === 'creative' || style === 'brandable',
|
|
185
198
|
includeSynonyms: style !== 'short',
|
|
186
199
|
includeIndustryTerms: !!detectedIndustry,
|
|
187
200
|
industry: detectedIndustry || undefined,
|
|
188
201
|
});
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
})
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
202
|
+
sourceStats.semantic_engine = semanticSuggestions.length;
|
|
203
|
+
// Source 2: GoDaddy's AI suggestions (parallel call)
|
|
204
|
+
let godaddySuggestions = [];
|
|
205
|
+
try {
|
|
206
|
+
godaddySuggestions = await index_js_1.godaddyMcpAdapter.suggestDomains(query, {
|
|
207
|
+
tlds: [tld],
|
|
208
|
+
limit: max_suggestions * 2,
|
|
209
|
+
});
|
|
210
|
+
sourceStats.godaddy_suggest = godaddySuggestions.length;
|
|
211
|
+
logger_js_1.logger.debug('GoDaddy suggestions received', {
|
|
212
|
+
count: godaddySuggestions.length,
|
|
213
|
+
sample: godaddySuggestions.slice(0, 3).map(s => s.domain),
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
// GoDaddy might fail - continue with just semantic suggestions
|
|
218
|
+
logger_js_1.logger.warn('GoDaddy suggestions failed, using semantic engine only', {
|
|
219
|
+
error: error instanceof Error ? error.message : 'unknown',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// ========================================
|
|
223
|
+
// STEP 2: Merge and deduplicate suggestions
|
|
224
|
+
// ========================================
|
|
225
|
+
// Track which domains came from which source
|
|
226
|
+
const domainSources = new Map();
|
|
227
|
+
// Add semantic suggestions (need availability check)
|
|
228
|
+
const styledSuggestions = applyStyleFilter(semanticSuggestions, style, normalizedQuery);
|
|
229
|
+
for (const name of styledSuggestions) {
|
|
230
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
231
|
+
domainSources.set(fullDomain, 'semantic_engine');
|
|
232
|
+
}
|
|
233
|
+
// Add GoDaddy suggestions (already have availability)
|
|
234
|
+
for (const gs of godaddySuggestions) {
|
|
235
|
+
const fullDomain = gs.domain.toLowerCase();
|
|
236
|
+
if (domainSources.has(fullDomain)) {
|
|
237
|
+
domainSources.set(fullDomain, 'both'); // Found in both sources
|
|
238
|
+
sourceStats.merged++;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
domainSources.set(fullDomain, 'godaddy_suggest');
|
|
213
242
|
}
|
|
214
243
|
}
|
|
215
|
-
//
|
|
244
|
+
// ========================================
|
|
245
|
+
// STEP 3: Check availability for semantic suggestions
|
|
246
|
+
// (GoDaddy suggestions already have availability info)
|
|
247
|
+
// ========================================
|
|
216
248
|
const available = [];
|
|
217
249
|
const premium = [];
|
|
218
250
|
let unavailableCount = 0;
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
const
|
|
251
|
+
let totalChecked = 0;
|
|
252
|
+
// First, add pre-checked GoDaddy suggestions (no API call needed!)
|
|
253
|
+
for (const gs of godaddySuggestions) {
|
|
254
|
+
const fullDomain = gs.domain.toLowerCase();
|
|
255
|
+
const source = domainSources.get(fullDomain) || 'godaddy_suggest';
|
|
256
|
+
const name = fullDomain.replace(`.${tld}`, '');
|
|
225
257
|
const suggestion = {
|
|
226
|
-
domain:
|
|
227
|
-
available:
|
|
228
|
-
price_first_year:
|
|
229
|
-
price_renewal:
|
|
230
|
-
registrar:
|
|
231
|
-
premium:
|
|
232
|
-
premium_detected:
|
|
233
|
-
privacy_included:
|
|
258
|
+
domain: fullDomain,
|
|
259
|
+
available: gs.available,
|
|
260
|
+
price_first_year: null, // GoDaddy doesn't provide pricing
|
|
261
|
+
price_renewal: null,
|
|
262
|
+
registrar: 'godaddy',
|
|
263
|
+
premium: gs.premium,
|
|
264
|
+
premium_detected: gs.premium,
|
|
265
|
+
privacy_included: false,
|
|
234
266
|
score: (0, semantic_engine_js_1.scoreDomainName)(name, normalizedQuery),
|
|
235
|
-
category: !
|
|
267
|
+
category: !gs.available
|
|
236
268
|
? 'unavailable'
|
|
237
|
-
:
|
|
269
|
+
: gs.premium
|
|
238
270
|
? 'premium'
|
|
239
|
-
:
|
|
271
|
+
: gs.auction
|
|
272
|
+
? 'auction'
|
|
273
|
+
: 'standard',
|
|
274
|
+
source,
|
|
240
275
|
};
|
|
241
|
-
if (!
|
|
276
|
+
if (!gs.available) {
|
|
242
277
|
unavailableCount++;
|
|
243
278
|
}
|
|
244
|
-
else if (
|
|
245
|
-
|
|
279
|
+
else if (gs.premium || gs.auction) {
|
|
280
|
+
if (include_premium) {
|
|
281
|
+
premium.push(suggestion);
|
|
282
|
+
}
|
|
246
283
|
}
|
|
247
284
|
else {
|
|
248
285
|
available.push(suggestion);
|
|
249
286
|
}
|
|
250
287
|
}
|
|
251
|
-
//
|
|
252
|
-
|
|
288
|
+
// Then, check semantic suggestions that weren't in GoDaddy results
|
|
289
|
+
const semanticOnlyCandidates = styledSuggestions
|
|
290
|
+
.filter(name => {
|
|
291
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
292
|
+
return domainSources.get(fullDomain) === 'semantic_engine';
|
|
293
|
+
})
|
|
294
|
+
.slice(0, max_suggestions); // Limit API calls
|
|
295
|
+
const BATCH_SIZE = 5;
|
|
296
|
+
for (let i = 0; i < semanticOnlyCandidates.length; i += BATCH_SIZE) {
|
|
297
|
+
const batch = semanticOnlyCandidates.slice(i, i + BATCH_SIZE);
|
|
298
|
+
const batchResults = await Promise.all(batch.map(async (name) => {
|
|
299
|
+
try {
|
|
300
|
+
const response = await (0, domain_search_js_1.searchDomain)(name, [tld]);
|
|
301
|
+
const result = response.results.find((r) => r.domain === `${name}.${tld}`);
|
|
302
|
+
return { name, result: result || null };
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
return { name, result: null };
|
|
306
|
+
}
|
|
307
|
+
}));
|
|
308
|
+
for (const { name, result } of batchResults) {
|
|
309
|
+
totalChecked++;
|
|
310
|
+
if (!result) {
|
|
311
|
+
unavailableCount++;
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
const isPremiumDomain = result.premium || isPremiumPrice(tld, result.price_first_year);
|
|
315
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
316
|
+
const suggestion = {
|
|
317
|
+
domain: fullDomain,
|
|
318
|
+
available: result.available,
|
|
319
|
+
price_first_year: result.price_first_year,
|
|
320
|
+
price_renewal: result.price_renewal,
|
|
321
|
+
registrar: result.registrar,
|
|
322
|
+
premium: result.premium || false,
|
|
323
|
+
premium_detected: isPremiumPrice(tld, result.price_first_year),
|
|
324
|
+
privacy_included: result.privacy_included || false,
|
|
325
|
+
score: (0, semantic_engine_js_1.scoreDomainName)(name, normalizedQuery),
|
|
326
|
+
category: !result.available
|
|
327
|
+
? 'unavailable'
|
|
328
|
+
: isPremiumDomain
|
|
329
|
+
? 'premium'
|
|
330
|
+
: 'standard',
|
|
331
|
+
source: 'semantic_engine',
|
|
332
|
+
};
|
|
333
|
+
if (!result.available) {
|
|
334
|
+
unavailableCount++;
|
|
335
|
+
}
|
|
336
|
+
else if (isPremiumDomain) {
|
|
337
|
+
if (include_premium) {
|
|
338
|
+
premium.push(suggestion);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
available.push(suggestion);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Early exit if we have enough available
|
|
346
|
+
if (available.length >= max_suggestions && !include_premium) {
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// ========================================
|
|
351
|
+
// STEP 4: Sort and finalize results
|
|
352
|
+
// ========================================
|
|
353
|
+
// Sort by score, prefer 'both' source items (validated by multiple sources)
|
|
354
|
+
available.sort((a, b) => {
|
|
355
|
+
// Boost 'both' source items
|
|
356
|
+
const aBoost = a.source === 'both' ? 2 : 0;
|
|
357
|
+
const bBoost = b.source === 'both' ? 2 : 0;
|
|
358
|
+
return (b.score + bBoost) - (a.score + aBoost);
|
|
359
|
+
});
|
|
253
360
|
premium.sort((a, b) => b.score - a.score);
|
|
254
361
|
// Limit results
|
|
255
362
|
const finalAvailable = available.slice(0, max_suggestions);
|
|
256
363
|
const finalPremium = include_premium ? premium.slice(0, Math.floor(max_suggestions / 2)) : [];
|
|
257
|
-
//
|
|
364
|
+
// ========================================
|
|
365
|
+
// STEP 5: Generate insights
|
|
366
|
+
// ========================================
|
|
258
367
|
const insights = [];
|
|
368
|
+
// Source info
|
|
369
|
+
insights.push(`🔍 Sources: Semantic Engine (${sourceStats.semantic_engine}) + GoDaddy AI (${sourceStats.godaddy_suggest})`);
|
|
370
|
+
if (sourceStats.merged > 0) {
|
|
371
|
+
insights.push(`🔗 ${sourceStats.merged} suggestions found in both sources`);
|
|
372
|
+
}
|
|
259
373
|
if (detectedIndustry) {
|
|
260
374
|
insights.push(`🎯 Detected industry: ${detectedIndustry}`);
|
|
261
375
|
}
|
|
@@ -265,8 +379,9 @@ async function executeSuggestDomainsSmart(input) {
|
|
|
265
379
|
if (finalAvailable.length > 0) {
|
|
266
380
|
insights.push(`✅ Found ${finalAvailable.length} available domain${finalAvailable.length > 1 ? 's' : ''}`);
|
|
267
381
|
const best = finalAvailable[0];
|
|
268
|
-
const priceStr = best.price_first_year !== null ? `$${best.price_first_year}/yr` : '
|
|
269
|
-
|
|
382
|
+
const priceStr = best.price_first_year !== null ? `$${best.price_first_year}/yr` : 'via ' + best.registrar;
|
|
383
|
+
const sourceStr = best.source === 'both' ? ' (verified by both sources)' : '';
|
|
384
|
+
insights.push(`⭐ Top pick: ${best.domain} (${priceStr})${sourceStr}`);
|
|
270
385
|
}
|
|
271
386
|
else {
|
|
272
387
|
insights.push(`❌ No standard-priced domains available`);
|
|
@@ -293,8 +408,8 @@ async function executeSuggestDomainsSmart(input) {
|
|
|
293
408
|
detected_industry: detectedIndustry,
|
|
294
409
|
tld,
|
|
295
410
|
style,
|
|
296
|
-
|
|
297
|
-
total_checked:
|
|
411
|
+
sources: sourceStats,
|
|
412
|
+
total_checked: totalChecked + godaddySuggestions.length,
|
|
298
413
|
results: {
|
|
299
414
|
available: finalAvailable,
|
|
300
415
|
premium: finalPremium,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest_domains_smart.js","sourceRoot":"","sources":["../../src/tools/suggest_domains_smart.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"suggest_domains_smart.js","sourceRoot":"","sources":["../../src/tools/suggest_domains_smart.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "domain-search-mcp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Fast domain availability aggregator MCP server. Check availability across Porkbun, Namecheap, RDAP, and WHOIS. Compare pricing. Get suggestions.",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"types": "dist/server.d.ts",
|
|
@@ -56,12 +56,111 @@ const McpResponseSchema = z.object({
|
|
|
56
56
|
* Parse availability from GoDaddy MCP text response.
|
|
57
57
|
* The response is markdown-formatted text with different formats for single vs bulk queries.
|
|
58
58
|
*/
|
|
59
|
-
interface ParsedAvailability {
|
|
59
|
+
export interface ParsedAvailability {
|
|
60
60
|
available: boolean;
|
|
61
61
|
premium: boolean;
|
|
62
62
|
auction: boolean;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Parsed suggestion from GoDaddy's domains_suggest response.
|
|
67
|
+
*/
|
|
68
|
+
export interface GodaddySuggestion {
|
|
69
|
+
domain: string;
|
|
70
|
+
available: boolean;
|
|
71
|
+
premium: boolean;
|
|
72
|
+
auction: boolean;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Parse suggestions from GoDaddy MCP domains_suggest response.
|
|
77
|
+
* Response format varies but typically includes categorized domain lists.
|
|
78
|
+
*/
|
|
79
|
+
function parseSuggestResponse(text: string): GodaddySuggestion[] {
|
|
80
|
+
const suggestions: GodaddySuggestion[] = [];
|
|
81
|
+
const seenDomains = new Set<string>();
|
|
82
|
+
|
|
83
|
+
// Helper to add a suggestion without duplicates
|
|
84
|
+
const addSuggestion = (domain: string, available: boolean, premium: boolean, auction: boolean) => {
|
|
85
|
+
const normalized = domain.toLowerCase().trim();
|
|
86
|
+
// Validate it looks like a domain (has at least one dot)
|
|
87
|
+
if (normalized.includes('.') && !seenDomains.has(normalized)) {
|
|
88
|
+
seenDomains.add(normalized);
|
|
89
|
+
suggestions.push({ domain: normalized, available, premium, auction });
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// ==== SECTION-BASED PARSING ====
|
|
94
|
+
// GoDaddy groups suggestions by category with emojis
|
|
95
|
+
|
|
96
|
+
// ✅ Available/Standard domains
|
|
97
|
+
const availableMatch = text.match(/✅\s*\*\*(?:AVAILABLE|STANDARD)[^]*?(?=(?:💎|🔨|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
98
|
+
if (availableMatch) {
|
|
99
|
+
for (const section of availableMatch) {
|
|
100
|
+
// Extract domain names (word.tld format)
|
|
101
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
102
|
+
if (domainMatches) {
|
|
103
|
+
for (const domain of domainMatches) {
|
|
104
|
+
addSuggestion(domain, true, false, false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 💎 Premium domains
|
|
111
|
+
const premiumMatch = text.match(/💎\s*\*\*PREMIUM[^]*?(?=(?:✅|🔨|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
112
|
+
if (premiumMatch) {
|
|
113
|
+
for (const section of premiumMatch) {
|
|
114
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
115
|
+
if (domainMatches) {
|
|
116
|
+
for (const domain of domainMatches) {
|
|
117
|
+
addSuggestion(domain, true, true, false);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 🔨 Auction domains
|
|
124
|
+
const auctionMatch = text.match(/🔨\s*\*\*AUCTION[^]*?(?=(?:✅|💎|⚠️|❌|\*\*[A-Z])|$)/gi);
|
|
125
|
+
if (auctionMatch) {
|
|
126
|
+
for (const section of auctionMatch) {
|
|
127
|
+
const domainMatches = section.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
128
|
+
if (domainMatches) {
|
|
129
|
+
for (const domain of domainMatches) {
|
|
130
|
+
addSuggestion(domain, true, false, true);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ==== FALLBACK: Line-by-line extraction ====
|
|
137
|
+
// If section parsing didn't find much, try line-by-line
|
|
138
|
+
if (suggestions.length < 3) {
|
|
139
|
+
const lines = text.split('\n');
|
|
140
|
+
for (const line of lines) {
|
|
141
|
+
const lowerLine = line.toLowerCase();
|
|
142
|
+
|
|
143
|
+
// Skip header lines
|
|
144
|
+
if (lowerLine.includes('**') && !lowerLine.includes('.')) continue;
|
|
145
|
+
|
|
146
|
+
// Extract any domain-like patterns
|
|
147
|
+
const domainMatches = line.match(/\b[a-z0-9][-a-z0-9]*\.[a-z]{2,}\b/gi);
|
|
148
|
+
if (domainMatches) {
|
|
149
|
+
for (const domain of domainMatches) {
|
|
150
|
+
// Determine type from context
|
|
151
|
+
const isPremium = lowerLine.includes('premium') || lowerLine.includes('💎');
|
|
152
|
+
const isAuction = lowerLine.includes('auction') || lowerLine.includes('🔨');
|
|
153
|
+
const isUnavailable = lowerLine.includes('❌') || lowerLine.includes('unavailable');
|
|
154
|
+
|
|
155
|
+
addSuggestion(domain, !isUnavailable, isPremium, isAuction);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return suggestions;
|
|
162
|
+
}
|
|
163
|
+
|
|
65
164
|
function parseAvailabilityResponse(text: string, domain: string): ParsedAvailability {
|
|
66
165
|
const normalizedDomain = domain.toLowerCase();
|
|
67
166
|
const normalizedText = text.toLowerCase();
|
|
@@ -264,6 +363,58 @@ export class GodaddyMcpAdapter extends RegistrarAdapter {
|
|
|
264
363
|
return null;
|
|
265
364
|
}
|
|
266
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Get domain suggestions from GoDaddy MCP.
|
|
368
|
+
* Uses their domains_suggest tool for AI-powered suggestions.
|
|
369
|
+
*
|
|
370
|
+
* @param query - Keywords or business description (e.g., "sustainable fashion")
|
|
371
|
+
* @param options - Optional parameters for suggestion customization
|
|
372
|
+
* @returns Array of suggested domains with availability info
|
|
373
|
+
*/
|
|
374
|
+
async suggestDomains(
|
|
375
|
+
query: string,
|
|
376
|
+
options: {
|
|
377
|
+
tlds?: string[];
|
|
378
|
+
limit?: number;
|
|
379
|
+
} = {},
|
|
380
|
+
): Promise<GodaddySuggestion[]> {
|
|
381
|
+
const { tlds, limit = 50 } = options;
|
|
382
|
+
|
|
383
|
+
return this.retryWithBackoff(async () => {
|
|
384
|
+
// Build the query - GoDaddy accepts natural language
|
|
385
|
+
let fullQuery = query;
|
|
386
|
+
if (tlds && tlds.length > 0) {
|
|
387
|
+
fullQuery = `${query} (prefer .${tlds.join(', .')})`;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
const text = await this.callMcpTool('domains_suggest', {
|
|
391
|
+
query: fullQuery,
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
logger.debug('GoDaddy domains_suggest raw response', {
|
|
395
|
+
query: fullQuery,
|
|
396
|
+
response_length: text.length,
|
|
397
|
+
preview: text.substring(0, 500),
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
const suggestions = parseSuggestResponse(text);
|
|
401
|
+
|
|
402
|
+
// Filter by TLD if specified
|
|
403
|
+
let filtered = suggestions;
|
|
404
|
+
if (tlds && tlds.length > 0) {
|
|
405
|
+
const tldSet = new Set(tlds.map(t => t.toLowerCase()));
|
|
406
|
+
filtered = suggestions.filter(s => {
|
|
407
|
+
const parts = s.domain.split('.');
|
|
408
|
+
const tld = parts[parts.length - 1];
|
|
409
|
+
return tld && tldSet.has(tld);
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Limit results
|
|
414
|
+
return filtered.slice(0, limit);
|
|
415
|
+
}, `suggest domains for "${query}"`);
|
|
416
|
+
}
|
|
417
|
+
|
|
267
418
|
/**
|
|
268
419
|
* Call a GoDaddy MCP tool via JSON-RPC.
|
|
269
420
|
*/
|
package/src/registrars/index.ts
CHANGED
|
@@ -5,4 +5,9 @@
|
|
|
5
5
|
export { RegistrarAdapter } from './base.js';
|
|
6
6
|
export { PorkbunAdapter, porkbunAdapter } from './porkbun.js';
|
|
7
7
|
export { NamecheapAdapter, namecheapAdapter } from './namecheap.js';
|
|
8
|
-
export {
|
|
8
|
+
export {
|
|
9
|
+
GodaddyMcpAdapter,
|
|
10
|
+
godaddyMcpAdapter,
|
|
11
|
+
type GodaddySuggestion,
|
|
12
|
+
type ParsedAvailability,
|
|
13
|
+
} from './godaddy-mcp.js';
|
|
@@ -18,6 +18,8 @@ import {
|
|
|
18
18
|
getSynonyms,
|
|
19
19
|
getIndustryTerms,
|
|
20
20
|
} from '../utils/semantic-engine.js';
|
|
21
|
+
import { godaddyMcpAdapter, type GodaddySuggestion } from '../registrars/index.js';
|
|
22
|
+
import { logger } from '../utils/logger.js';
|
|
21
23
|
import type { DomainResult } from '../types.js';
|
|
22
24
|
|
|
23
25
|
/**
|
|
@@ -101,14 +103,16 @@ export const suggestDomainsSmartTool = {
|
|
|
101
103
|
description: `AI-powered domain name suggestion engine.
|
|
102
104
|
|
|
103
105
|
Generate creative, brandable domain names from keywords or business descriptions.
|
|
104
|
-
|
|
106
|
+
Combines our semantic engine with GoDaddy's AI suggestions for maximum coverage.
|
|
105
107
|
|
|
106
108
|
Features:
|
|
109
|
+
- Dual-source suggestions: Our semantic engine + GoDaddy AI
|
|
107
110
|
- Understands natural language queries ("coffee shop in seattle")
|
|
108
111
|
- Auto-detects industry for contextual suggestions
|
|
109
112
|
- Generates portmanteau/blended names (instagram = instant + telegram)
|
|
110
113
|
- Applies modern naming patterns (ly, ify, io, hub, etc.)
|
|
111
114
|
- Filters premium domains by default
|
|
115
|
+
- Pre-verified availability via GoDaddy
|
|
112
116
|
|
|
113
117
|
Examples:
|
|
114
118
|
- suggest_domains_smart("ai customer service") → AI-themed suggestions
|
|
@@ -206,6 +210,7 @@ interface SmartSuggestion {
|
|
|
206
210
|
privacy_included: boolean;
|
|
207
211
|
score: number;
|
|
208
212
|
category: 'standard' | 'premium' | 'auction' | 'unavailable';
|
|
213
|
+
source: 'semantic_engine' | 'godaddy_suggest' | 'both';
|
|
209
214
|
}
|
|
210
215
|
|
|
211
216
|
/**
|
|
@@ -217,7 +222,11 @@ interface SuggestDomainsSmartResponse {
|
|
|
217
222
|
detected_industry: string | null;
|
|
218
223
|
tld: string;
|
|
219
224
|
style: string;
|
|
220
|
-
|
|
225
|
+
sources: {
|
|
226
|
+
semantic_engine: number;
|
|
227
|
+
godaddy_suggest: number;
|
|
228
|
+
merged: number;
|
|
229
|
+
};
|
|
221
230
|
total_checked: number;
|
|
222
231
|
results: {
|
|
223
232
|
available: SmartSuggestion[];
|
|
@@ -243,97 +252,215 @@ export async function executeSuggestDomainsSmart(
|
|
|
243
252
|
const detectedWords = segmentWords(normalizedQuery);
|
|
244
253
|
const detectedIndustry = industry || detectIndustry(detectedWords);
|
|
245
254
|
|
|
246
|
-
//
|
|
247
|
-
const
|
|
248
|
-
|
|
255
|
+
// Track source statistics
|
|
256
|
+
const sourceStats = {
|
|
257
|
+
semantic_engine: 0,
|
|
258
|
+
godaddy_suggest: 0,
|
|
259
|
+
merged: 0,
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// ========================================
|
|
263
|
+
// STEP 1: Generate suggestions from BOTH sources in parallel
|
|
264
|
+
// ========================================
|
|
265
|
+
|
|
266
|
+
// Source 1: Our semantic engine
|
|
267
|
+
const semanticSuggestions = generateSmartSuggestions(normalizedQuery, {
|
|
268
|
+
maxSuggestions: max_suggestions * 3,
|
|
249
269
|
includePortmanteau: style === 'creative' || style === 'brandable',
|
|
250
270
|
includeSynonyms: style !== 'short',
|
|
251
271
|
includeIndustryTerms: !!detectedIndustry,
|
|
252
272
|
industry: detectedIndustry || undefined,
|
|
253
273
|
});
|
|
274
|
+
sourceStats.semantic_engine = semanticSuggestions.length;
|
|
275
|
+
|
|
276
|
+
// Source 2: GoDaddy's AI suggestions (parallel call)
|
|
277
|
+
let godaddySuggestions: GodaddySuggestion[] = [];
|
|
278
|
+
try {
|
|
279
|
+
godaddySuggestions = await godaddyMcpAdapter.suggestDomains(query, {
|
|
280
|
+
tlds: [tld],
|
|
281
|
+
limit: max_suggestions * 2,
|
|
282
|
+
});
|
|
283
|
+
sourceStats.godaddy_suggest = godaddySuggestions.length;
|
|
284
|
+
logger.debug('GoDaddy suggestions received', {
|
|
285
|
+
count: godaddySuggestions.length,
|
|
286
|
+
sample: godaddySuggestions.slice(0, 3).map(s => s.domain),
|
|
287
|
+
});
|
|
288
|
+
} catch (error) {
|
|
289
|
+
// GoDaddy might fail - continue with just semantic suggestions
|
|
290
|
+
logger.warn('GoDaddy suggestions failed, using semantic engine only', {
|
|
291
|
+
error: error instanceof Error ? error.message : 'unknown',
|
|
292
|
+
});
|
|
293
|
+
}
|
|
254
294
|
|
|
255
|
-
//
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
// Limit candidates for availability check
|
|
259
|
-
const candidates = styledSuggestions.slice(0, max_suggestions * 2);
|
|
295
|
+
// ========================================
|
|
296
|
+
// STEP 2: Merge and deduplicate suggestions
|
|
297
|
+
// ========================================
|
|
260
298
|
|
|
261
|
-
//
|
|
262
|
-
const
|
|
263
|
-
const results: Array<{ name: string; result: DomainResult | null }> = [];
|
|
299
|
+
// Track which domains came from which source
|
|
300
|
+
const domainSources = new Map<string, 'semantic_engine' | 'godaddy_suggest' | 'both'>();
|
|
264
301
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const result = response.results.find((r) => r.domain === `${name}.${tld}`);
|
|
272
|
-
return { name, result: result || null };
|
|
273
|
-
} catch {
|
|
274
|
-
return { name, result: null };
|
|
275
|
-
}
|
|
276
|
-
}),
|
|
277
|
-
);
|
|
278
|
-
results.push(...batchResults);
|
|
302
|
+
// Add semantic suggestions (need availability check)
|
|
303
|
+
const styledSuggestions = applyStyleFilter(semanticSuggestions, style, normalizedQuery);
|
|
304
|
+
for (const name of styledSuggestions) {
|
|
305
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
306
|
+
domainSources.set(fullDomain, 'semantic_engine');
|
|
307
|
+
}
|
|
279
308
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
309
|
+
// Add GoDaddy suggestions (already have availability)
|
|
310
|
+
for (const gs of godaddySuggestions) {
|
|
311
|
+
const fullDomain = gs.domain.toLowerCase();
|
|
312
|
+
if (domainSources.has(fullDomain)) {
|
|
313
|
+
domainSources.set(fullDomain, 'both'); // Found in both sources
|
|
314
|
+
sourceStats.merged++;
|
|
315
|
+
} else {
|
|
316
|
+
domainSources.set(fullDomain, 'godaddy_suggest');
|
|
284
317
|
}
|
|
285
318
|
}
|
|
286
319
|
|
|
287
|
-
//
|
|
320
|
+
// ========================================
|
|
321
|
+
// STEP 3: Check availability for semantic suggestions
|
|
322
|
+
// (GoDaddy suggestions already have availability info)
|
|
323
|
+
// ========================================
|
|
324
|
+
|
|
288
325
|
const available: SmartSuggestion[] = [];
|
|
289
326
|
const premium: SmartSuggestion[] = [];
|
|
290
327
|
let unavailableCount = 0;
|
|
328
|
+
let totalChecked = 0;
|
|
291
329
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
const isPremium = result.premium || isPremiumPrice(tld, result.price_first_year);
|
|
330
|
+
// First, add pre-checked GoDaddy suggestions (no API call needed!)
|
|
331
|
+
for (const gs of godaddySuggestions) {
|
|
332
|
+
const fullDomain = gs.domain.toLowerCase();
|
|
333
|
+
const source = domainSources.get(fullDomain) || 'godaddy_suggest';
|
|
334
|
+
const name = fullDomain.replace(`.${tld}`, '');
|
|
299
335
|
|
|
300
336
|
const suggestion: SmartSuggestion = {
|
|
301
|
-
domain:
|
|
302
|
-
available:
|
|
303
|
-
price_first_year:
|
|
304
|
-
price_renewal:
|
|
305
|
-
registrar:
|
|
306
|
-
premium:
|
|
307
|
-
premium_detected:
|
|
308
|
-
privacy_included:
|
|
337
|
+
domain: fullDomain,
|
|
338
|
+
available: gs.available,
|
|
339
|
+
price_first_year: null, // GoDaddy doesn't provide pricing
|
|
340
|
+
price_renewal: null,
|
|
341
|
+
registrar: 'godaddy',
|
|
342
|
+
premium: gs.premium,
|
|
343
|
+
premium_detected: gs.premium,
|
|
344
|
+
privacy_included: false,
|
|
309
345
|
score: scoreDomainName(name, normalizedQuery),
|
|
310
|
-
category: !
|
|
346
|
+
category: !gs.available
|
|
311
347
|
? 'unavailable'
|
|
312
|
-
:
|
|
348
|
+
: gs.premium
|
|
313
349
|
? 'premium'
|
|
350
|
+
: gs.auction
|
|
351
|
+
? 'auction'
|
|
314
352
|
: 'standard',
|
|
353
|
+
source,
|
|
315
354
|
};
|
|
316
355
|
|
|
317
|
-
if (!
|
|
356
|
+
if (!gs.available) {
|
|
318
357
|
unavailableCount++;
|
|
319
|
-
} else if (
|
|
320
|
-
|
|
358
|
+
} else if (gs.premium || gs.auction) {
|
|
359
|
+
if (include_premium) {
|
|
360
|
+
premium.push(suggestion);
|
|
361
|
+
}
|
|
321
362
|
} else {
|
|
322
363
|
available.push(suggestion);
|
|
323
364
|
}
|
|
324
365
|
}
|
|
325
366
|
|
|
326
|
-
//
|
|
327
|
-
|
|
367
|
+
// Then, check semantic suggestions that weren't in GoDaddy results
|
|
368
|
+
const semanticOnlyCandidates = styledSuggestions
|
|
369
|
+
.filter(name => {
|
|
370
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
371
|
+
return domainSources.get(fullDomain) === 'semantic_engine';
|
|
372
|
+
})
|
|
373
|
+
.slice(0, max_suggestions); // Limit API calls
|
|
374
|
+
|
|
375
|
+
const BATCH_SIZE = 5;
|
|
376
|
+
for (let i = 0; i < semanticOnlyCandidates.length; i += BATCH_SIZE) {
|
|
377
|
+
const batch = semanticOnlyCandidates.slice(i, i + BATCH_SIZE);
|
|
378
|
+
const batchResults = await Promise.all(
|
|
379
|
+
batch.map(async (name) => {
|
|
380
|
+
try {
|
|
381
|
+
const response = await searchDomain(name, [tld]);
|
|
382
|
+
const result = response.results.find((r) => r.domain === `${name}.${tld}`);
|
|
383
|
+
return { name, result: result || null };
|
|
384
|
+
} catch {
|
|
385
|
+
return { name, result: null };
|
|
386
|
+
}
|
|
387
|
+
}),
|
|
388
|
+
);
|
|
389
|
+
|
|
390
|
+
for (const { name, result } of batchResults) {
|
|
391
|
+
totalChecked++;
|
|
392
|
+
if (!result) {
|
|
393
|
+
unavailableCount++;
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const isPremiumDomain = result.premium || isPremiumPrice(tld, result.price_first_year);
|
|
398
|
+
const fullDomain = `${name}.${tld}`.toLowerCase();
|
|
399
|
+
|
|
400
|
+
const suggestion: SmartSuggestion = {
|
|
401
|
+
domain: fullDomain,
|
|
402
|
+
available: result.available,
|
|
403
|
+
price_first_year: result.price_first_year,
|
|
404
|
+
price_renewal: result.price_renewal,
|
|
405
|
+
registrar: result.registrar,
|
|
406
|
+
premium: result.premium || false,
|
|
407
|
+
premium_detected: isPremiumPrice(tld, result.price_first_year),
|
|
408
|
+
privacy_included: result.privacy_included || false,
|
|
409
|
+
score: scoreDomainName(name, normalizedQuery),
|
|
410
|
+
category: !result.available
|
|
411
|
+
? 'unavailable'
|
|
412
|
+
: isPremiumDomain
|
|
413
|
+
? 'premium'
|
|
414
|
+
: 'standard',
|
|
415
|
+
source: 'semantic_engine',
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
if (!result.available) {
|
|
419
|
+
unavailableCount++;
|
|
420
|
+
} else if (isPremiumDomain) {
|
|
421
|
+
if (include_premium) {
|
|
422
|
+
premium.push(suggestion);
|
|
423
|
+
}
|
|
424
|
+
} else {
|
|
425
|
+
available.push(suggestion);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// Early exit if we have enough available
|
|
430
|
+
if (available.length >= max_suggestions && !include_premium) {
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// ========================================
|
|
436
|
+
// STEP 4: Sort and finalize results
|
|
437
|
+
// ========================================
|
|
438
|
+
|
|
439
|
+
// Sort by score, prefer 'both' source items (validated by multiple sources)
|
|
440
|
+
available.sort((a, b) => {
|
|
441
|
+
// Boost 'both' source items
|
|
442
|
+
const aBoost = a.source === 'both' ? 2 : 0;
|
|
443
|
+
const bBoost = b.source === 'both' ? 2 : 0;
|
|
444
|
+
return (b.score + bBoost) - (a.score + aBoost);
|
|
445
|
+
});
|
|
328
446
|
premium.sort((a, b) => b.score - a.score);
|
|
329
447
|
|
|
330
448
|
// Limit results
|
|
331
449
|
const finalAvailable = available.slice(0, max_suggestions);
|
|
332
450
|
const finalPremium = include_premium ? premium.slice(0, Math.floor(max_suggestions / 2)) : [];
|
|
333
451
|
|
|
334
|
-
//
|
|
452
|
+
// ========================================
|
|
453
|
+
// STEP 5: Generate insights
|
|
454
|
+
// ========================================
|
|
455
|
+
|
|
335
456
|
const insights: string[] = [];
|
|
336
457
|
|
|
458
|
+
// Source info
|
|
459
|
+
insights.push(`🔍 Sources: Semantic Engine (${sourceStats.semantic_engine}) + GoDaddy AI (${sourceStats.godaddy_suggest})`);
|
|
460
|
+
if (sourceStats.merged > 0) {
|
|
461
|
+
insights.push(`🔗 ${sourceStats.merged} suggestions found in both sources`);
|
|
462
|
+
}
|
|
463
|
+
|
|
337
464
|
if (detectedIndustry) {
|
|
338
465
|
insights.push(`🎯 Detected industry: ${detectedIndustry}`);
|
|
339
466
|
}
|
|
@@ -345,8 +472,9 @@ export async function executeSuggestDomainsSmart(
|
|
|
345
472
|
if (finalAvailable.length > 0) {
|
|
346
473
|
insights.push(`✅ Found ${finalAvailable.length} available domain${finalAvailable.length > 1 ? 's' : ''}`);
|
|
347
474
|
const best = finalAvailable[0]!;
|
|
348
|
-
const priceStr = best.price_first_year !== null ? `$${best.price_first_year}/yr` : '
|
|
349
|
-
|
|
475
|
+
const priceStr = best.price_first_year !== null ? `$${best.price_first_year}/yr` : 'via ' + best.registrar;
|
|
476
|
+
const sourceStr = best.source === 'both' ? ' (verified by both sources)' : '';
|
|
477
|
+
insights.push(`⭐ Top pick: ${best.domain} (${priceStr})${sourceStr}`);
|
|
350
478
|
} else {
|
|
351
479
|
insights.push(`❌ No standard-priced domains available`);
|
|
352
480
|
}
|
|
@@ -376,8 +504,8 @@ export async function executeSuggestDomainsSmart(
|
|
|
376
504
|
detected_industry: detectedIndustry,
|
|
377
505
|
tld,
|
|
378
506
|
style,
|
|
379
|
-
|
|
380
|
-
total_checked:
|
|
507
|
+
sources: sourceStats,
|
|
508
|
+
total_checked: totalChecked + godaddySuggestions.length,
|
|
381
509
|
results: {
|
|
382
510
|
available: finalAvailable,
|
|
383
511
|
premium: finalPremium,
|