Back to home@HULILI-com

dsh-namecheck

dsh plugin for checking domain availability and trademark screening of candidate product names

Stars
0
Language
JavaScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

dsh-namecheck

English | 中文

A dsh (DeepSeek Harness) plugin that checks the availability of candidate software/brand names. It registers a check_name_availability tool; when the agent detects a naming/validation intent in conversation, the tool runs automatically and returns domain registration status and trademark screening results in a single call.

Features

  • Domain check: backed by Verisign / RDAP registry data — authoritative, free, no API key required; checks .com by default and supports additional TLDs via the tlds argument
  • Trademark screening with two data sources:
    • Third-party trademark search API (paid / open platform) for precise matches
    • Bing heuristic web search as a fallback when no API is configured (screening only — it is not a trademark examination conclusion; manual review is required)
  • Zero third-party runtime dependencies: uses only Node.js native fetch, and the core logic can be tested standalone

How it works

The tool performs two checks:

  1. Domain: queries RDAP for the registration status of <name>.<tld>. A 404 response means the domain is available; 200 means it is registered, and the result includes registrant and registration/expiration metadata.
  2. Trademark: if a third-party trademark API is configured, it returns precise search results. Otherwise, it runs a heuristic web search and reports potential same-name brand conflicts as a preliminary screening signal.

Install

From GitHub:

dsh plugin --profile web add github:HULILI-com/dsh-namecheck

From npm (once published):

dsh plugin --profile web add dsh-namecheck

Local development (link mode):

dsh plugin --profile web add link:/path/to/dsh-namecheck

Restart dsh (dsh --profile web) after installation and hard-refresh the browser page.

Usage

Ask the agent in a dsh conversation, for example:

Please check whether these candidate names are available: acme, demo, novalink, and report the .com domain status and trademark screening result for each.

The agent calls the check_name_availability tool and returns a structured result: per-candidate domain status, trademark search/screening outcome, and an overall verdict.

Tool arguments:

ArgumentTypeRequiredDescription
namestringYesCandidate English name / pinyin
chineseNamestringNoCandidate Chinese name, used for trademark screening
tldsstring[]NoDomain suffixes to check, defaults to ["com"]

Configuration

Override plugin config in the profile's user layer (cordis.patch.yml):

- insert:
    - id: dsh-namecheck
      name: 'dsh-namecheck'
      config:
        trademarkApiUrl: https://api.example-trademark.com
        trademarkApiKey: '<your-token>'
ConfigDescriptionDefault
trademarkApiUrlBase URL of the third-party trademark search APIempty
trademarkApiKeyBearer token for the trademark APIempty

Request contract for the trademark API (adjust in lib/checks.js to match your vendor's docs):

GET {trademarkApiUrl}/search?keyword=<name>&type=all
Authorization: Bearer <trademarkApiKey>

Response contract:

{
  "hits": [
    { "name": "acme", "class": 9, "status": "registered", "applicant": "Example Co." }
  ]
}

Project structure

dsh-namecheck/
├── package.json       # Package manifest; dsh.bundle.patch points to cordis.patch.yml
├── cordis.patch.yml   # Mounts the plugin into the profile config tree
├── index.js           # Plugin entry: exports name + apply(ctx, config); registers the tool
├── lib/checks.js      # Core logic (RDAP domain check + trademark screening), zero deps
├── test-check.js      # Standalone test script; no dsh/pnpm environment required
├── README.md          # English documentation (default)
├── README.zh.md       # Chinese documentation
└── LICENSE

Local testing

The core logic can be verified without starting dsh:

node test-check.js example demo

Known limitations

  • Domain: results follow official RDAP registry data; domains that are registered but parked or listed at a premium are still reported as “registered”.
  • Trademark: no free open API is available from the national trademark office or public query sites in China. Without a third-party API, the plugin only returns a heuristic screening result, which cannot replace a trademark examination. For production use, confirm via a paid/open data source or official channels.
  • Version: dsh is in developer preview, and plugin APIs may change across versions. If the plugin stops working after a dsh upgrade, inspect the plugin tree with dsh --profile web --dump-config.

License

MIT