Just Domain
Server Details
Search domain availability and pricing, straight from chat, then open a link to register.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- just-done/just-domain-mcp
- GitHub Stars
- 0
- Server Listing
- Just Domain MCP Server
Available Tools
2 toolscheck_domain_transferCheck whether a domain can transfer to Just DomainARead-onlyInspect
Read-only transfer precheck for ONE domain the user already owns at another registrar: could it move to Just Domain, what is stopping it, what would it cost, and does its DNS survive the move. Nothing is ordered, charged, unlocked, or changed. The answer is built from two public sources only, the registry's own RDAP record and our registrar's price list, so it is safe to call without authentication and it reads nothing about the user's account. Read blockers before you say anything: an EMPTY list is the only thing that means the domain is ready to move. Every entry carries a plain detail sentence you can show as-is, and a code you do not recognise must still be reported through its detail rather than dropped. source.rdap: false means the registry did not answer, so nothing about the domain was established: say that, and never call it ready. price is the TOTAL for one full transfer term, not a per-year rate. A .ai transfer adds and charges TWO years because its registry works in two-year units. Do not divide or multiply the amount by a number of years, and do not label it per year; quote term_note beside it. expected_new_expiry is a projection (the registry's current expiry plus the term), not a date any registry has confirmed, so present it as expected. Moving a domain IN is not a self-service function yet. This tool tells the user whether the domain is eligible to move and what one full term would cost; the move itself is arranged by a person, starting at transfer_url and routed through support@just-done.ai. Do not promise what that page will do, and do not describe a payment step for it. Moving a domain OUT of Just Domain IS self-service, and that means a human owner signed in on justdomain.ai in a browser, switching the transfer lock off and issuing the code from their own account. It does not mean you can do it. This tool never returns, accepts, or hints at an authorization (EPP) code, and there is no agent path to unlocking a domain or to having a code issued, here or through any other Just Domain surface, ever. An auth code is a bearer credential for the domain and a chat transcript is not a place to put one. Do not ask the user for a code, do not offer to hold or relay one, and never claim you can unlock or move the domain yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | One fully-qualified domain the user already owns somewhere else, including its TLD (e.g. 'acme.com'). Not a bare label and not a list: this reads a third-party registry per call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tld | Yes | |
| price | No | Null when the registrar's price list could not be read. Never estimate a domain transfer price yourself. |
| ready | Yes | TRUE only when `blockers` is empty. It is a convenience over that list and can never disagree with it: anything we could not establish becomes a blocker, so a registry timeout reads as not ready rather than as a green light. |
| domain | Yes | |
| source | Yes | Which public sources actually answered on this request. |
| blockers | No | What stands between this domain and a transfer, most blocking first. An EMPTY list is the only thing that means ready. |
| next_step | Yes | One sentence you can say to the user about what happens next, already matched to this domain's state. |
| registrar | Yes | Who sponsors the domain today, as the REGISTRY reports it. |
| supported | Yes | Whether Just Domain can accept this ENDING at all. Says nothing about this particular domain - read `blockers` for that. |
| checked_at | Yes | ISO-8601 instant these facts were read. |
| nameservers | No | |
| transfer_url | Yes | The page on justdomain.ai a PERSON opens in a browser to take this further. The handoff out of the chat. |
| dns_continuity | Yes | Does the domain's DNS keep working after the move? A transfer moves sponsorship, not DNS, so the current delegation decides whether the site and the mail survive it. |
| auth_code_policy | Yes | Constant. The rule about authorization (EPP) codes, restated in the payload so it travels with the answer. Follow it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint=true and destructiveHint=false, the description goes well beyond annotations: it states nothing is ordered, charged, unlocked, or changed; explains source.rdap=false means the registry did not answer; clarifies price is total not per-year; and explicitly forbids handling EPP codes. This is exactly the kind of behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence carries an enforceable constraint or interpretive rule: cost, blockers, RDAP absence, expiry projection, human routing, and auth-code handling. It is front-loaded with the core purpose and safety profile before diving into output semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description still covers what the schema cannot: how to interpret blockers, code vs detail, source.rdap=false, price term semantics, .ai two-year behavior, expected_new_expiry as a projection, and the no-EPP-code policy. Nothing needed to call and act on this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single domain parameter fully, including FQDN, ownership elsewhere, and no bare labels/lists. The description re-emphasizes those constraints but does not materially add new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read-only transfer precheck for ONE domain the user already owns at another registrar' and enumerates the concrete outputs: could it move, what is stopping it, cost, and DNS survival. This makes the tool's job specific and clearly distinguishable from the sibling search_domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames when to use the tool: for a single domain owned at another registrar, and it explicitly handles the boundary by saying moving a domain IN is not self-service and moving a domain OUT is not what this tool does. It does not explicitly name search_domains as the alternative, but the use case is contextually unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_domainsSearch domain availabilityARead-onlyIdempotentInspect
Read-only availability and pricing lookup for domain names. No purchase or order is created by this tool; it only returns information. Preferred input: domains, 1 to 200 fully-qualified names (e.g. ['acme.com', 'acme.io']); results cover exactly those domains, with no suggestions or expansion. Fallback input: query, free text (one or more names, comma- or space-separated); names given without a TLD are expanded to popular TLDs (com/io/ai/co/net). Each result includes whether the domain is available, whether it is a premium name, the registration price and the renewal price. Both prices are totals for one full registration term of that ending, not per-year rates: one year on most endings, but two years on .ai, whose registry mandates a two-year term. Do not divide or multiply a returned price by a number of years. Available non-premium results also carry a checkout_url the user can open in a browser to register the domain on justdomain.ai if they choose to. Premium names cannot be registered through Just Domain yet and carry no checkout_url.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text fallback when exact FQDNs aren't known: one or more names, comma- or space-separated. Names without a TLD are expanded to popular TLDs (com/io/ai/co/net). Ignored when `domains` is provided. | |
| domains | No | Fully-qualified domains to check, e.g. ['acme.com', 'acme.io', 'acme.ai']. Each entry must include the TLD. Maximum 200 per request. Preferred over `query`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Set when the search could not be completed (e.g. invalid query, provider failure). |
| domains | Yes | The exact domains requested by the caller, echoed back. |
| results | Yes | |
| warnings | No | |
| next_action | No | |
| alternatives | No | Available domains the caller did not ask about, offered only when every requested domain came back unavailable. Same label the caller typed, on a different ending; nothing is invented and nothing here duplicates a name in `results`. Every entry is available, non-premium and carries a `checkout_url`, so it can be offered to the user directly. Empty is not an error. It means one of three things: recovery is switched off for this deployment, or the search was not a dead end, or the same label is taken on the other endings too, which is the normal outcome for a common dictionary word. Do not tell the user that other endings were checked unless this list is non-empty. Do not re-check these; they were checked live in this same call. |
| error_message | No | |
| component_hint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses non-obvious behavior: prices are per full term, not per year; .ai requires a two-year term; premium names have no checkout_url; and `domains` mode returns no suggestions or expansion. This is exactly the kind of detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place, covering safety, input selection, output semantics, pricing nuance, and premium limitations. The core purpose is front-loaded, and there is no redundant restating of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not re-explain return structure. It covers all remaining operational ambiguity: TLD expansion, pricing aggregation, .ai two-year terms, premium unavailability, and checkout URLs. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning beyond it: `domains` is preferred over `query`, entries must include the TLD, the max is 200, and `query` expands TLD-less names to popular endings. These distinctions materially change how the agent should populate the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource: 'Read-only availability and pricing lookup for domain names.' It also clarifies what the tool is not (it creates no purchase/order), making it clearly distinguishable from a transfer-checking sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool and strong guidance on choosing the `domains` vs `query` input. It never explicitly contrasts this tool with `check_domain_transfer`, so sibling routing is left to inference.
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. Dates show when Glama detected each change.
2 tool updates
- Added
check_domain_transfer - Changed
search_domains2 fields changed- added
Output schema / properties / alternativesAdded value: +{ + "description": "Available domains the caller did not ask about, offered only when every requested domain came back unavailable. Same label the caller typed, on a different ending; nothing is invented and nothing here duplicates a name in `results`. Every entry is available, non-premium and carries a `checkout_url`, so it can be offered to the user directly. Empty is not an error. It means one of three things: recovery is switched off for this deployment, or the search was not a dead end, or the same label is taken on the other endings too, which is the normal outcome for a common dictionary word. Do not tell the user that other endings were checked unless this list is non-empty. Do not re-check these; they were checked live in this same call.", + "items": { + "properties": { + "available": { + "type": "boolean" + }, + "checkout_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "URL on the Just Domain website where the user completes payment. Set for available domains we can actually register; null for unavailable ones, for premium names (the checkout API refuses them), and for endings whose registry requires registrant data we cannot supply yet. The MCP tool handler fills this in after the bare service call so the UI widget's Buy button can open checkout directly in one click." + }, + "fqdn": { + "type": "string" + }, + "name": { + "type": "string" + }, + "premium": { + "default": false, + "type": "boolean" + }, + "price": { + "anyOf": [ + { + "properties": { + "amount_minor": { + "description": "Amount in the smallest currency unit (e.g. cents).", + "type": "integer" + }, + "currency": { + "description": "ISO-4217 currency code.", + "maxLength": 3, + "minLength": 3, + "type": "string" + }, + "formatted": { + "description": "Human-readable price, e.g. '$12.99'.", + "type": "string" + } + }, + "required": [ + "amount_minor", + "currency", + "formatted" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Registration price: the total for ONE full registration term of this ending, not a per-year rate. One year on most endings; two years on .ai, whose registry mandates a two-year term." + }, + "renewal_price": { + "anyOf": [ + { + "properties": { + "amount_minor": { + "description": "Amount in the smallest currency unit (e.g. cents).", + "type": "integer" + }, + "currency": { + "description": "ISO-4217 currency code.", + "maxLength": 3, + "minLength": 3, + "type": "string" + }, + "formatted": { + "description": "Human-readable price, e.g. '$12.99'.", + "type": "string" + } + }, + "required": [ + "amount_minor", + "currency", + "formatted" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Renewal price: the total for ONE further registration term, on the same basis as `price`. What a later term would cost at today's rate, not a figure anyone has been charged or quoted for a specific renewal. An owner renews, and turns auto-renew on or off, on their own dashboard at https://justdomain.ai/dashboard, which is the only authoritative source for one domain's renewal state." + }, + "requires_additional_data": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Does this ending's registry demand registrant data beyond standard contact details - a nexus declaration, a national ID, a professional credential? TRI-STATE: true / false / null = we do not know. Just Domain cannot collect or submit that data yet, so a true (or unknown) value means the name is reported honestly but carries no `checkout_url`." + }, + "status": { + "description": "Raw provider status, e.g. 'free', 'active', 'premium'.", + "type": "string" + }, + "term_years": { + "default": 1, + "description": "Length in years of ONE registration term for this ending, and therefore the period `price` and `renewal_price` each cover. 1 on most endings; 2 on .ai, whose registry mandates a two-year term with no one-year option. Read this before describing any price as annual.", + "type": "integer" + }, + "tld": { + "type": "string" + }, + "warnings": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "fqdn", + "name", + "tld", + "available", + "status" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / results / items / properties / renewal_price / descriptionPrevious value: -"Renewal price: the total for ONE further registration term, on the same basis as `price`. What a later term would cost at today's rate; Just Domain does not yet run renewals."New value: +"Renewal price: the total for ONE further registration term, on the same basis as `price`. What a later term would cost at today's rate, not a figure anyone has been charged or quoted for a specific renewal. An owner renews, and turns auto-renew on or off, on their own dashboard at https://justdomain.ai/dashboard, which is the only authoritative source for one domain's renewal state."
1 tool update
- Changed
search_domains2 fields changed- changed
Output schema / properties / results / items / properties / checkout_url / descriptionPrevious value: -"URL on the Just Domain website where the user completes payment. Set for available domains we can actually register; null for unavailable ones and for premium names, which the checkout API refuses. The MCP tool handler fills this in after the bare service call so the UI widget's Buy button can open checkout directly in one click."New value: +"URL on the Just Domain website where the user completes payment. Set for available domains we can actually register; null for unavailable ones, for premium names (the checkout API refuses them), and for endings whose registry requires registrant data we cannot supply yet. The MCP tool handler fills this in after the bare service call so the UI widget's Buy button can open checkout directly in one click." - added
Output schema / properties / results / items / properties / requires_additional_dataAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Does this ending's registry demand registrant data beyond standard contact details - a nexus declaration, a national ID, a professional credential? TRI-STATE: true / false / null = we do not know. Just Domain cannot collect or submit that data yet, so a true (or unknown) value means the name is reported honestly but carries no `checkout_url`." +}
1 tool update
- Changed
search_domains3 fields changed- changed
Output schema / properties / results / items / properties / price / descriptionPrevious value: -"First-year registration price."New value: +"Registration price: the total for ONE full registration term of this ending, not a per-year rate. One year on most endings; two years on .ai, whose registry mandates a two-year term." - changed
Output schema / properties / results / items / properties / renewal_price / descriptionPrevious value: -"Annual renewal price (charged each year after registration)."New value: +"Renewal price: the total for ONE further registration term, on the same basis as `price`. What a later term would cost at today's rate; Just Domain does not yet run renewals." - added
Output schema / properties / results / items / properties / term_yearsAdded value: +{ + "default": 1, + "description": "Length in years of ONE registration term for this ending, and therefore the period `price` and `renewal_price` each cover. 1 on most endings; 2 on .ai, whose registry mandates a two-year term with no one-year option. Read this before describing any price as annual.", + "type": "integer" +}
1 tool update
- Changed
search_domains1 field changed- changed
Output schema / properties / results / items / properties / checkout_url / descriptionPrevious value: -"URL on the Just Domain website where the user completes payment. Set for available domains; null for unavailable. The MCP tool handler fills this in after the bare service call so the UI widget's Buy button can open checkout directly in one click."New value: +"URL on the Just Domain website where the user completes payment. Set for available domains we can actually register; null for unavailable ones and for premium names, which the checkout API refuses. The MCP tool handler fills this in after the bare service call so the UI widget's Buy button can open checkout directly in one click."
1 tool update
- Changed
search_domains9 fields changed- added
Input schema / properties / domains / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "maxItems": 200, + "minItems": 1, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / domains / defaultAdded value: +null - changed
Input schema / properties / domains / descriptionPrevious value: -"Fully-qualified domains to check, e.g. ['acme.com', 'acme.io', 'acme.ai']. Each entry must include the TLD. Maximum 200 per request."New value: +"Fully-qualified domains to check, e.g. ['acme.com', 'acme.io', 'acme.ai']. Each entry must include the TLD. Maximum 200 per request. Preferred over `query`." - removed
Input schema / properties / domains / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / domains / maxItemsRemoved value: -200 - removed
Input schema / properties / domains / minItemsRemoved value: -1 - removed
Input schema / properties / domains / typeRemoved value: -"array" - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Free-text fallback when exact FQDNs aren't known: one or more names, comma- or space-separated. Names without a TLD are expanded to popular TLDs (com/io/ai/co/net). Ignored when `domains` is provided." +} - removed
Input schema / requiredRemoved value: -[ - "domains" -]
1 tool update
- First observed
search_domains
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Buy & manage domains from any AI chat: availability, register, DNS, email forwarding, AI bot stats.
Domain search, registration, DNS, marketplace, and checkout with your AI agent.
Bulk domain checking for AI chats: availability, aftermarket prices, archive.org history, buy links
Search domains for sale on Nameshift, check pricing, and buy one via a hosted checkout link.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables buying and managing internet domains directly from AI chat, including availability checks, registration, DNS configuration, email forwarding, and AI bot tracking.MIT
- AlicenseNot gradedqualityDmaintenanceEnables checking domain availability and registration prices across multiple TLDs and providers. Users can find available domain names and compare pricing through natural language.29MIT
- AlicenseNot gradedqualityFmaintenanceSearch, register, and manage domain names through natural conversation with AI assistants.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to check domain availability across multiple TLDs with real-time pricing, brainstorm creative domain names, analyze domains for brandability and SEO potential, and search for domains by price and category without CAPTCHAs.183MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
The two tools have cleanly separated purposes: search_domains covers availability and pricing for prospective domains, while check_domain_transfer evaluates migration eligibility for a domain already owned elsewhere. There is no semantic overlap or plausible misselection between them.
Both names follow a consistent verb_noun pattern (search_domains, check_domain_transfer), with clear verbs and resource nouns. The singular/plural difference is minor and does not distract from the pattern.
At two tools, the server sits in the borderline thin range for a domain-focused service. However, each tool is broad and earns its place, covering the two main pre-purchase informational tasks.
The server covers the obvious informational needs: domain availability/pricing and transfer eligibility/pricing. Actual registration and transfer execution are intentionally not exposed, but checkout_url and transfer_url hand off to humans, making these workable gaps rather than dead ends.