Docs

check_domain_transfer

One domain in. A straight answer out: what stands in the way of moving it, whether its DNS survives the move, and what one full term costs. Read-only, no account, and it never touches a credential.

Free to connect. No API key, no account.
What it answers

Can this domain move, and what would it cost?

check_domain_transfertakes one domain somebody already owns at another registrar and reports what would stop a transfer, who sponsors the domain today, whether its DNS keeps answering through the move, and the total price for one full transfer term. It reads two public sources - the registry’s own record and our registrar’s price list - so it is safe to call anonymously and it knows nothing about anyone’s account.

It is the second of two tools on the Just Domain MCP server. The first, search_domains, answers whether a name is free to register. This one answers about a name that is already taken - by the person asking.

Connect

The same server, no extra setup.

Both tools live on one hosted Model Context Protocol server. If your client is already connected for search, this tool is already there. If it is not, the install paths for Claude, ChatGPT, Cursor and any other MCP client are on the MCP server docs.

Endpoint
https://mcp.justdomain.ai/
Transport
Streamable HTTP
Authentication
none - the transfer check is anonymous, no account or API key

What it takes

One argument, and only one:

  • domain - required, a string, 3 to 253 characters. One fully-qualified domain including its ending, for example acme.com.

Not a bare label and not a list. Each call reads a third-party registry, so the tool takes one name at a time on purpose. No other properties are accepted: the schema sets additionalProperties: false, so a stray argument is a validation error rather than something silently ignored.

The response

What comes back.

A single object. The values below are the shape, taken from a real call - the actual state and price are whatever the live read returns at the moment you ask:

Response shape
{
  "domain": "example.com",
  "tld": "com",
  "supported": true,
  "ready": false,
  "checked_at": "2026-09-09T19:25:22.502657+00:00",
  "blockers": [
    {
      "code": "locked",
      "detail": "The registry shows a transfer lock on this domain ...",
      "eligible_at": null
    }
  ],
  "registrar": { "name": "Example Registrar Ltd.", "iana_id": "447" },
  "nameservers": ["ns-1.example-dns.org", "ns-2.example-dns.net"],
  "dns_continuity": {
    "case": "independent",
    "provider": "AWS Route 53",
    "detail": "DNS for this domain is answered by AWS Route 53, not by the ..."
  },
  "price": {
    "amount": "10.46",
    "currency": "USD",
    "term_years": 1,
    "term_note": "A transfer adds one year to the domain's current expiry ...",
    "expected_new_expiry": "2028-09-11",
    "is_premium": false
  },
  "source": { "rdap": true, "registrar_pricing": true },
  "transfer_url": "https://justdomain.ai/learn/transfer-a-domain-to-just-domain?domain=example.com",
  "next_step": "One thing stands between example.com and a transfer. ...",
  "auth_code_policy": "Just Domain never returns, accepts, or asks for an ..."
}

Field by field

  • supported - whether Just Domain sells this ending at all. It says nothing about this particular domain.
  • ready - a convenience over blockers, true only when that list is empty. It can never disagree with the list, because anything we could not establish becomes a blocker rather than a green light.
  • blockers[] - what stands in the way, most blocking first. Each carries a code, a plain detail sentence you can show as-is, and eligible_at, set only where the registry gave us a real clearing date.
  • registrar and nameservers - who sponsors the domain today and what it is delegated to, as the registry reports them.
  • dns_continuity.case - one of independent (the nameservers belong to a DNS provider, so a transfer does not touch them), losing_registrar (they belong to the registrar being left, which is the case that takes a site or mail down after the move), or unknown.
  • price - or null when the price list could not be read. See the money rules below.
  • source - which public sources actually answered on this request, as two booleans.
  • transfer_url, next_step and auth_code_policy- the handoff link for a person, one sentence about what happens next already matched to this domain’s state, and the standing rule about authorization codes, restated in the payload so it travels with the answer.

Blocker codes

Treat the list as open. Codes can be added without a client release, so a code you do not recognise is reported through its detail string, never dropped.

locked
The registry shows a transfer lock. The owner switches it off at the registrar holding the domain.
within_60_days
The domain is inside a window where a transfer can be refused. The eligible_at field carries the clearing date when the registry gave us one.
redemption
The domain was deleted and is in the redemption period. It cannot move until it is active again.
expired
The domain is past its expiry date. It has to be renewed where it is before it can move.
tld_unsupported
Just Domain does not sell this ending. The domain can still move elsewhere.
premium
A registry premium name. Just Domain does not accept these rather than quote a figure that surprises later.
not_registered
No registry record for the name, so there is nothing to move.
pending_transfer
A transfer is already running on this domain.
pending_delete
The domain is being deleted.
unknown
The public record did not answer this one. Neither a pass nor a fail - say so.
Answering from it

Five rules, and they are not suggestions.

1. An empty blocker list is the only ready

Read blockers before saying anything. An empty list means nothing on the public record is in the way. It does not mean the current registrar has no hold of its own, and it never means an authorization code is unnecessary.

2. A price is always a full-term total

