@unstoppabledomains/ud-cli
v0.1.18
Published
Unstoppable Domains CLI — Search, register, and manage your domains from the command line.
Keywords
Readme
ud-cli
Unstoppable Domains CLI — Search, register, and manage your domains from the command line.
Quick Start
# Install (macOS / Linux) — may prompt for sudo
curl -fsSL https://raw.githubusercontent.com/unstoppabledomains/ud-cli/main/install.sh | sh
# Or install via npm
npm install -g @unstoppabledomains/ud-cli
# Authenticate (opens browser for OAuth)
ud auth login
# You're ready — try it out
ud search mybusinessUpdating
# Check for updates
ud update check
# Update to the latest version
ud updateThe CLI also checks for updates automatically once every 24 hours and prints a notification if a newer version is available.
Authentication
OAuth (default, browser-based)
ud auth loginOpens a browser for authorization using OAuth 2.0 with PKCE. Tokens are automatically refreshed.
API Key
ud auth login --key ud_mcp_<64-hex-chars>API keys have the format ud_mcp_ followed by 64 hex characters. Generate one from the Unstoppable Domains dashboard. Passing --key automatically selects the api-key method.
Managing credentials
ud auth status # Check current auth status
ud auth logout # Clear stored credentialsGlobal Options
| Option | Description |
|--------|-------------|
| --env <environment> | Override active environment (production or sandbox) |
| --format <format> | Output format: table (default), json, or csv |
| --fields [columns] | Show available fields, or specify columns to display |
| --quiet | Suppress output except errors |
| --verbose | Show detailed output |
| --profile <name> | Configuration profile to use (reserved) |
Output Formats
# Table output (default) — human-readable
ud search mybusiness
# JSON output — for scripting and piping
ud search mybusiness --format json
# CSV output — for spreadsheets and data processing
ud tlds --format csv > tlds.csvField Selection
Use --fields to customize which columns are displayed in table output.
# Show available fields for a command
ud domains list --fields
# Select specific columns
ud domains list --fields name,expiresAt,offersCount
# Nested fields use dot notation
ud domains list --fields name,listing.price,autoRenewal.statusInvalid field names are rejected with an error and a hint to run --fields for the full list.
Command Reference
ud
├── search <query> Search for available domains
├── tlds List available TLDs
├── auth
│ ├── login Authenticate (OAuth or API key)
│ ├── logout Clear stored credentials
│ └── status Check current auth status
├── domains
│ ├── list List portfolio domains
│ ├── get <domains...> Get detailed domain info
│ ├── push <domains...> Push domains to another user
│ ├── operations <domains...> Get pending operations
│ ├── tags
│ │ ├── add <domains...> Add tags to domains
│ │ └── remove <domains...> Remove tags from domains
│ ├── flags
│ │ └── update <domains...> Update domain flags
│ ├── auto-renewal
│ │ └── update <domains...> Toggle auto-renewal
│ ├── contacts
│ │ ├── list List ICANN contacts
│ │ └── create Create ICANN contact
│ ├── dns
│ │ ├── records
│ │ │ ├── list <domain> List DNS records
│ │ │ ├── add <domain> Add DNS records
│ │ │ ├── update Update DNS records
│ │ │ ├── remove Remove DNS records
│ │ │ └── remove-all <domains...> Remove all DNS records
│ │ └── nameservers
│ │ ├── list <domain> List nameservers
│ │ ├── set-custom Set custom nameservers
│ │ └── set-default Reset to default nameservers
│ └── hosting
│ ├── redirects
│ │ ├── list <domain> List redirect configurations
│ │ ├── add Add redirect configuration
│ │ └── remove Remove redirect configuration
│ └── landers
│ ├── generate <domains...> Generate AI landing page
│ ├── status <domains...> Check lander generation status
│ └── remove <domains...> Remove AI landing page
├── cart
│ ├── get Get shopping cart with pricing
│ ├── remove Remove items from cart
│ ├── checkout Complete cart checkout
│ ├── url Get checkout URL
│ ├── payment-methods Get available payment methods
│ ├── add-payment-method Get URL to add payment method
│ └── add [domain...] Smart add (auto-detects source)
│ ├── registration <domains...> Add domains for registration
│ ├── listed <domains...> Add marketplace-listed domains
│ ├── afternic <domains...> Add Afternic marketplace domains
│ ├── sedo <domains...> Add Sedo marketplace domains
│ └── renewal <domains...> Add domain renewals
├── marketplace
│ ├── listings
│ │ ├── create <domains...> Create marketplace listings
│ │ ├── update Update marketplace listings
│ │ └── cancel Cancel listings
│ ├── offers
│ │ ├── list List marketplace offers
│ │ └── respond Respond to marketplace offers
│ └── leads
│ ├── list List domain conversation leads
│ ├── get <domain> Get or create domain conversation
│ ├── messages List messages in a conversation
│ └── send Send a message in a conversation
├── config
│ ├── set <command> <key> <value> Save a default option
│ ├── get [command] Show saved defaults
│ └── reset <command> [key] Remove saved defaults
├── skill
│ └── install Install Claude Code skill
├── env
│ ├── show Show current environment
│ └── set <environment> Switch default environment
└── update
└── check Check for updatesSearch & Discovery
ud search <query> Search for available domains
ud tlds List available TLDsDomains
ud domains list List portfolio domains
ud domains get <domains...> Get detailed domain info
ud domains push <domains...> Push domains to another user
ud domains operations <domains...> Get pending operations
ud domains tags add <domains...> Add tags to domains
ud domains tags remove <domains...> Remove tags from domains
ud domains flags update <domains...> Update domain flags
ud domains auto-renewal update <domains...> Toggle auto-renewal
ud domains contacts list List ICANN contacts
ud domains contacts create Create ICANN contactDNS (ud domains dns)
ud domains dns records list <domain> List DNS records
ud domains dns records add <domain> Add DNS records
ud domains dns records update Update DNS records
ud domains dns records remove Remove DNS records
ud domains dns records remove-all <domains...> Remove all DNS records
ud domains dns nameservers list <domain> List nameservers
ud domains dns nameservers set-custom Set custom nameservers
ud domains dns nameservers set-default Reset to default nameserversHosting (ud domains hosting)
ud domains hosting redirects list <domain> List redirect configurations
ud domains hosting redirects add Add redirect configuration
ud domains hosting redirects remove Remove redirect configuration
ud domains hosting landers generate <domains...> Generate AI landing page
ud domains hosting landers status <domains...> Check lander generation status
ud domains hosting landers remove <domains...> Remove AI landing pageCart
ud cart get Get shopping cart with pricing
ud cart remove Remove items from cart
ud cart checkout Complete cart checkout (requires --confirm)
ud cart url Get checkout URL
ud cart payment-methods Get available payment methods
ud cart add-payment-method Get URL to add payment method
ud cart add [domain...] Smart add — auto-detects source and routes
ud cart add registration <domains...> Add domains for registration
ud cart add listed <domains...> Add marketplace-listed domains
ud cart add afternic <domains...> Add Afternic marketplace domains
ud cart add sedo <domains...> Add Sedo marketplace domains
ud cart add renewal <domains...> Add domain renewalsMarketplace
ud marketplace listings create <domains...> Create marketplace listings
ud marketplace listings create <domains...> --price 99.99 Set listing price
ud marketplace listings update Update marketplace listings
ud marketplace listings update --price 50.00 Update listing price
ud marketplace listings cancel Cancel listings (requires --confirm)
ud marketplace offers list List marketplace offers
ud marketplace offers respond Respond to marketplace offers
ud marketplace leads list List domain conversation leads
ud marketplace leads get <domain> Get or create domain conversation
ud marketplace leads messages List messages in a conversation
ud marketplace leads send Send a message in a conversationConfig
ud config set <command> <key> <value> Save a default option for a command
ud config get [command] Show saved defaults
ud config reset <command> [key] Remove saved defaultsPer-command defaults let you persist --fields, --format, and --quiet preferences so you don't have to retype them. CLI flags always override saved defaults.
# Save default fields for domains list
ud config set "domains list" fields name,expiresAt,offersCount
# Now ud domains list automatically uses those fields
ud domains list
# CLI flags still override the saved default
ud domains list --fields name,expiresAt
# Save a default output format
ud config set "domains dns records list" format json
# View all saved defaults
ud config get
# Remove a specific default
ud config reset "domains list" fields
# Remove all defaults for a command
ud config reset "domains list"When you pass --fields explicitly, the CLI shows a tip with the command to save those fields as default.
Usage Examples
Search and register domains
# Search for domains
ud search mybusiness --tlds com,org,io --limit 10
# Smart cart add — auto-detects the source type
ud cart add mybusiness.com mybusiness.io
# Or specify the type explicitly
ud cart add registration mybusiness.com mybusiness.io
ud cart add --type renewal mysite.com
# Review cart and checkout
ud cart get
ud cart checkout --confirmManage DNS records
# List current records
ud domains dns records list example.com --format json
# Add an A record (single-item shorthand)
ud domains dns records add example.com --type A --values 1.2.3.4
# Bulk operations with --data
ud domains dns records add example.com --data '{
"records": [
{"domain": "example.com", "type": "A", "values": ["1.2.3.4"]},
{"domain": "example.com", "type": "CNAME", "subName": "www", "values": ["example.com"]}
]
}'Marketplace listings
# List a domain for sale at $99.99
ud marketplace listings create mydomain.com --price 99.99
# Update listing price
ud marketplace listings update --price 50.00 --data '{"listings":[{"listingId":"l123"}]}'
# Cancel a listing
ud marketplace listings cancel --confirm --data '{"listingIds":["l123"]}'
# View and respond to offers
ud marketplace offers list
ud marketplace offers respond --data '{"offers":[{"offerId":"o123","action":"accept"}]}'
# Manage leads
ud marketplace leads list
ud marketplace leads get mydomain.com
ud marketplace leads messages --conversation-id 42
ud marketplace leads send --conversation-id 42 --content "Thanks for your interest!"Advanced usage
# Use --data for complex request bodies
ud domains contacts create --data '{
"firstName": "Jane",
"lastName": "Doe",
"email": "[email protected]",
"phone": {"dialingPrefix": "+1", "number": "5551234567"},
"street": "123 Main St",
"city": "Austin",
"stateProvince": "TX",
"postalCode": "78701",
"countryCode": "US"
}'
# Read request body from a file
ud domains dns records add example.com --file records.json
# Pipe JSON output for scripting
ud domains list --format json | jq '.domains[].name'Agent Skills
ud-cli ships a skill that teaches coding agents (Claude Code, Cursor, GitHub Copilot, etc.) how to use domain management commands.
Install via npx skills (recommended)
Works with 40+ agents, no prior install needed:
npx skills add unstoppabledomains/ud-cliInstall via ud-cli
If you already have the CLI installed:
ud skill installBoth methods copy the skill to .claude/skills/ud-cli/ (or the equivalent for your agent). The skill covers search, DNS, cart, marketplace, and all other ud-cli workflows.
For skills-less operation, agents can also read ud --help directly.
Environments
| Environment | Base URL |
|-------------|----------|
| production (default) | https://api.unstoppabledomains.com |
| sandbox | https://api.ud-sandbox.com |
ud env show # Show current environment
ud env set sandbox # Switch default environment
ud --env sandbox <cmd> # Override environment for a single commandCredentials are stored per-environment, so you can be authenticated to both simultaneously.
Development
npm run build # Compile TypeScript to dist/
npm run typecheck # Type-check without emitting
npm run lint # Run ESLint
npm run format # Format with Prettier
npm test # Run tests
npm run dev -- --help # Run CLI in development mode
npm run fetch-spec # Re-download OpenAPI spec from production APIUpdating the API Spec
The CLI commands are auto-generated from the OpenAPI spec at src/generated/openapi-spec.json. To update after API changes:
npm run fetch-spec # Downloads latest spec
npm test # Verify everything still worksBuilding Binaries
npm run bundle # Bundle into single file (dist/ud-cli.cjs)
npm run build:binaries # Create standalone executables in bin/Binary targets: macOS (arm64, x64), Linux (x64), Windows (x64).
Building from Source
git clone https://github.com/unstoppabledomains/ud-cli.git
cd ud-cli
npm install
npm run build
npm install -g .Credential Storage
Credentials are stored securely:
- Primary: System keychain via
keytar(macOS Keychain, Windows Credential Vault, Linux Secret Service) - Fallback: Plaintext JSON file at
~/.ud-cli/credentials-{env}.jsonwith permissions0600when native keychain is unavailable
