Documentation
How naymme checks a name, what the verdicts mean, and how to call it from the JSON API or an MCP-compatible AI assistant.
What a check covers
Type a candidate name once and naymme fans out to 61 independent providers, each queried live and reported back with its own verdict — available, taken, invalid, or unknown when the source cannot be checked. Nothing is fabricated: a provider only reports available after seeing a verified unclaimed marker such as an RDAP 404, a registry not-found response, or a WHOIS no-match phrase.
- Core domains — .com, .net, .org, .io, .dev, .app, .ai, .gg and more, resolved through the RDAP → WHOIS → DNS nameserver chain.
- European ccTLDs — .pt, .es, .de, .fr, .uk, .eu and neighbours for regional launches.
- Code registries — npm, PyPI, crates.io, Docker Hub, NuGet, RubyGems, Homebrew and Hugging Face.
- Developer platforms — GitHub user and organization namespaces plus repository-name collisions, GitLab, CodePen and Replit.
- Hosted subdomains — <name>.vercel.app and <name>.netlify.app, verified against unclaimed markers rather than guesswork.
- Stores and publishing — the Apple App Store, Substack, Medium, Product Hunt, and design communities such as Figma, Dribbble and Behance.
- Social handles — X, Bluesky, Instagram, Reddit, YouTube, TikTok and Telegram.
How a check runs
- Enter a bare name — 1 to 63 characters, starting with a letter or digit, using only ASCII letters, digits, dots, underscores and hyphens.
- naymme validates the name against each provider's own rules before any network call, so an illegal handle shows as invalid instead of a false 'taken'.
- All providers run concurrently, each with its own 5-second timeout. A provider that fails or stays inconclusive degrades to 'unknown' — it never fails the batch or invents a verdict.
- Available domains surface registrar deep links with rough price estimates; taken subjects link out so you can see who holds them.
Brand scoring
Beyond availability, naymme computes a deterministic score out of 100 for how a name works as a brand. Punchiness rewards the 5–8 character sweet spot, pronounceability weighs familiar English bigrams and estimated syllables, uniqueness rewards novel coinages over common words, and cleanliness penalizes digits, separators and repeated characters. Same input, same score — every time, with no lookups.
Use it from your AI assistant
naymme is a Model Context Protocol server first. Point any MCP client at the hosted Streamable HTTP endpoint — POST /api/mcp on this origin — and it exposes two tools: check_availability(name, providers?) for the live 61-provider sweep, and score_name(name) for the deterministic brand score. Cursor, Windsurf and VS Code speak HTTP natively; Claude Desktop bridges through mcp-remote; Claude Code registers the endpoint with one CLI command. The Connect MCP button on the homepage generates the exact config for each client.
- check_availability — { name, providers? } → { name, results, summary }. Each result reports provider, status (available | taken | unknown | invalid), subject, available flag, optional detail and durationMs.
- score_name — { name } → deterministic score payload: total 0–100, letter grade and per-component breakdown.
HTTP API
Everything the UI does is also a plain JSON endpoint — no auth, CORS-open for browser use. The API is version 1: /api/v1/* is canonical, while the unversioned /api/* paths and root-level /v1/* aliases (/v1/check, /v1/score, /v1/mcp, plus GET /v1 for the version index) hit the same handlers. Before any future breaking release, the older version would emit Deprecation, Sunset and a Link rel="deprecation" pointer for at least 6 months.
Every response on every /api/* and /v1/* endpoint — successes, errors and 404s alike — carries the same convention headers: API-Version: 1, X-API-Version: 1.0.0 and the RFC RateLimit quartet RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy (e.g. 60;w=60). Exhausting a limit returns 429 with Retry-After and the structured {error:{code,message,hint}} envelope.
- GET /api/availability?name=<name>&providers=<csv> — normalized availability results; providers accepts ids or the aliases all, domains, domains:cctld, domains:all and socials.
- GET /api/score?name=<name> — the deterministic brand score breakdown.
- POST /api/mcp — MCP Streamable HTTP transport (JSON-RPC 2.0; SSE-framed responses).
- GET /api/mcp (also /mcp and /health) — status document for the hosted endpoint.
For agents and crawlers
This site negotiates content: send Accept: text/markdown to any page URL — including this one — and you get a markdown document instead of HTML. Unknown URLs return a markdown 404 that points back here.
What the verdicts mean
Every provider reports one of four statuses, and the words are precise — they describe evidence, not guesses.
- available — the provider confirmed an unclaimed marker: an RDAP 404, a registry not-found response, or a WHOIS no-match phrase. Free to register, subject to a final re-check before you buy.
- taken — the name resolves to an existing registration, account, package or listing; the result links out so you can see exactly who holds it.
- invalid — the name breaks that provider's own rules on length, characters or reserved patterns, so it was rejected before any network call.
- unknown — the source timed out, rate-limited the request, or answered ambiguously. Unknown is never treated as available: re-check it later before relying on it.
An agent session, verbatim
The hosted MCP endpoint at POST /api/mcp is stateless Streamable HTTP — the whole handshake is two ordinary JSON-RPC 2.0 messages over POST, and responses arrive SSE-framed as event: message events.
- initialize — {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}} returns the server card and tool capabilities.
- tools/call — {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"check_availability","arguments":{"name":"acme"}}} runs the sweep and returns the results payload inline.
- Any HTTP client can drive it — no SDK, session state or authentication is required; send Accept: application/json, text/event-stream.
Run it locally or self-host
The same codebase ships as the npm package naymme: `npx naymme` runs the full MCP server over stdio with zero configuration — the setup Claude Desktop and other local agents use when they should not depend on the hosted endpoint. A Cloudflare Worker build exposes the identical tools at the edge; deployment notes live in the deployment doc.
Who this is for
Founders picking a company or product name before filing paperwork: confirm the .com and the socials are actually reachable in one sweep instead of a dozen browser tabs.
Developers naming a package, CLI or repository: check npm, PyPI, crates.io, Docker Hub and GitHub at once, and avoid publishing under a name that collides on the registry that matters most.
AI assistants helping a user brainstorm: call check_availability and score_name as tools so suggestions come back with real availability data attached, not plausible-sounding guesses.
Brand and naming reviewers comparing candidates: the deterministic score ranks shortlists on punchiness, pronounceability, uniqueness and cleanliness — the same rubric every time, so two names compare fairly.
Common questions
- Why 'unknown'? Timeouts, rate limits and inconclusive upstream answers degrade to unknown by design — it is a 'check again later', never a silent pass.
- Is the API free to call? The JSON endpoints are open and CORS-enabled for browser use; a per-client rate limit throttles abuse and nothing more.
- Does a search commit me to anything? No — the app sets no cookies, stores no results, and the only persistence is the ?q= URL parameter you can share or bookmark.
- Where do the links lead? Available domains deep-link to registrars with rough price estimates; taken subjects link to the current holder's page.
Accuracy and limits
Availability is a best-effort snapshot of public registration state, not a guarantee: names can be registered between the check and your purchase, premium domains may report oddly, and some providers rate-limit. 'unknown' always means the source could not be checked — re-confirm anything important at the registrar or platform before committing. The web UI runs without accounts and without tracking; see the privacy page for exactly what leaves your browser.
Two practical notes before relying on a green row. Domain availability flips the moment someone registers, so treat an 'available' verdict as a starting point and complete the purchase promptly rather than bookmarking it for later. And a handful of providers — app stores and social networks in particular — can only be checked through their public surface, so their verdicts carry a little more uncertainty than a registry lookup; when a name really matters, spot-check those providers directly.