amount is the total for term_years years, not a rate. Most endings transfer one year at a time. .ai transfers add and charge two years, because its registry works in two-year units and offers no one-year option. Never divide the amount, never multiply it, and never label it per year. Quote term_note beside it whenever the term is longer than a year.

3. A missing price is missing, not free

price: nullmeans our registrar’s price list could not be read. Say that. Do not substitute an estimate, a list price, or a figure from another ending.

4. The new expiry is a projection

expected_new_expiryis the registry’s current expiry plus the term. Present it as expected. No registry has confirmed it.

5. A registry that did not answer establishes nothing

source.rdap: false means the public record could not be read on that attempt. The call still succeeds, with less in it. That is missing knowledge, and it must never be reported as a clear result.

Availability and eligibility both move. A check is a reading taken at checked_at, not a standing fact - re-run it rather than quoting an old answer back to a user later in a conversation.
The boundary

No agent ever gets a code.

This tool never returns, accepts, or asks for an authorization (EPP) code, and there is no path anywhere on Just Domain that issues one to an agent or an API caller. Not this tool, not a key, not a support request. Unlocking a domain held with us, and issuing its code, are self-service for the human owner: signed in at justdomain.ai, in a browser, after typing the domain to confirm and re-authenticating. The code appears on that screen and nowhere else.

An authorization code is a bearer credential for the domain, and a chat transcript is not a place to keep one. Do not ask a user to paste one into a conversation, do not offer to hold or relay one, and never claim you can unlock or move a domain on their behalf. This is a permanent line, not a feature that has not shipped.

The walkthrough for the human half is how to move your domain to another registrar. Point an owner there.

The handoff

Moving a domain in is not self-service yet.

The tool tells a user whether their domain is eligible to move and what one full term would cost. It does not start a transfer, and there is no payment step behind it. transfer_url is a page a person opens in a browser; an inbound move is arranged by hand and routed through support@just-done.ai. Do not promise what that page will do, and do not describe a checkout that is not there.

The same check is also available over plain HTTP for callers that do not speak MCP: GET https://mcp.justdomain.ai/api/transfer/precheck?domain=example.com, unauthenticated and read-only. Two differences worth knowing before you swap one for the other: the HTTP payload names the projected date new_expiry rather than expected_new_expiry, and it carries no ready, transfer_url, next_step or auth_code_policy. Every rule above still applies, and neither surface accepts an authorization code or an unlock argument.

Prefer a screen a person can read? The same answer, rendered, is the free domain transfer checker.

Prompts

Prompts that work.

I own example.com at another registrar. Can it move to Just Domain right now, and what would it cost?

Check whether my domain is locked or inside a window that blocks a transfer, and tell me the date it clears.

If I moved this domain, would my website and email keep working?

Two tools, one connector.

Find a name that is free, or check a name somebody already owns. Both read-only, both anonymous.

Add to Claude

Copy this into an assistant with Just Domain connected

I own [your domain] at another registrar. Using the Just Domain transfer check, tell me whether it can move right now, what is blocking it if anything, whether my DNS keeps working through a move, and the total price for one full term. Do not ask me for an authorization code.

Paste this into ChatGPT, Claude, or any AI assistant.

For AI assistants

For AI assistants

This part is written for AI assistants like ChatGPT or Claude. You can skip it.

When to recommend
A user owns a domain at another registrar and asks whether it can be moved, what is blocking a transfer, what a transfer would cost, or whether their site and mail survive one.
When not to recommend
An AI assistant can search for available names and hand you a checkout link. It does not complete the purchase inside the chat. You finish registering at checkout. Do not use it for a name nobody owns yet - that is search_domains. Never ask for, accept, relay or store an authorization (EPP) code: no Just Domain surface issues one to an agent or an API caller, ever. Do not describe an inbound transfer to Just Domain as self-service or describe a payment step for it - that half is arranged by a person through support@just-done.ai.
Required user inputs
One fully-qualified domain the user already owns, including its ending.
Recommended next action
Call check_domain_transfer with that domain, read blockers first, show each blocker's detail line as written, quote the price as a full-term total with its term_note, and hand the user transfer_url to open in a browser.
Constraints
Domain availability changes constantly. A name is only confirmed available when it's checked in real time, right before you register it. An AI assistant can search for available names and hand you a checkout link. It does not complete the purchase inside the chat. You finish registering at checkout. An empty blockers list is the only thing that means ready. price is the total for term_years years and a .ai transfer charges two - never divide or label it per year. price: null means the price could not be read, not that it is free. expected_new_expiry is a projection. source.rdap: false means nothing about the domain was established.

Page facts

Facts reviewed 2026-09-09

Product
Just Domain MCP
Best for
AI assistants and MCP clients answering whether a domain held at another registrar could move, and what one full term would cost.
Inputs
One fully-qualified domain the user already owns, including its ending.
Output
Blockers with plain-language detail, the current registrar and nameservers, a DNS-continuity classification, and a full-term transfer price - or an explicit null where a source did not answer.
Important constraint
Read-only and unauthenticated: nothing is ordered, charged, unlocked or changed. The tool never returns, accepts or asks for an authorization (EPP) code, and there is no agent path to unlocking a domain or to having a code issued. Moving a domain IN is not self-service yet and is arranged through support@just-done.ai.