{"id":30739779,"url":"https://github.com/saidutt46/domain-check","last_synced_at":"2026-04-01T23:03:51.805Z","repository":{"id":287529446,"uuid":"965028119","full_name":"saidutt46/domain-check","owner":"saidutt46","description":"Fast, universal domain availability checker - 1,200+ TLDs, pattern generation, RDAP with WHOIS fallback. CLI + Rust library + MCP server for AI agents.","archived":false,"fork":false,"pushed_at":"2026-03-22T07:51:35.000Z","size":460,"stargazers_count":253,"open_issues_count":4,"forks_count":14,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-22T22:44:27.853Z","etag":null,"topics":["async","cli","concurrency","domain-check","domain-check-lib","domains","library","rdap","rust","rust-crate","whois"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/domain-check","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saidutt46.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-12T08:51:26.000Z","updated_at":"2026-03-22T07:51:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"23a89712-980b-4322-8c20-da0330b519cd","html_url":"https://github.com/saidutt46/domain-check","commit_stats":null,"previous_names":["saidutt46/domain-check"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/saidutt46/domain-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saidutt46%2Fdomain-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saidutt46%2Fdomain-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saidutt46%2Fdomain-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saidutt46%2Fdomain-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saidutt46","download_url":"https://codeload.github.com/saidutt46/domain-check/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saidutt46%2Fdomain-check/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","cli","concurrency","domain-check","domain-check-lib","domains","library","rdap","rust","rust-crate","whois"],"created_at":"2025-09-03T23:01:49.909Z","updated_at":"2026-04-01T23:03:51.776Z","avatar_url":"https://github.com/saidutt46.png","language":"Rust","funding_links":[],"categories":["rust","\u003ca name=\"webdev\"\u003e\u003c/a\u003eWeb development"],"sub_categories":[],"readme":"# domain-check\n\nUniversal domain exploration engine: fast domain availability checks across the internet — as a CLI, Rust library, and MCP server for AI agents.\n\n[![Homebrew](https://img.shields.io/badge/Homebrew-available-brightgreen)](https://github.com/saidutt46/homebrew-domain-check)\n[![CLI Crate](https://img.shields.io/crates/v/domain-check.svg?label=CLI)](https://crates.io/crates/domain-check)\n[![Library Crate](https://img.shields.io/crates/v/domain-check-lib.svg?label=Library)](https://crates.io/crates/domain-check-lib)\n[![MCP Server](https://img.shields.io/crates/v/domain-check-mcp.svg?label=MCP)](https://crates.io/crates/domain-check-mcp)\n[![Downloads](https://img.shields.io/crates/d/domain-check.svg)](https://crates.io/crates/domain-check)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](#license)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/saidutt46/domain-check/main/assets/demo.svg\" alt=\"domain-check demo\" width=\"700\"/\u003e\n\u003c/p\u003e\n\nQuick Links: [Installation](#installation) | [Quick Start](#quick-start) | [Use Cases](#use-cases) | [Output Formats](#output-formats) | [Presets](#smart-presets) | [Configuration](#configuration) | [Automation](#automation--ci) | [Library](#library) | [MCP Server](#mcp-server) | [FAQ](https://github.com/saidutt46/domain-check/blob/main/docs/FAQ.md) | [Contributing](https://github.com/saidutt46/domain-check/blob/main/CONTRIBUTING.md)\n\n## Why domain-check\n\n- **1,200+ TLDs out of the box** — IANA bootstrap loads the full registry automatically. No config needed. 32 hardcoded TLDs work offline as fallback.\n- **Dual-protocol engine** — RDAP-first with automatic WHOIS fallback. IANA server discovery covers ~189 ccTLDs that lack RDAP (`.es`, `.co`, `.eu`, `.jp`).\n- **Fast** — up to 100 concurrent checks, streaming results as they complete. 2.7 MB release binary.\n- **Domain generation** — pattern expansion (`\\w`=letter, `\\d`=digit, `?`=either), prefix/suffix permutations, and `--dry-run` to preview before checking.\n- **11 curated presets** — `startup`, `tech`, `creative`, `finance`, `ecommerce`, and more. Or define your own in config.\n- **Rich output** — grouped pretty display, JSON, CSV. Registrar info, creation/expiration dates, and status codes with `--info`.\n- **CI and automation friendly** — `--json`/`--csv` to stdout, `--yes` to skip prompts, `--force` for large runs, automatic non-TTY detection.\n- **Configurable** — TOML config files, `DC_*` environment variables, custom presets, and clear precedence rules.\n- **Agent-native** — MCP server exposes all tools to AI coding agents (Claude, Codex, Gemini, Cursor, VS Code Copilot, and any MCP client).\n- **CLI + library + MCP** — same engine powers the CLI, [`domain-check-lib`](https://crates.io/crates/domain-check-lib) (Rust library), and [`domain-check-mcp`](https://crates.io/crates/domain-check-mcp) (MCP server).\n\n## Installation\n\n| Method | Command | Notes |\n|---|---|---|\n| Homebrew (macOS) | `brew install domain-check` | Easiest install for macOS users |\n| Cargo (CLI) | `cargo install domain-check` | Works on all Rust-supported platforms |\n| Cargo (MCP) | `cargo install domain-check-mcp` | MCP server for AI agents |\n| GitHub Releases | [Download binaries](https://github.com/saidutt46/domain-check/releases) | CLI + MCP binaries for macOS, Linux, Windows |\n\n## Quick Start\n\n```bash\n# Check a single domain\ndomain-check example.com\n\n# Expand a base name across TLDs\ndomain-check mystartup -t com,org,io,dev\n\n# Use a curated preset\ndomain-check myapp --preset startup --pretty\n\n# Generate names with a pattern (preview only)\ndomain-check --pattern \"app\\d\" -t com --dry-run\n\n# Add prefixes and suffixes\ndomain-check myapp --prefix get,try --suffix hub,ly -t com,io\n\n# Get registrar and date info\ndomain-check target.com --info\n\n# Check every known TLD\ndomain-check brand --all --batch\n```\n\nPretty output:\n\n```text\ndomain-check v0.9.1 — Checking 8 domains\nPreset: startup | Concurrency: 20\n\n── Available (3) ──────────────────────────────\n  rustcloud.org\n  rustcloud.ai\n  rustcloud.app\n\n── Taken (5) ──────────────────────────────────\n  rustcloud.com\n  rustcloud.io\n  rustcloud.tech\n  rustcloud.dev\n  rustcloud.xyz\n\n8 domains in 0.8s  |  3 available  |  5 taken  |  0 unknown\n```\n\n## Use Cases\n\n```bash\n# Startup naming — scan tech TLDs for your brand\ndomain-check coolname --preset startup --pretty\n\n# Brand protection — audit every TLD for your trademark\ndomain-check mybrand --all --json \u003e audit.json\n\n# Pre-purchase validation — check registrar and expiry before buying\ndomain-check target.com --info\n\n# Bulk pipeline — feed a list, export results\ndomain-check --file ideas.txt --preset tech --csv \u003e results.csv\n\n# Name generation — explore prefix/suffix combos\ndomain-check app --prefix get,my,try --suffix hub,ly -t com,io --dry-run\n```\n\n## Output Formats\n\n**Default** — one line per domain, colored status:\n\n```text\nmyapp.com TAKEN\nmyapp.io AVAILABLE\nmyapp.dev TAKEN\n```\n\n**Pretty** (`--pretty`) — grouped by status with summary:\n\n```text\n── Available (1) ──────────────────────────────\n  myapp.io\n\n── Taken (2) ──────────────────────────────────\n  myapp.com\n  myapp.dev\n\n3 domains in 0.4s  |  1 available  |  2 taken  |  0 unknown\n```\n\n**JSON** (`--json`) — structured, pipe to `jq`:\n\n```json\n[\n  {\n    \"domain\": \"myapp.com\",\n    \"available\": false,\n    \"method\": \"RDAP\"\n  },\n  {\n    \"domain\": \"myapp.io\",\n    \"available\": true,\n    \"method\": \"RDAP\"\n  }\n]\n```\n\n**CSV** (`--csv`) — import into spreadsheets or databases:\n\n```text\ndomain,status,method\nmyapp.com,TAKEN,RDAP\nmyapp.io,AVAILABLE,RDAP\n```\n\n**Info** (`--info`) — registrar, dates, and status codes:\n\n```text\nmyapp.com TAKEN\n  Registrar: Example Registrar, Inc.\n  Created: 2015-03-12  Expires: 2026-03-12\n  Status: clientTransferProhibited\n```\n\nFull reference: [docs/CLI.md](https://github.com/saidutt46/domain-check/blob/main/docs/CLI.md)\n\n## Smart Presets\n\n11 built-in presets covering common domains strategies:\n\n| Preset | TLDs | Use case |\n|---|---|---|\n| `startup` | com, org, io, ai, tech, app, dev, xyz | Tech startups |\n| `popular` | com, net, org, io, ai, app, dev, tech, me, co, xyz | General coverage |\n| `classic` | com, net, org, info, biz | Traditional gTLDs |\n| `enterprise` | com, org, net, info, biz, us | Business and government |\n| `tech` | io, ai, app, dev, tech, cloud, software, + 5 more | Developer tools |\n| `creative` | design, art, studio, media, photography, + 5 more | Artists and media |\n| `ecommerce` | shop, store, market, sale, deals, + 3 more | Online retail |\n| `finance` | finance, capital, fund, money, investments, + 4 more | Fintech |\n| `web` | web, site, website, online, blog, page, + 3 more | Web services |\n| `trendy` | xyz, online, site, top, icu, fun, space, + 6 more | New gTLDs |\n| `country` | us, uk, de, fr, ca, au, br, in, nl | International |\n\n```bash\ndomain-check --list-presets                          # See all presets with full TLD lists\ndomain-check mybrand --preset creative --pretty      # Use a preset\n```\n\nDefine custom presets in your config file:\n\n```toml\n[custom_presets]\nmy_stack = [\"com\", \"io\", \"dev\", \"app\"]\n```\n\n## Configuration\n\nCreate `domain-check.toml` in your project directory:\n\n```toml\n[defaults]\nconcurrency = 25\npreset = \"startup\"\npretty = true\ntimeout = \"8s\"\nbootstrap = true\n\n[custom_presets]\nmy_startup = [\"com\", \"io\", \"ai\", \"dev\", \"app\"]\n\n[generation]\nprefixes = [\"get\", \"my\"]\nsuffixes = [\"hub\", \"ly\"]\n```\n\nConfig lookup order:\n`./domain-check.toml` \u003e `~/.domain-check.toml` \u003e `~/.config/domain-check/config.toml`\n\nCommon environment variables:\n\n```bash\nDC_CONCURRENCY=50    DC_PRESET=startup    DC_TLD=com,io,dev\nDC_PRETTY=true       DC_TIMEOUT=10s       DC_BOOTSTRAP=true\nDC_PREFIX=get,my     DC_SUFFIX=hub,ly     DC_FILE=domains.txt\n```\n\n## Automation \u0026 CI\n\n```bash\n# Non-interactive structured output\ndomain-check --file required-domains.txt --json\n\n# Pipe to jq\ndomain-check --pattern \"app\\d\" -t com --yes --json | jq '.[] | select(.available==true)'\n\n# Stream live results for long runs\ndomain-check --file large-list.txt --concurrency 75 --streaming\n\n# Large batch with no prompts\ndomain-check --file huge-list.txt --all --force --yes --csv \u003e results.csv\n```\n\nCI-friendly behavior:\n- `--yes` / `--force` skip all confirmation prompts\n- Non-TTY environments (piped, CI) never prompt — scripts are never blocked\n- Spinner writes to stderr; stdout stays clean for piping\n- `--no-bootstrap` for deterministic, offline-safe checks against 32 hardcoded TLDs\n\nAutomation guide: [docs/AUTOMATION.md](https://github.com/saidutt46/domain-check/blob/main/docs/AUTOMATION.md)\n\n## Library\n\nUse `domain-check-lib` directly in Rust projects:\n\n```toml\n[dependencies]\ndomain-check-lib = \"1.0.2\"\n```\n\n```rust\nuse domain_check_lib::DomainChecker;\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let checker = DomainChecker::new();\n    let result = checker.check_domain(\"example.com\").await?;\n    println!(\"{} -\u003e {:?}\", result.domain, result.available);\n    Ok(())\n}\n```\n\nLibrary docs: [domain-check-lib/README.md](https://github.com/saidutt46/domain-check/blob/main/domain-check-lib/README.md) | [docs.rs](https://docs.rs/domain-check-lib)\n\n## MCP Server\n\n`domain-check-mcp` exposes domain checking as tools for AI coding agents via the [Model Context Protocol](https://modelcontextprotocol.io). Works with any MCP-compatible client.\n\n```bash\n# Install\ncargo install domain-check-mcp\n\n# Add to your agent (Claude Code example — works similarly for Codex, Gemini CLI, etc.)\nclaude mcp add domain-check -- domain-check-mcp\n```\n\n6 tools available: `check_domain`, `check_domains`, `check_with_preset`, `generate_names`, `list_presets`, `domain_info`.\n\nThen ask your agent naturally: *\"Is coolstartup.com available?\"* or *\"Check mybrand across the startup preset\"*.\n\nSupports: Claude Code, Claude Desktop, VS Code Copilot, Cursor, Windsurf, JetBrains, OpenAI Codex CLI, Gemini CLI, and any MCP stdio client.\n\nFull setup: [domain-check-mcp/README.md](https://github.com/saidutt46/domain-check/blob/main/domain-check-mcp/README.md)\n\n## Reliability Notes\n\n- Domain status is network- and registry-dependent. Temporary errors can produce `UNKNOWN` states.\n- WHOIS output is less standardized than RDAP; parsing quality varies by registry.\n- For repeatable CI workflows, pin behavior with explicit flags (`--batch`, `--json`, `--no-bootstrap`, `--concurrency`).\n\nTroubleshooting and expected edge cases: [docs/FAQ.md](https://github.com/saidutt46/domain-check/blob/main/docs/FAQ.md)\n\n## Project Docs\n\n- CLI reference: [docs/CLI.md](https://github.com/saidutt46/domain-check/blob/main/docs/CLI.md)\n- Library: [domain-check-lib/README.md](https://github.com/saidutt46/domain-check/blob/main/domain-check-lib/README.md) | [docs.rs](https://docs.rs/domain-check-lib)\n- MCP server: [domain-check-mcp/README.md](https://github.com/saidutt46/domain-check/blob/main/domain-check-mcp/README.md)\n- Examples and workflows: [docs/EXAMPLES.md](https://github.com/saidutt46/domain-check/blob/main/docs/EXAMPLES.md)\n- Automation usage: [docs/AUTOMATION.md](https://github.com/saidutt46/domain-check/blob/main/docs/AUTOMATION.md)\n- FAQ: [docs/FAQ.md](https://github.com/saidutt46/domain-check/blob/main/docs/FAQ.md)\n- Changelog: [CHANGELOG.md](https://github.com/saidutt46/domain-check/blob/main/CHANGELOG.md)\n- Contributing: [CONTRIBUTING.md](https://github.com/saidutt46/domain-check/blob/main/CONTRIBUTING.md)\n- Security policy: [SECURITY.md](https://github.com/saidutt46/domain-check/blob/main/SECURITY.md)\n\n## License\n\nLicensed under either of\n\n- [Apache License, Version 2.0](https://github.com/saidutt46/domain-check/blob/main/LICENSE-APACHE)\n- [MIT License](https://github.com/saidutt46/domain-check/blob/main/LICENSE-MIT)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaidutt46%2Fdomain-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaidutt46%2Fdomain-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaidutt46%2Fdomain-check/lists"}