Domain prices for every TLD at the top registrars: renewals, N-year totals, history, availability.
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.
Use this when the user wants the single best place to buy (or transfer) one or more extensions for N years. Ranks by the total cost of ownership, not the first-year promotion; returns the winner with a year-by-year breakdown, three runners-up and caveats. Up to 20 extensions in one call.
1-20 extensions
horizon for totals, 1-10 years (default 3)
ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`
start with a new registration (default) or a transfer in
registrar ids to leave out
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http tldbench https://tldbench.com/mcp
Use this when the user wants the single best place to buy (or transfer) one or more extensions for N years. Ranks by the total cost of ownership, not the first-year promotion; returns the winner with a year-by-year breakdown, three runners-up and caveats. Up to 20 extensions in one call.
| Argument | Type | Description |
|---|---|---|
| tlds* | array | 1-20 extensions |
| years | integer | horizon for totals, 1-10 years (default 3) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| operation | string | start with a new registration (default) or a transfer in |
| exclude_registrars | array | registrar ids to leave out |
{
"type": "object",
"required": [
"tlds"
],
"properties": {
"tlds": {
"type": "array",
"items": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"maxItems": 20,
"minItems": 1,
"description": "1-20 extensions"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"operation": {
"enum": [
"register",
"transfer"
],
"type": "string",
"default": "register",
"description": "start with a new registration (default) or a transfer in"
},
"exclude_registrars": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"description": "registrar ids to leave out"
}
}
}Use this when the user asks whether specific domain names are free. Checks the registry (RDAP, WHOIS for some ccTLDs) after a DNS pre-check, with an honest unknown, and adds the cheapest registrar's price to own each free name. Up to 50 names in one call.
| Argument | Type | Description |
|---|---|---|
| mode | string | fast: a DNS delegation is accepted as proof of registration; precise: always ask the registry (status codes, expiry) |
| years | integer | horizon for totals, 1-10 years (default 3) |
| domains* | array | 1-50 full names (example.com, bücher.de) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| with_prices | boolean | add the cheapest registrar's price for names that are free |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"mode": {
"enum": [
"fast",
"precise"
],
"type": "string",
"default": "fast",
"description": "fast: a DNS delegation is accepted as proof of registration; precise: always ask the registry (status codes, expiry)"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253,
"minLength": 1
},
"examples": [
[
"acmeforge.com",
"acmeforge.io"
]
],
"maxItems": 50,
"minItems": 1,
"description": "1-50 full names (example.com, bücher.de)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"with_prices": {
"type": "boolean",
"default": true,
"description": "add the cheapest registrar's price for names that are free"
}
}
}Use this when the user asks what an extension costs or where it is cheapest. Returns every registrar's register, renew, transfer and restore prices for one TLD, ranked by the N-year cost of ownership (default 3 years), with each price's source and date.
| Argument | Type | Description |
|---|---|---|
| tld* | string | an extension: com, .io, co.uk or рф |
| sort | string | rank by the N-year total (default), or by one price |
| limit | integer | offers returned, cheapest first (default 20) |
| years | integer | horizon for totals, 1-10 years (default 3) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| registrars | array | only these registrars |
| include_stale | boolean | include prices not confirmed for 3x their source's cadence (marked stale) |
{
"type": "object",
"required": [
"tld"
],
"properties": {
"tld": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"sort": {
"enum": [
"total",
"register",
"renew",
"transfer"
],
"type": "string",
"default": "total",
"description": "rank by the N-year total (default), or by one price"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 200,
"minimum": 1,
"description": "offers returned, cheapest first (default 20)"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"registrars": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "a registrar's id (porkbun), name (Porkbun) or IANA id (1861)"
},
"maxItems": 50,
"description": "only these registrars"
},
"include_stale": {
"type": "boolean",
"default": true,
"description": "include prices not confirmed for 3x their source's cadence (marked stale)"
}
}
}Use this when the user asks about a registrar: its country, group, size (gTLD domains under management), how many extensions it sells, and how fresh our prices for it are. Accepts our id, its name or an IANA id.
| Argument | Type | Description |
|---|---|---|
| registrar* | string | a registrar's id (porkbun), name (Porkbun) or IANA id (1861) |
{
"type": "object",
"required": [
"registrar"
],
"properties": {
"registrar": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "a registrar's id (porkbun), name (Porkbun) or IANA id (1861)"
}
}
}Use this when the user asks what an extension is, who runs it, or whether it fits: type (generic or country code), registry, brand TLD or not, DNSSEC, RDAP and WHOIS servers, minimum term, second levels, registry fees, and its price summary.
| Argument | Type | Description |
|---|---|---|
| tld* | string | an extension: com, .io, co.uk or рф |
| years | integer | horizon for totals, 1-10 years (default 3) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
{
"type": "object",
"required": [
"tld"
],
"properties": {
"tld": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
}
}
}Use this when the user asks for deals, promo codes or first-year discounts. Returns running promotional prices we saw at the source (with the regular price they revert to); coupon codes come later.
| Argument | Type | Description |
|---|---|---|
| tld | string | an extension: com, .io, co.uk or рф |
| limit | integer | |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| operation | string | |
| registrar | string |
{
"type": "object",
"properties": {
"tld": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"operation": {
"enum": [
"register",
"renew",
"transfer"
],
"type": "string"
},
"registrar": {
"type": "string"
}
}
}Use this when the user asks how an extension's prices have moved or whether a rise is coming. Returns each registrar's price periods (changes only) and the registry's announced wholesale changes.
| Argument | Type | Description |
|---|---|---|
| tld* | string | an extension: com, .io, co.uk or рф |
| since | string | YYYY-MM-DD: only periods that end on or after it |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| operation | string | register (a new registration, year 1), renew (one more year), transfer (move in; usually adds a year), restore (redeem an expired domain in its redemption period) |
| registrar | string | one registrar's id |
{
"type": "object",
"required": [
"tld"
],
"properties": {
"tld": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"since": {
"type": "string",
"description": "YYYY-MM-DD: only periods that end on or after it"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"operation": {
"enum": [
"register",
"renew",
"transfer",
"restore"
],
"type": "string",
"description": "register (a new registration, year 1), renew (one more year), transfer (move in; usually adds a year), restore (redeem an expired domain in its redemption period)"
},
"registrar": {
"type": "string",
"description": "one registrar's id"
}
}
}Use this when the user has a name and wants to know which extensions are free and what each costs to own. Checks one label across up to 50 extensions (or a preset: popular, tech, cheap, country:<cc>) and sorts the free ones by total cost.
| Argument | Type | Description |
|---|---|---|
| name* | string | the label, without an extension (acmeforge) |
| tlds | array | 1-50 extensions; default: the preset |
| years | integer | horizon for totals, 1-10 years (default 3) |
| preset | string | popular (default), tech, cheap, or country:<cc> (country:de) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| max_renew_price | number | leave out extensions whose cheapest renewal is above this (in `currency`) |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"examples": [
"acmeforge"
],
"maxLength": 63,
"minLength": 1,
"description": "the label, without an extension (acmeforge)"
},
"tlds": {
"type": "array",
"items": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"maxItems": 50,
"minItems": 1,
"description": "1-50 extensions; default: the preset"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"preset": {
"type": "string",
"maxLength": 40,
"description": "popular (default), tech, cheap, or country:<cc> (country:de)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"max_renew_price": {
"type": "number",
"description": "leave out extensions whose cheapest renewal is above this (in `currency`)",
"exclusiveMinimum": 0
}
}
}Use this when the user needs name ideas. Pass `candidates` from your own brainstorm and we check and price them; with only `keywords` we add simple prefixes, suffixes, TLD hacks and combinations. Returns only names that are available or unknown, cheapest first.
| Argument | Type | Description |
|---|---|---|
| tlds | array | extensions to try (default com) |
| limit | integer | names to check (each counts against the availability limit; default 20) |
| years | integer | horizon for totals, 1-10 years (default 3) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| keywords | array | words to build names from with simple rules (prefixes, suffixes, TLD hacks, pairs) |
| candidates | array | your own ideas: labels (brewly) or full names (brewly.co); labels are tried with each of `tlds` |
| max_length | integer | longest label |
| max_renew_price | number |
Use this when the user compares the long-run cost of several names or extensions, at one registrar or the cheapest. Applies minimum terms and regular renewals; with transfer_after_year it also finds the cheapest registrar to move to later. Up to 20 domains or extensions in one call.
| Argument | Type | Description |
|---|---|---|
| tlds | array | 1-20 extensions |
| years | integer | horizon for totals, 1-10 years (default 3) |
| domains | array | 1-20 domain names (their extensions are priced) |
| currency | string | ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx` |
| registrar | string | price at this registrar; default: the cheapest to own |
| transfer_after_year | integer | also price moving to the cheapest renewing registrar after this many years |
{
"type": "object",
"properties": {
"tlds": {
"type": "array",
"items": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"maxItems": 20,
"minItems": 1,
"description": "1-20 extensions"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "1-20 domain names (their extensions are priced)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"registrar": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "price at this registrar; default: the cheapest to own"
},
"transfer_after_year": {
"type": "integer",
"maximum": 9,
"minimum": 1,
"description": "also price moving to the cheapest renewing registrar after this many years"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 6, 2026.
{
"type": "object",
"properties": {
"tlds": {
"type": "array",
"items": {
"type": "string",
"examples": [
"io"
],
"maxLength": 253,
"minLength": 1,
"description": "an extension: com, .io, co.uk or рф"
},
"maxItems": 10,
"minItems": 1,
"description": "extensions to try (default com)"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "names to check (each counts against the availability limit; default 20)"
},
"years": {
"type": "integer",
"default": 3,
"maximum": 10,
"minimum": 1,
"description": "horizon for totals, 1-10 years (default 3)"
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency for prices (default USD); converted at the ECB's daily rate, disclosed in `fx`"
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 10,
"description": "words to build names from with simple rules (prefixes, suffixes, TLD hacks, pairs)"
},
"candidates": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253,
"minLength": 1
},
"maxItems": 100,
"description": "your own ideas: labels (brewly) or full names (brewly.co); labels are tried with each of `tlds`"
},
"max_length": {
"type": "integer",
"maximum": 63,
"minimum": 2,
"description": "longest label"
},
"max_renew_price": {
"type": "number",
"exclusiveMinimum": 0
}
}
}