Skip to main content
Glama
dorukardahan

Domain Search MCP

by dorukardahan

Domain Search MCP

npm downloads license node MCP Registry Glama Context7

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

No installation needed - run directly:

npx -y domain-search-mcp@latest

Option 2: From Source

git clone https://github.com/dorukardahan/domain-search-mcp.git
cd domain-search-mcp
npm install
npm run build
npm start

Transport Options

stdio (Default)

For MCP clients like Claude Desktop, Cursor, VS Code - uses stdin/stdout:

npx -y domain-search-mcp@latest

HTTP/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 --http

Endpoints:

  • /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

  1. Start the HTTP server (see above)

  2. Expose via ngrok: ngrok http 3000

  3. In ChatGPT, create a Custom GPT and add an Action

  4. Import the OpenAPI spec from https://your-ngrok-url.ngrok-free.dev/openapi.json

  5. Test 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 @latest to 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 (candidates present): scores + ranks candidates, then checks availability for the top 12 against targets.tlds / targets.platforms β€” omit targets for 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.

  • 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

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_token

Optional BYOK (Local)

Used only if PRICING_API_BASE_URL is not set.

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_ip

Redis Distributed Cache (Optional)

For horizontal scaling across multiple MCP instances, configure Redis:

REDIS_URL=redis://:password@host:6379

Without 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_secured

Environment Variables

Variable

Default

Description

MCP_TRANSPORT

stdio

Transport mode: stdio or http

MCP_PORT

3000

HTTP server port (when using HTTP transport)

MCP_HOST

0.0.0.0

HTTP server bind address

CORS_ORIGINS

*

Allowed CORS origins (comma-separated)

PRICING_API_BASE_URL

-

Pricing backend base URL

PRICING_API_TOKEN

-

Optional bearer token

PRICING_API_TIMEOUT_MS

2500

Backend request timeout

PRICING_API_MAX_QUOTES_SEARCH

0

Max pricing calls per search (0 = unlimited; backend rate limits apply)

PRICING_API_MAX_QUOTES_BULK

0

Max pricing calls per bulk search (0 = unlimited; backend rate limits apply)

PRICING_API_CONCURRENCY

4

Pricing request concurrency

PORKBUN_API_KEY

-

Porkbun API key

PORKBUN_API_SECRET

-

Porkbun API secret

NAMECHEAP_API_KEY

-

Namecheap API key

NAMECHEAP_API_USER

-

Namecheap username

NAMECHEAP_CLIENT_IP

-

Namecheap IP whitelist

OUTPUT_FORMAT

table

table, json, or both for tool output formatting

LOG_LEVEL

info

Logging level

CACHE_TTL_AVAILABILITY

60

Availability cache TTL (seconds)

CACHE_TTL_PRICING

3600

Pricing cache TTL (seconds)

CACHE_TTL_SEDO

3600

Sedo auctions feed cache TTL (seconds)

CACHE_TTL_AFTERMARKET_NS

300

Nameserver lookup cache TTL (seconds)

SEDO_FEED_ENABLED

true

Enable Sedo feed lookup for aftermarket hints

SEDO_FEED_URL

https://sedo.com/txt/auctions_us.txt

Sedo public feed URL

AFTERMARKET_NS_ENABLED

true

Enable nameserver-based aftermarket hints

AFTERMARKET_NS_TIMEOUT_MS

1500

Nameserver lookup timeout (ms)

REDIS_URL

-

Redis connection URL for distributed caching (e.g., redis://:password@host:6379)

QWEN_INFERENCE_ENDPOINT

(none)

Your own AI inference endpoint for suggest_domains_smart (offline semantic fallback if unset)

QWEN_TIMEOUT_MS

15000

AI inference request timeout

QWEN_MAX_RETRIES

2

Retry count for AI inference failures

SLIM_TOOLS

false

Set true to opt into the slim 6-tool surface instead of the full 12-tool default

ADVANCED_TOOLS

false

Deprecated alias for the pre-SLIM_TOOLS flag. Set true to force the full 12-tool surface and override SLIM_TOOLS; no-op since full is already the default

Output Format

Tool responses are returned as Markdown tables by default. If you need raw JSON for programmatic use, set:

OUTPUT_FORMAT=json

Data 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_url before 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.com

Bulk Check

bulk_search(["startup", "launch", "begin", "init"], "io")

β†’ Checks startup.io, launch.io, begin.io, init.io in parallel

Development

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 client

For Source/Git Users

cd domain-search-mcp
git pull origin main
npm install
npm run build

Staying Updated

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.

Documentation

Available Tools

7 tools
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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe username/handle to check.
platformsNoPlatforms to check. Defaults to ['github', 'twitter', 'reddit', 'npm'].

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain name to compare (without extension).
tldYesThe TLD extension (e.g., 'com', 'io').
registrarsNoRegistrars to compare. Defaults to ['porkbun', 'namecheap'].

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_nameYesThe domain name to search (e.g., 'vibecoding'). No extension needed.
tldsNoTLD extensions to check (e.g., ['com', 'io', 'dev']). Defaults to ['com', 'io', 'dev'].
registrarsNoOptional: specific registrars to check. Leave empty to auto-select.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
base_nameYesThe base domain name to generate variations from.
tldNoTLD to check (e.g., 'com'). Defaults to 'com'.
variantsNoTypes of variations to generate. Defaults to all.
max_suggestionsNoMaximum suggestions to return (1-50). Defaults to 10.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesKeywords, business description, or base domain name.
tldNoTLD to check (e.g., 'com'). Defaults to 'com'.
industryNoIndustry for contextual suggestions. Auto-detected if omitted.
styleNoSuggestion style preference.
max_suggestionsNoMaximum suggestions to return (1-50). Defaults to 15.
include_premiumNoInclude premium domains. Defaults to false.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tldYesThe TLD to get info about (e.g., 'com', 'io', 'dev').
detailedNoInclude detailed information. Defaults to false.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 7 tool updatesv1.0.0
    • First observedbulk_search
    • First observedcheck_socials
    • First observedcompare_registrars
    • First observedsearch_domain
    • First observedsuggest_domains
    • First observedsuggest_domains_smart
    • First observedtld_info

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessUnresponsive

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

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Fast domain availability checker with RDAP/WHOIS lookup, batch checking, TLD presets, pattern generation, and detailed registration info. Built in Rust for native performance.
    305
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Check domain name availability via RDAP. Single lookups, bulk checks (up to 50), and smart name suggestions with registration links. No API key needed.
    MIT