Domain Search MCP
Domain Search MCP is a Model Context Protocol server for fast, local-first domain availability checks and AI-powered domain name suggestions.
Core Capabilities:
Domain Availability: Check single domains across multiple TLDs or bulk-check up to 100 names with pricing, WHOIS privacy, and premium/auction signals
AI-Powered Suggestions: Generate brandable domain names using fine-tuned Qwen 7B-DPO model with dual-source suggestions (semantic engine + GoDaddy AI), industry-aware recommendations, and style preferences (brandable, descriptive, short, creative)
Domain Variations: Generate hyphenated, numbered, prefixed, suffixed, and abbreviated variations
Registrar Pricing: Compare registration and renewal pricing across multiple registrars (Porkbun, Namecheap)
TLD Information: Get metadata, restrictions, price ranges, and recommendations for domain extensions
Social Media Checks: Verify username availability across 10 platforms (GitHub, Twitter, Instagram, LinkedIn, TikTok, Reddit, YouTube, npm, PyPI, ProductHunt) with confidence indicators
Project Analysis: Scan local projects or GitHub repos to suggest matching domain names
Domain Investment: Find valuable domains through Sedo auction scanning and investment scoring
Monitoring: Track domains approaching expiration and AI inference service health
Key Features:
Zero-configuration operation using public RDAP/WHOIS data
Optional pricing backend with BYOK (Bring Your Own Keys) support
Multiple transport options: stdio (Claude Desktop, VS Code, Cursor) or HTTP/SSE (ChatGPT, web clients)
Redis distributed caching for horizontal scaling
Prometheus-compatible metrics for observability
Checks username availability on GitHub as part of social handle verification for brand consistency across platforms.
Verifies username availability on Instagram as part of social handle verification for brand consistency across platforms.
Enables domain availability checking and price comparison through Namecheap's API, allowing users to find the best deals across registrars for domain registration.
Provides domain availability checking and pricing information through Porkbun's API, including WHOIS privacy details and registrar-specific pricing for domain registration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Domain Search MCPcheck if myapp is available as a .com domain"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Domain Search MCP
Naming engine with availability intelligence β an MCP server that scores the names your model generates and runs availability checks against domains, socials, and package registries. Works with zero configuration using public RDAP/WHOIS, and optionally enriches results with registrar pricing via a backend you control.
π v1.12.0: name_project β a two-phase naming engine. Call it once to get generation instructions for your model, call it again with candidates[] to get anti-slop scoring, ranking, and live availability checks across domains, socials, and npm. See name_project below.
π v1.10.0: GoDaddy public endpoint integration! Enhanced fallback chain (RDAP β GoDaddy β WHOIS) with premium/auction domain detection. Circuit breaker pattern ensures resilience.
π€ v1.9.0+: AI-powered domain suggestions work out of the box! No API keys needed - suggest_domains_smart uses our public fine-tuned Qwen 7B-DPO model. Plus: Redis distributed caching and /metrics endpoint for observability.
Built on the Model Context Protocol for Claude, Codex, VS Code, Cursor, Cline, and other MCP-compatible clients.
Features
Feature | Description |
π Multi-TLD Search | Check one name across .com, .io, .dev, .ai and 500+ TLDs |
π¦ Bulk Check | Validate up to 100 domain names in a single call |
π Premium Detection | Identify premium and auction domains via GoDaddy |
π€ AI Suggestions | Generate brandable names with fine-tuned Qwen 7B-DPO |
π° Price Comparison | Compare pricing across Porkbun, Namecheap |
π Social Handle Check | Verify username availability on GitHub, Twitter, etc. |
π Dual Transport | Works via stdio (Claude) or HTTP/SSE (ChatGPT Actions) |
β‘ Zero Config | Works instantly - no API keys required for availability |
Related MCP server: DomainFinder MCP Server
What It Does
Check a single name across multiple TLDs.
Bulk-check up to 100 names for one TLD.
Compare registrar pricing (uses backend when configured).
Suggest names and validate social handles.
Detect premium/auction signals for
search_domain.
How It Works
Availability and pricing are intentionally separated:
Availability Chain (zero-config):
βββββββββββ βββββββββββ βββββββββββ
β RDAP β βββΊ β GoDaddy β βββΊ β WHOIS β
β (fast) β β(premium)β β(fallbackβ
βββββββββββ βββββββββββ βββββββββββAvailability (default, no keys needed):
RDAP: Primary source - fast, unlimited, public registry data
GoDaddy: Secondary - adds premium/auction detection (30 req/min, circuit breaker protected)
WHOIS: Last resort fallback for edge cases
Pricing (optional):
Recommended:
PRICING_API_BASE_URL(backend with Porkbun keys)Optional BYOK: Porkbun/Namecheap only when backend is not configured
This keeps the server zero-config while letting power users enable pricing.
Pricing Verification
Responses include price_check_url (registrar checkout/search link) and may include
price_note when a price is estimated. Always verify the final price on the registrar
checkout page before purchase.
If an auction/premium signal is detected, results include an aftermarket block with
links to marketplace pages when available. Taken domains may include Sedo auction
hints (public feed) and nameserver-based marketplace hints (Sedo/Dan/Afternic).
Quick Start
Option 1: npx (Recommended)
No installation needed - run directly:
npx -y domain-search-mcp@latestOption 2: From Source
git clone https://github.com/dorukardahan/domain-search-mcp.git
cd domain-search-mcp
npm install
npm run build
npm startTransport Options
stdio (Default)
For MCP clients like Claude Desktop, Cursor, VS Code - uses stdin/stdout:
npx -y domain-search-mcp@latestHTTP/SSE (ChatGPT, Web Clients, LM Studio)
For ChatGPT Actions, web apps, and REST API clients:
# Start HTTP server on port 3000
npx -y domain-search-mcp@latest --http
# Or with custom port
MCP_PORT=8080 npx -y domain-search-mcp@latest --httpEndpoints:
/mcp- MCP protocol (POST for messages, GET for SSE stream)/api/tools/*- REST API for each tool (ChatGPT Actions compatible)/openapi.json- OpenAPI 3.1 specification/health- Health check/metrics- Prometheus-compatible metrics (cache stats, request counts, AI inference health)
ChatGPT Custom GPT Integration
Start the HTTP server (see above)
Expose via ngrok:
ngrok http 3000In ChatGPT, create a Custom GPT and add an Action
Import the OpenAPI spec from
https://your-ngrok-url.ngrok-free.dev/openapi.jsonTest the tools!
For production deployment, use a permanent domain with SSL instead of ngrok.
REST API Example:
curl -X POST https://your-domain/api/tools/search_domain \
-H "Content-Type: application/json" \
-d '{"domain_name":"vibecoding"}'MCP Client Config
Claude Code (.mcp.json in project root):
{
"mcpServers": {
"domain-search": {
"type": "stdio",
"command": "npx",
"args": ["-y", "domain-search-mcp@latest"]
}
}
}Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"domain-search": {
"command": "npx",
"args": ["-y", "domain-search-mcp@latest"]
}
}
}π‘ Tip: Always use
@latestto ensure you're running the newest version with all features.
Tools
All 12 tools listed below are exposed to MCP clients by default. The 6-tool
slim profile (name_project, search_domain, bulk_search, check_socials,
tld_info, ai_health) is opt-in β set SLIM_TOOLS=true if you want a
sharper tool-selection surface for simpler client integrations (see
Environment Variables). A future 2.0 release may
flip the default to slim.
ADVANCED_TOOLS=true is a deprecated alias that forces the full surface and
overrides SLIM_TOOLS; it's a harmless no-op today since full is already the
default.
name_project
Flagship two-phase naming engine. Call it once to get lane-by-lane generation
instructions for your model; call it again with candidates[] to get anti-slop
scoring, ranking, and live availability checks across domains, socials, and npm.
Modes:
brief(describe what you're naming),auto(analyze the current workspace),from_name(find domains/variants for a name you already like),from_domain(fit a project/brand to a domain you found).Phase 1 (no
candidates): returns generation instructions + lane prompts.Phase 2 (
candidatespresent): scores + ranks candidates, then checks availability for the top 12 againsttargets.tlds/targets.platformsβ omittargetsfor pure naming with no availability calls.
Scores are heuristic rankings for comparing candidates against each other β not objective, universal brandability truth. Availability results reflect a single source checked at one moment in time; re-verify before you register or rely on anything.
Phase 1 β call with no candidates:
{"mode": "brief", "brief": "an MCP naming engine"}Brief: an MCP naming engine
Now generate between 30 and 50 name candidates spread across these lanes:
- [evocative] Real words borrowed for their feeling, not their meaning (like Slack, Notion, Bolt). Single dictionary words preferred.
- [invented] Coined words that do not exist but sound like they could (like Zapier, Klarna). Must be pronounceable on first read.
- [compound] Two short real words fused (like Facebook, Snapchat). Both halves must stay readable; no glue letters.
- [premium] Short, expensive-feeling names: 4-7 letters, strong single or double syllable (like Stripe, Vercel, Arc).
Rules: single words or tight compounds, no taglines, no explanations yet. Then call name_project again with the SAME arguments plus candidates:[...] to get scoring and availability.Phase 2 β resubmit the same arguments plus candidates:
{"mode": "brief", "brief": "an MCP naming engine", "candidates": ["Nexify", "Corda"]}| Name | Score | Verdict | Badges | Why |
| --- | --- | --- | --- | --- |
| Corda | 97 strong | - | - | no AI-slop patterns; clean pronunciation and typing |
| Nexify | 60 middling | - | - | slop: overused prefix "nex-"; slop: overused suffix "-ify" |
2 candidates received, 2 passed constraints, top 2 returned.
No availability-check targets - pure naming mode.Badges: tldβ free to register, tld$ for sale (aftermarket/premium - registered or priced, not free to register), tldβ taken, tld? unknown.
ccTLD checks (.ai / .io / .sh / .ac) are cross-checked against native WHOIS/DNS ground truth, not taken on RDAP's word alone.
See docs/API.md for the full parameter/response schema.
Core Search
search_domain: Check a name across multiple TLDs, adds premium/auction signals.bulk_search: Check up to 100 names for a single TLD.compare_registrars: Compare pricing across registrars (backend when configured).
AI-Powered Suggestions
suggest_domains: Generate variations (prefix/suffix/hyphen).suggest_domains_smart: π€ AI-powered brandable name generation using fine-tuned Qwen 7B-DPO. Zero-config - works instantly!analyze_project: Scan local project or GitHub repo to extract context and suggest matching domain names.
Domain Investment
hunt_domains: Find valuable domains for investment - scans Sedo auctions, generates patterns, calculates investment scores.expiring_domains: Monitor domains approaching expiration (requires federated negative cache).
Utilities
tld_info: TLD metadata and restrictions.check_socials: Username availability across platforms.ai_health: Check status of AI inference services (VPS Qwen, circuit breakers, adaptive concurrency).
Configuration
Pricing Backend (Recommended)
Set a backend URL that owns registrar keys (Porkbun). The MCP will call
/api/quote and /api/compare on that backend for pricing.
PRICING_API_BASE_URL=https://your-backend.example.com
PRICING_API_TOKEN=optional_bearer_tokenOptional BYOK (Local)
Used only if PRICING_API_BASE_URL is not set.
Porkbun keys:
Namecheap keys (IP whitelist required):
PORKBUN_API_KEY=pk1_your_api_key
PORKBUN_API_SECRET=sk1_your_secret
NAMECHEAP_API_KEY=your_api_key
NAMECHEAP_API_USER=your_username
NAMECHEAP_CLIENT_IP=your_whitelisted_ipRedis Distributed Cache (Optional)
For horizontal scaling across multiple MCP instances, configure Redis:
REDIS_URL=redis://:password@host:6379Without Redis, the server uses in-memory caching (works fine for single instances). Redis enables:
Shared cache across multiple server instances
Persistent cache surviving restarts
Better cache hit rates in load-balanced deployments
AI Inference (bring your own endpoint)
AI-powered suggestions (suggest_domains_smart) use your own inference endpoint when configured. Point QWEN_INFERENCE_ENDPOINT at a llama.cpp/Qwen server you control. If it is unset, suggestions fall back to the built-in offline semantic engine (no external calls, no API keys needed).
# Public hosts must use HTTPS; loopback/private hosts may use HTTP.
QWEN_INFERENCE_ENDPOINT=http://127.0.0.1:8070
QWEN_API_KEY=optional_if_securedEnvironment Variables
Variable | Default | Description |
| stdio | Transport mode: |
| 3000 | HTTP server port (when using HTTP transport) |
| 0.0.0.0 | HTTP server bind address |
| * | Allowed CORS origins (comma-separated) |
| - | Pricing backend base URL |
| - | Optional bearer token |
| 2500 | Backend request timeout |
| 0 | Max pricing calls per search (0 = unlimited; backend rate limits apply) |
| 0 | Max pricing calls per bulk search (0 = unlimited; backend rate limits apply) |
| 4 | Pricing request concurrency |
| - | Porkbun API key |
| - | Porkbun API secret |
| - | Namecheap API key |
| - | Namecheap username |
| - | Namecheap IP whitelist |
| table |
|
| info | Logging level |
| 60 | Availability cache TTL (seconds) |
| 3600 | Pricing cache TTL (seconds) |
| 3600 | Sedo auctions feed cache TTL (seconds) |
| 300 | Nameserver lookup cache TTL (seconds) |
| true | Enable Sedo feed lookup for aftermarket hints |
| Sedo public feed URL | |
| true | Enable nameserver-based aftermarket hints |
| 1500 | Nameserver lookup timeout (ms) |
| - | Redis connection URL for distributed caching (e.g., |
| (none) | Your own AI inference endpoint for |
| 15000 | AI inference request timeout |
| 2 | Retry count for AI inference failures |
| false | Set |
| false | Deprecated alias for the pre- |
Output Format
Tool responses are returned as Markdown tables by default. If you need raw JSON for programmatic use, set:
OUTPUT_FORMAT=jsonData Sources
Source | Position in Chain | Usage | API Keys |
RDAP | 1st (Primary) | Fast availability check | Not needed |
GoDaddy | 2nd (Fallback) | Premium/auction detection | Not needed |
WHOIS | 3rd (Last resort) | Legacy availability | Not needed |
Pricing API | Parallel | Live pricing via backend | Backend token |
Porkbun API | Parallel (BYOK) | Availability + pricing | API key + secret |
Namecheap API | Parallel (BYOK) | Availability + pricing | API key + IP whitelist |
Sedo Feed | Enrichment | Aftermarket auction hints | Not needed |
Pricing Behavior
Live price is attempted first for every available domain.
If live quotes fail or are rate-limited, the result falls back to the catalog estimate and includes
price_note.Always verify pricing via
price_check_urlbefore purchase.
Examples
Basic Search (No API Keys)
search_domain("myproject", ["com", "io", "dev"])
βββββββββββββββββββ¬ββββββββββββ¬ββββββββββ¬βββββββββ
β Domain β Available β Premium β Source β
βββββββββββββββββββΌββββββββββββΌββββββββββΌβββββββββ€
β myproject.com β β
β No β rdap β
β myproject.io β β β - β rdap β
β myproject.dev β β
β Yes β godaddyβ
βββββββββββββββββββ΄ββββββββββββ΄ββββββββββ΄βββββββββAI-Powered Suggestions
suggest_domains_smart("coffee shop in seattle", { style: "brandable" })
β seattlebrew.com, pugetperk.io, raincitycoffee.co, cascadiacafe.comBulk Check
bulk_search(["startup", "launch", "begin", "init"], "io")
β Checks startup.io, launch.io, begin.io, init.io in parallelDevelopment
npm run dev # watch mode
npm test # run Jest
npm run build # compile to dist/Release
See docs/RELEASE.md for the tag-triggered release flow. Version tags trigger
the GitHub Release, npm trusted publishing with provenance, and MCP Registry
publication through GitHub Actions.
Changelog
See CHANGELOG.md for release history.
Security Notes
Do not commit API keys or
.mcpregistry_*files.Without
PRICING_API_BASE_URL(or BYOK keys), pricing is not available (availability still works).
Upgrading
For npx Users
If you use npx domain-search-mcp (without @latest), npx may cache an old version.
Fix: Update your MCP config to use @latest:
"args": ["-y", "domain-search-mcp@latest"]Or clear the npx cache manually:
npx clear-npx-cache # then restart your MCP clientFor Source/Git Users
cd domain-search-mcp
git pull origin main
npm install
npm run buildStaying Updated
Watch the repo: Click "Watch" β "Releases only" on GitHub to get notified of new versions.
Check releases: See GitHub Releases for changelog and upgrade notes.
npm page: npmjs.com/package/domain-search-mcp shows the latest version.
Architecture
For detailed system architecture diagrams, see docs/ARCHITECTURE.md:
Transport layer (stdio vs HTTP/SSE)
Tool execution flow
Data source waterfall (RDAP β Pricing API β WHOIS)
VPS deployment architecture
AI suggestion flow
MCP session lifecycle
Why This Tool?
Problem | Solution |
Domain APIs require signup/keys | RDAP + GoDaddy = zero-config availability |
Premium domains show as "available" | GoDaddy detects premium/auction status |
Hard to check multiple TLDs | Single call checks .com, .io, .dev, etc. |
No AI integration for naming | Built-in Qwen 7B for brandable suggestions |
Only works with Claude | HTTP transport supports ChatGPT, LM Studio |
FAQ
Q: Does this work without any API keys? A: Yes! Availability checking uses public RDAP and GoDaddy endpoints. Only pricing requires API keys.
Q: Which MCP clients are supported? A: Claude Desktop, Claude Code, VS Code, Cursor, Cline (stdio), and ChatGPT, LM Studio (HTTP/SSE).
Q: How accurate is premium domain detection? A: GoDaddy's public endpoint detects most premium and auction domains. Always verify on registrar checkout.
Q: Can I self-host the AI suggestions?
A: Yes! Set QWEN_INFERENCE_ENDPOINT to your llama.cpp server running the fine-tuned model.
Links
MCP Registry: registry.modelcontextprotocol.io
Documentation
Architecture - System design and data flow
API Reference - Tool schemas and responses
Configuration - Environment variables
Workflows - Common usage patterns
Available Tools
7 toolsbulk_searchA
Check availability for multiple domain names at once.
Efficiently searches up to 100 domains in parallel with rate limiting. Use a single TLD for best performance.
Returns:
Availability status for each domain
Pricing where available
Summary statistics
Example:
bulk_search(["vibecoding", "myapp", "coolstartup"], "io")
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | List of domain names to check. Don't include extensions. Max 100. | |
| tld | No | TLD to check for all domains (e.g., 'com'). Defaults to 'com'. | |
| registrar | No | Optional: specific registrar to use. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it mentions rate limiting, parallel processing capability, performance considerations, and what the tool returns (availability status, pricing, summary statistics). It doesn't cover error handling or authentication requirements, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise. It starts with the core purpose, then provides operational details, return values, and a concrete example - all in 6 sentences with zero wasted words. Every sentence adds value and the information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, 100% schema coverage, but no annotations and no output schema, the description does well by explaining what the tool returns and providing an example. It covers the main use case comprehensively but could benefit from mentioning error cases or limitations (e.g., what happens if domains exceed 100).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by reinforcing the 'domains' parameter's purpose ('domain names to check') and the 'tld' parameter's usage guidance ('single TLD for best performance'), but doesn't provide significant additional semantic context beyond what's already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('check availability', 'searches') and resources ('multiple domain names', 'up to 100 domains'). It distinguishes from siblings like 'search_domain' (singular) and 'suggest_domains' (suggestion rather than availability checking). The example reinforces the bulk nature of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('multiple domain names at once', 'up to 100 domains in parallel') and offers performance guidance ('use a single TLD for best performance'). However, it doesn't explicitly state when NOT to use it or mention alternatives like 'search_domain' for single-domain checks, which would be needed for a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_socialsA
Check if a username is available on social media and developer platforms.
Supports 10 platforms with varying confidence levels:
HIGH: GitHub, npm, PyPI, Reddit, Twitter/X (reliable public APIs)
MEDIUM: YouTube, ProductHunt (status code based)
LOW: Instagram, LinkedIn, TikTok (block automated checks - verify manually)
Returns availability status with confidence indicator.
Example:
check_socials("vibecoding") β checks GitHub, Twitter, Reddit, npm
check_socials("myapp", ["github", "npm", "pypi"]) β developer platforms only
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The username/handle to check. | |
| platforms | No | Platforms to check. Defaults to ['github', 'twitter', 'reddit', 'npm']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the tool checks availability across 10 platforms, returns a confidence indicator, and warns that some platforms (Instagram, LinkedIn, TikTok) have low confidence due to automated check blocks. It also clarifies default behavior for platforms when not specified. However, it does not mention rate limits, authentication needs, or error handling, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by platform details and examples. Every sentence adds value: the first states the purpose, the second lists platforms with confidence levels, the third explains the return format, and the examples illustrate usage. There is no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of checking multiple platforms with varying confidence levels and no output schema, the description is mostly complete. It covers the tool's purpose, supported platforms, confidence indicators, and usage examples. However, it lacks details on the return format structure, error scenarios, or how confidence levels are determined, which could be important for an agent to interpret results accurately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining the platforms with confidence levels, providing examples of usage, and clarifying default behavior for the platforms parameter. This enhances understanding of how parameters affect the tool's operation, though it does not detail parameter interactions or edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check if a username is available on social media and developer platforms.' It specifies the verb ('check'), resource ('username'), and scope ('social media and developer platforms'), distinguishing it from sibling tools like search_domain or suggest_domains which focus on domains rather than usernames.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage by listing supported platforms with confidence levels, which helps the agent understand when to rely on results. However, it does not explicitly state when to use this tool versus alternatives like bulk_search or compare_registrars, nor does it mention any prerequisites or exclusions beyond the confidence warnings for certain platforms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_registrarsA
Compare domain pricing across multiple registrars.
Checks the same domain at different registrars to find:
Best first year price
Best renewal price
Overall recommendation
Returns pricing comparison and a recommendation.
Example:
compare_registrars("vibecoding", "com") β compares Porkbun vs Namecheap
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain name to compare (without extension). | |
| tld | Yes | The TLD extension (e.g., 'com', 'io'). | |
| registrars | No | Registrars to compare. Defaults to ['porkbun', 'namecheap']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool returns (pricing comparison and recommendation) and the comparison criteria (first year price, renewal price, overall recommendation), but it doesn't mention potential limitations like rate limits, authentication requirements, or what happens with invalid inputs. The example adds some context but doesn't fully compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. The first sentence states the core purpose, followed by bullet points detailing what it checks, a sentence about returns, and a concrete example. Every sentence adds value without redundancy, and it's front-loaded with the main functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains the purpose and returns but doesn't cover error cases, output format details, or behavioral constraints. Without annotations or output schema, the agent lacks complete guidance on what to expect beyond the basic comparison promise.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing clear documentation for all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3. The example shows parameter usage but doesn't explain semantics beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('compare domain pricing') and resources ('across multiple registrars'), and it distinguishes from siblings by focusing on price comparison rather than availability checking (search_domain), bulk operations (bulk_search), or domain suggestion (suggest_domains). The example reinforces the specific comparison action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to compare pricing for a specific domain across registrars), but it doesn't explicitly state when not to use it or mention alternatives among the sibling tools. The example implies it's for single-domain comparisons, but there's no explicit exclusion for bulk operations or other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_domainA
Search for domain availability and pricing across multiple TLDs.
Returns:
Availability status for each domain
Pricing (first year and renewal)
Whether WHOIS privacy is included
Human-readable insights and next steps
Examples:
search_domain("vibecoding") β checks vibecoding.com, .io, .dev
search_domain("myapp", ["com", "io"]) β checks specific TLDs
| Name | Required | Description | Default |
|---|---|---|---|
| domain_name | Yes | The domain name to search (e.g., 'vibecoding'). No extension needed. | |
| tlds | No | TLD extensions to check (e.g., ['com', 'io', 'dev']). Defaults to ['com', 'io', 'dev']. | |
| registrars | No | Optional: specific registrars to check. Leave empty to auto-select. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (availability, pricing, WHOIS privacy, insights) and provides examples of usage, adding valuable context beyond the input schema. However, it doesn't mention rate limits, authentication needs, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by a clear bulleted list of returns and practical examples. Every sentence earns its place by enhancing understanding without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a search tool with 3 parameters, no annotations, and no output schema, the description is largely completeβit explains the purpose, returns, and usage. However, it could improve by detailing output structure or error cases, slightly limiting completeness for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds minimal value by illustrating parameter usage in examples (e.g., 'vibecoding' for domain_name, ['com', 'io'] for tlds), but doesn't provide additional semantic details beyond what the schema specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for domain availability and pricing') and resource ('across multiple TLDs'), distinguishing it from siblings like 'check_socials' or 'suggest_domains'. It precisely defines the tool's function without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples (e.g., checking domain availability) but lacks explicit guidance on when to use this tool versus alternatives like 'bulk_search' or 'compare_registrars'. No context about exclusions or prerequisites is provided, leaving usage decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_domainsA
Generate and check availability of domain name variations.
Creates variations like:
Hyphenated: vibe-coding
With numbers: vibecoding1, vibecoding2
Prefixes: getvibecoding, tryvibecoding
Suffixes: vibecodingapp, vibecodinghq
Returns only available suggestions, ranked by quality.
Example:
suggest_domains("vibecoding") β finds available variations
| Name | Required | Description | Default |
|---|---|---|---|
| base_name | Yes | The base domain name to generate variations from. | |
| tld | No | TLD to check (e.g., 'com'). Defaults to 'com'. | |
| variants | No | Types of variations to generate. Defaults to all. | |
| max_suggestions | No | Maximum suggestions to return (1-50). Defaults to 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behaviors: it generates variations (with specific types listed), checks availability, and returns only available ones ranked by quality. However, it doesn't mention potential limitations like rate limits, authentication needs, or what 'quality' ranking entails (e.g., based on length, memorability).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized: it starts with the core purpose, lists variation types with clear examples, states the return behavior, and ends with a concrete example. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete. It covers the tool's purpose, behavior, and provides an example, but lacks details on output format (e.g., structure of returned suggestions), error handling, or deeper behavioral context like how 'quality' is determined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter semantics beyond the schema: it implies 'base_name' is used for variation generation and provides example variations, but doesn't explain parameter interactions or default behaviors (e.g., what 'all' variants includes).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Generate and check availability of domain name variations' and 'Returns only available suggestions, ranked by quality.' It distinguishes from siblings like 'search_domain' (single check) and 'suggest_domains_smart' (likely more advanced) by specifying the variation generation approach with concrete examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to get available domain variations from a base name) and includes an example. However, it doesn't explicitly state when not to use it or compare it to alternatives like 'suggest_domains_smart' or 'search_domain', which would be needed for a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_domains_smartA
AI-powered domain name suggestion engine.
Generate creative, brandable domain names from keywords or business descriptions. Combines our semantic engine with GoDaddy's AI suggestions for maximum coverage.
Features:
Dual-source suggestions: Our semantic engine + GoDaddy AI
Understands natural language queries ("coffee shop in seattle")
Auto-detects industry for contextual suggestions
Generates portmanteau/blended names (instagram = instant + telegram)
Applies modern naming patterns (ly, ify, io, hub, etc.)
Filters premium domains by default
Pre-verified availability via GoDaddy
Examples:
suggest_domains_smart("ai customer service") β AI-themed suggestions
suggest_domains_smart("organic coffee", industry="food") β Food-focused names
suggest_domains_smart("vibecoding", style="short") β Minimal length names
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keywords, business description, or base domain name. | |
| tld | No | TLD to check (e.g., 'com'). Defaults to 'com'. | |
| industry | No | Industry for contextual suggestions. Auto-detected if omitted. | |
| style | No | Suggestion style preference. | |
| max_suggestions | No | Maximum suggestions to return (1-50). Defaults to 15. | |
| include_premium | No | Include premium domains. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by detailing key behavioral traits: dual-source suggestions (semantic engine + GoDaddy AI), natural language understanding, auto-detection of industry, generation techniques (portmanteau, modern patterns), default filtering of premium domains, and pre-verified availability via GoDaddy. It lacks specifics on rate limits or error handling, but covers most operational aspects clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with a clear purpose statement followed by bullet-pointed features and examples. Every sentence adds value, though the bullet points could be slightly condensed. It efficiently communicates complex functionality without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, AI-powered features) and no annotations or output schema, the description does a good job of completeness. It explains the tool's behavior, features, and provides examples, covering most contextual needs. A minor gap is the lack of output format details (e.g., structure of returned suggestions), but overall it's sufficient for an agent to understand and use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal parameter-specific semantics beyond the schemaβit mentions 'industry' and 'style' in examples but doesn't elaborate on their effects beyond what the schema provides. This meets the baseline of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'AI-powered domain name suggestion engine' that 'Generate[s] creative, brandable domain names from keywords or business descriptions.' It clearly distinguishes from siblings like 'search_domain' (likely direct search) and 'suggest_domains' (likely simpler suggestions) by emphasizing its 'smart' AI-powered approach with dual sources and advanced features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for generating creative, brandable domain names from natural language queries, with examples showing different use cases. However, it does not explicitly state when not to use it or name specific alternatives among siblings (e.g., 'suggest_domains' vs. 'search_domain'), though the AI-powered features imply it's for more sophisticated suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tld_infoA
Get information about a Top Level Domain (TLD).
Returns:
Description and typical use case
Price range
Any special restrictions
Popularity and recommendations
Example:
tld_info("io") β info about .io domains
| Name | Required | Description | Default |
|---|---|---|---|
| tld | Yes | The TLD to get info about (e.g., 'com', 'io', 'dev'). | |
| detailed | No | Include detailed information. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. While it lists return categories (description, price range, restrictions, popularity), it doesn't specify whether this is a read-only operation, if it requires authentication, rate limits, error conditions, or data freshness. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: purpose statement, bulleted return categories, and a concrete example. Every sentence earns its place - the bullet points clarify what information is returned, and the example demonstrates usage. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with 2 parameters and 100% schema coverage but no output schema, the description is adequate but has gaps. It specifies what information is returned but not the format or structure. Without annotations, it should ideally mention that this is a read-only operation and any limitations. The example helps but doesn't fully compensate for missing behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds minimal value beyond the schema - it provides an example showing 'tld' parameter usage but doesn't explain the 'detailed' parameter's effect on the returned information. However, with only 2 parameters and excellent schema coverage, the baseline is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get information about a Top Level Domain (TLD)' - a clear verb ('Get information') and resource ('Top Level Domain'). It distinguishes from siblings like 'search_domain' or 'suggest_domains' by focusing on retrieving metadata about TLDs rather than searching for available domains or making suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'compare_registrars' or 'suggest_domains'. There's no mention of prerequisites, use cases, or exclusions. The example shows usage but doesn't explain context or decision criteria for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.0.0- First observed
bulk_search - First observed
check_socials - First observed
compare_registrars - First observed
search_domain - First observed
suggest_domains - First observed
suggest_domains_smart - First observed
tld_info
TDQS
Scored across 7 tools
Most tools have distinct purposes, but there is some overlap between 'suggest_domains' and 'suggest_domains_smart' as both generate domain suggestions, which could cause confusion. However, the descriptions clarify that 'suggest_domains' focuses on variations of a given name, while 'suggest_domains_smart' uses AI for creative generation from keywords, helping to mitigate ambiguity.
Tool names follow a consistent snake_case pattern throughout, which is good. However, there is a minor deviation with 'suggest_domains_smart' using a suffix ('_smart') that breaks the verb_noun pattern seen in others like 'search_domain' or 'compare_registrars', slightly reducing consistency.
With 7 tools, the count is well-scoped for a domain search server, covering key aspects like bulk searches, social media checks, registrar comparisons, domain suggestions, and TLD information. Each tool appears to serve a specific and useful function without being excessive or insufficient.
The tool set provides comprehensive coverage for domain search tasks, including availability checks, pricing comparisons, and suggestion generation. A minor gap is the lack of a tool for direct domain registration or management actions, but the server's focus on search and comparison is well-covered, allowing agents to work effectively within this scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Check domain name availability via RDAP. Single, bulk, and smart suggestions. No API key needed.
Find domains and domain hacks with live availability, registrar prices, and keyword search demand.
Watch domains and forecast when they drop; check a name's domain, handles, and trademark.
Check if a brand name is free across domains, GitHub, npm and PyPI, and suggest available names.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables domain name availability checking through DNS and WHOIS lookups with confidence scoring. It supports searching across alternative TLDs and generating domain name variations for branding purposes.4-
- AlicenseNot gradedqualityNot gradedmaintenanceEnables users to check domain name availability across 877 TLDs, generate intelligent suggestions, and retrieve WHOIS registration information. It supports bulk domain checks and cross-TLD searches through natural language interfaces.0-
- FlicenseNot gradedqualityBmaintenanceFast domain availability checker with RDAP/WHOIS lookup, batch checking, TLD presets, pattern generation, and detailed registration info. Built in Rust for native performance.305-
- AlicenseNot gradedqualityFmaintenanceCheck domain name availability via RDAP. Single lookups, bulk checks (up to 50), and smart name suggestions with registration links. No API key needed.MIT