Claim a working subdomain in one call — A, CNAME and TXT records. No domain to buy, no account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check if a specific subdomain name is available for registration under a given domain. Returns true if the name is free to claim.
Root domain (e.g. 'sitey.my')
Subdomain name (e.g. 'demo')
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Check if a specific subdomain name is available for registration under a given domain. Returns true if the name is free to claim.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
}
}
}Create a new DNS record for a subdomain. Supports A records (IP address), CNAME records (hostname) and REDIRECT records (an https:// URL — visitors to the name are sent there with a 301). Example: create demo.sitey.my pointing to 1.2.3.4. No account, API key or signup is needed. The target does not have to be serving yet: claim the name first and deploy to it second if that is your order. The result carries reachable:false when nothing answered, and the record is created either way. If you send no owner_token, the result carries a new one under 'owner_token' — save it, it is shown once and is the only way to change or delete this record later. Without an API key, a CNAME or REDIRECT may not point at a temporary tunnel (trycloudflare.com, ngrok and the like), names containing words such as login or wallet are refused with ACCOUNT_REQUIRED, and TXT records are not available.
| Argument | Type | Description |
|---|---|---|
| type* | string | Record type. REDIRECT answers every visit with a 301 to the URL in value. |
| value* | string | Record value: an IPv4 address for A, a hostname for CNAME, an absolute https:// URL for REDIRECT (http:// is refused, and so is a URL under one of this service's own roots). |
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain",
"type",
"value"
],
"properties": {
"type": {
"enum": [
"A",
"CNAME",
"REDIRECT"
],
"type": "string",
"description": "Record type. REDIRECT answers every visit with a 301 to the URL in value."
},
"value": {
"type": "string",
"description": "Record value: an IPv4 address for A, a hostname for CNAME, an absolute https:// URL for REDIRECT (http:// is refused, and so is a URL under one of this service's own roots)."
},
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}Create or update a TXT record for domain verification. Used for services like Vercel (_vercel) and Netlify that require DNS-based ownership proof. The record is placed at the root domain under the prefix you give (e.g. _vercel.sitey.my), alongside the other owners' values — that is the name Vercel reads for a subdomain of sitey.my. Needs an account: send an API key from the dashboard (Authorization: Bearer styo_…) on the MCP request. Without one this returns ACCOUNT_REQUIRED.
| Argument | Type | Description |
|---|---|---|
| value* | string | TXT record value (the verification token) |
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| root_level | boolean | No longer supported — TXT records are always written at the root domain. Passing true returns an error. |
| host_prefix* | string | TXT record host prefix (e.g. '_vercel' for Vercel verification) |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
Permanently delete a subdomain DNS record you own. The subdomain will stop resolving immediately.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}Delete a TXT verification record from a subdomain you own.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| host_prefix* | string | TXT record host prefix (e.g. '_vercel') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain",
"host_prefix"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"host_prefix": {
"type": "string",
"description": "TXT record host prefix (e.g. '_vercel')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}Paying for a year is switched off on this server, so this always answers PAYMENT_DISABLED. Use renew_subdomain, which is free and adds a month.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain (e.g. 'sitey.my') |
| payment | string | The x402 payment payload, base64 — the X-PAYMENT header value. Omit to be told what to pay. |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"payment": {
"type": "string",
"description": "The x402 payment payload, base64 — the X-PAYMENT header value. Omit to be told what to pay."
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}List available root domains (e.g. sitey.my, sitey.one) that you can create subdomains under. Call this first to know which domains are available.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}List all subdomains you own. Returns subdomain name, domain, record type, value, and creation date. A REDIRECT record also carries hits: how many visits it has answered in total, how many this calendar month, and when the last one was. Filtered by your API key, or by the owner_token you pass, or — for records made before tokens existed — by your IP address.
| Argument | Type | Description |
|---|---|---|
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}Extend a subdomain you own before it expires. Subdomains are lent for a period, not given: agent-created records last one month and user records three. Nothing emails an agent, so read expires_at from list_subdomains and call this before that date. One call resets the clock from today. Renewal only opens in the last two weeks before expires_at — an earlier call is refused and tells you the date it opens.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}Update the DNS record value of a subdomain you own. For example, change the IP address that demo.sitey.my points to. The new target does not have to be serving yet; the result carries reachable:false when nothing answered, and the record is moved either way.
| Argument | Type | Description |
|---|---|---|
| value* | string | New record value |
| domain* | string | Root domain (e.g. 'sitey.my') |
| subdomain* | string | Subdomain name (e.g. 'demo') |
| owner_token | string | The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain",
"value"
],
"properties": {
"value": {
"type": "string",
"description": "New record value"
},
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subdomain",
"domain",
"host_prefix",
"value"
],
"properties": {
"value": {
"type": "string",
"description": "TXT record value (the verification token)"
},
"domain": {
"type": "string",
"description": "Root domain (e.g. 'sitey.my')"
},
"subdomain": {
"type": "string",
"description": "Subdomain name (e.g. 'demo')"
},
"root_level": {
"type": "boolean",
"description": "No longer supported — TXT records are always written at the root domain. Passing true returns an error."
},
"host_prefix": {
"type": "string",
"description": "TXT record host prefix (e.g. '_vercel' for Vercel verification)"
},
"owner_token": {
"type": "string",
"description": "The owner token you were given when you created the record (starts with anon_). Omit it only if you have an API key, or if the record predates tokens and was claimed from this same IP address. Creating without one mints a new one and returns it once."
}
}
}