Skip to main content
Glama

Server Details

Search domain availability and pricing, straight from chat, then open a link to register.

Ownership verified
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 tools
check_domain_transferCheck whether a domain can transfer to Just DomainA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesOne 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

ParametersJSON Schema
NameRequiredDescription
tldYes
priceNoNull when the registrar's price list could not be read. Never estimate a domain transfer price yourself.
readyYesTRUE 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.
domainYes
sourceYesWhich public sources actually answered on this request.
blockersNoWhat stands between this domain and a transfer, most blocking first. An EMPTY list is the only thing that means ready.
next_stepYesOne sentence you can say to the user about what happens next, already matched to this domain's state.
registrarYesWho sponsors the domain today, as the REGISTRY reports it.
supportedYesWhether Just Domain can accept this ENDING at all. Says nothing about this particular domain - read `blockers` for that.
checked_atYesISO-8601 instant these facts were read.
nameserversNo
transfer_urlYesThe page on justdomain.ai a PERSON opens in a browser to take this further. The handoff out of the chat.
dns_continuityYesDoes 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_policyYesConstant. The rule about authorization (EPP) codes, restated in the payload so it travels with the answer. Follow it.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 availabilityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree-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.
domainsNoFully-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

ParametersJSON Schema
NameRequiredDescription
errorNoSet when the search could not be completed (e.g. invalid query, provider failure).
domainsYesThe exact domains requested by the caller, echoed back.
resultsYes
warningsNo
next_actionNo
alternativesNoAvailable 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_messageNo
component_hintNo

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • Addedcheck_domain_transfer
    • Changedsearch_domains2 fields changed
      • addedOutput schema / properties / alternatives
        Added 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"
        +}
      • changedOutput schema / properties / results / items / properties / renewal_price / description
        Previous 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."
  2. 1 tool update
    • Changedsearch_domains2 fields changed
      • changedOutput schema / properties / results / items / properties / checkout_url / description
        Previous 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."
      • addedOutput schema / properties / results / items / properties / requires_additional_data
        Added 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`."
        +}
  3. 1 tool update
    • Changedsearch_domains3 fields changed
      • changedOutput schema / properties / results / items / properties / price / description
        Previous 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."
      • changedOutput schema / properties / results / items / properties / renewal_price / description
        Previous 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."
      • addedOutput schema / properties / results / items / properties / term_years
        Added 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"
        +}
  4. 1 tool update
    • Changedsearch_domains1 field changed
      • changedOutput schema / properties / results / items / properties / checkout_url / description
        Previous 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."
  5. 1 tool update
    • Changedsearch_domains9 fields changed
      • addedInput schema / properties / domains / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "maxItems": 200,
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / domains / default
        Added value: +null
      • changedInput schema / properties / domains / description
        Previous 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`."
      • removedInput schema / properties / domains / items
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / domains / maxItems
        Removed value: -200
      • removedInput schema / properties / domains / minItems
        Removed value: -1
      • removedInput schema / properties / domains / type
        Removed value: -"array"
      • addedInput schema / properties / query
        Added 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."
        +}
      • removedInput schema / required
        Removed value: -[
        -  "domains"
        -]
  6. 1 tool update
    • First observedsearch_domains

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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.