TLDMath
by tldmath.com · remote · no sign-in to list tools · v0.14.0 · published by com.tldmath
Live domain availability and prices across registrars, ranked by true two-year cost.
15 tools: 1 do something that can't be undone, 10 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things10Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tldmath https://www.tldmath.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Highplan_app_move
The description refers to ".env.example".
What this check looks forMatched text
description: "...om package.json and variable NAMES from .env.example: never pass values or secrets. Read-onl..."
- Highplan_app_move
The input schema at properties.env_names.description refers to ".env.example".
What this check looks forMatched text
inputSchema.properties.env_names.description: "Environment variable names only (from .env.example or the builder’s secrets list). Never v..."
- Warnplan_app_move
The server marks "plan_app_move" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "plan_app_move" says "move": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Can't be undone 1Claude Code: ask
plan_app_moveAn ordered, repeat-safe plan for moving an app built in an AI app builder (Lovable, Bolt, Replit, Base44…) to the user’s own host (Vercel, Netlify, Cloudflare Pages, GitHub Pages) …3 findings
Why it is in this group
- The name "plan_app_move" says "move": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- High
The description refers to ".env.example".
What this check looks forMatched text
description: "...om package.json and variable NAMES from .env.example: never pass values or secrets. Read-onl..."
- High
The input schema at properties.env_names.description refers to ".env.example".
What this check looks forMatched text
inputSchema.properties.env_names.description: "Environment variable names only (from .env.example or the builder’s secrets list). Never v..."
- Warn
The server marks "plan_app_move" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "plan_app_move" says "move": a word for a change.
Description, as the server wrote it An ordered, repeat-safe plan for moving an app built in an AI app builder (Lovable, Bolt, Replit, Base44…) to the user’s own host (Vercel, Netlify, Cloudflare Pages, GitHub Pages) on their domain: export the code, keep the data and sign-ins, deploy and copy environment variables, update auth redirect URLs, add the domain, switch DNS (the builder’s records still live that must go, and the new ones, checked against public DNS), verify, then disconnect the builder. If you can read the project, pass dependency names from package.json and variable NAMES from .env.example: never pass values or secrets. Read-only: it changes nothing. Show the steps and ask before running any command; commands prompt for secret values themselves. Call again after the DNS change to confirm, or use plan_dns_setup.
Annotations the server declares
- title: Plan app move
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 10Claude Code: ask
brand_checkCheck whether a name is free as a handle on GitHub, npm, PyPI, crates.io and YouTube, with links to check X, Instagram and TikTok by hand, plus links to the USPTO and WIPO trademar…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check whether a name is free as a handle on GitHub, npm, PyPI, crates.io and YouTube, with links to check X, Instagram and TikTok by hand, plus links to the USPTO and WIPO trademark databases. Not legal advice.
Annotations the server declares
- title: Brand check a name
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
check_domainLive availability and price comparison for one exact domain (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Live availability and price comparison for one exact domain (e.g. "acme.io") across registrars. Returns per-registrar registration, renewal and transfer prices, premium status, and a recommendation based on 2-year total cost.
Annotations the server declares
- title: Check a domain
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
check_name_across_tldsCheck one name (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check one name (e.g. "acme") across several TLDs at once and return availability plus the best 2-year price for each. Defaults to .com, .net, .io, .ai, .dev, .app. Max 8 TLDs per call.
Annotations the server declares
- title: Check a name across TLDs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
check_renewalsFor domains the user already owns (up to 20): current registrar, expiry date, renewal price, and the cheapest registrar to transfer to, with the two-year saving.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it For domains the user already owns (up to 20): current registrar, expiry date, renewal price, and the cheapest registrar to transfer to, with the two-year saving. Registrar and expiry come from the public registry (RDAP); some TLDs such as .io have no RDAP. Suggests a free email reminder service at tldmath.com/watch.
Annotations the server declares
- title: Check renewals
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
ownership_cardWhich companies a domain depends on, from public records only: registrar with expiry and renewal price (registry RDAP), DNS host (nameservers), website host (A/CNAME and builder ve…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Which companies a domain depends on, from public records only: registrar with expiry and renewal price (registry RDAP), DNS host (nameservers), website host (A/CNAME and builder verification records), inbox (MX), and services that send mail as the domain (SPF includes, DKIM and bounce records), plus the DMARC policy. Each line shows its evidence. Use for handoffs (“which accounts do I open when it breaks?”), before moving hosts, or to audit a setup. Read-only, no sign-in.
Annotations the server declares
- title: Ownership card
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
plan_dns_setupThe DNS records a domain needs for a website host or AI app builder (Lovable, Bolt, v0, Replit, Base44, Framer, Webflow, Bubble), an inbox provider, and/or the service an app sends…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The DNS records a domain needs for a website host or AI app builder (Lovable, Bolt, v0, Replit, Base44, Framer, Webflow, Bubble), an inbox provider, and/or the service an app sends email through (SPF, DKIM, DMARC), each checked against live public DNS (in place, missing, or needs change), plus where the domain’s DNS is hosted and records to remove. SPF records from different providers are merged into one. Read-only: it never changes DNS. Use after the user buys a domain, or when their site or email on a custom domain isn’t working.
Annotations the server declares
- title: Plan DNS setup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
plan_launch_stepsThe DNS plan for a domain (website host or AI app builder, inbox, app-email service) as ordered, repeat-safe steps with commands the user’s own tools can run: Vercel CLI, Cloudflar…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The DNS plan for a domain (website host or AI app builder, inbox, app-email service) as ordered, repeat-safe steps with commands the user’s own tools can run: Vercel CLI, Cloudflare’s API with a token from the CLOUDFLARE_API_TOKEN environment variable, Resend’s API with RESEND_API_KEY; a manual list for other DNS hosts. Only records not yet in place get a command, so call it again after each change. Read-only: TLDMath runs nothing. Follow the guardrails in the result: show each change and ask first, never ask for keys in the chat, no deletes without the user naming the record.
Annotations the server declares
- title: Launch steps
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
recommend_namesGiven a short project description, recommend 3-5 TLDs (best fit first, with reasons) and 10 brandable names, each screened for availability on the top 3 TLDs (or up to 3 the user p…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Given a short project description, recommend 3-5 TLDs (best fit first, with reasons) and 10 brandable names, each screened for availability on the top 3 TLDs (or up to 3 the user picks) with the cheapest standard 2-year cost. Optional: a naming style, a word every name must contain (anywhere, at the start or at the end), and a maximum length. Nothing is stored. Run check_domain on a pick for live per-registrar prices.
Annotations the server declares
- title: Recommend names and TLDs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
taken_domain_optionsFor a domain someone else owns: its registrar and expiry, where it is in the expiry-to-release cycle (active, expiring soon, expired, redemption, pending delete) with an estimated …No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it For a domain someone else owns: its registrar and expiry, where it is in the expiry-to-release cycle (active, expiring soon, expired, redemption, pending delete) with an estimated drop window, whether it is parked at a marketplace such as Afternic or Sedo (so possibly for sale), and backorder links. Also points to free email alerts at tldmath.com/watch for when it nears expiry or drops.
Annotations the server declares
- title: Options for a taken domain
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tld_price_changesAnnounced registry (wholesale) price increases, upcoming and from the past year, plus changes to registrar standard prices seen in TLDMath’s daily checks.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Announced registry (wholesale) price increases, upcoming and from the past year, plus changes to registrar standard prices seen in TLDMath’s daily checks. Use for "is .com going up?" or "should I renew early?". Optionally filter by TLD.
Annotations the server declares
- title: Domain price changes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 4Claude Code: allow
compare_app_emailServices an app sends email through (sign-in links, password resets, receipts) ranked by two-year cost at a monthly volume, with free-tier daily and monthly caps and overage prices…No findings
Why it is in this group
- The name "compare_app_email" says "compare": a word for reading.
Description, as the server wrote it Services an app sends email through (sign-in links, password resets, receipts) ranked by two-year cost at a monthly volume, with free-tier daily and monthly caps and overage prices. Prices are curated from each provider’s pricing page with a date. Follow with plan_dns_setup (sender) for the SPF, DKIM and DMARC records.
Annotations the server declares
- title: Compare transactional email
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
compare_email_hostingCustom-domain email providers ranked by two-year cost for a number of mailboxes: free forwarding (Cloudflare, ImprovMX), cheap mailboxes (Purelymail, Zoho, Migadu, iCloud+, Nameche…No findings
Why it is in this group
- The name "compare_email_hosting" says "compare": a word for reading.
Description, as the server wrote it Custom-domain email providers ranked by two-year cost for a number of mailboxes: free forwarding (Cloudflare, ImprovMX), cheap mailboxes (Purelymail, Zoho, Migadu, iCloud+, Namecheap, Hostinger), office suites (Google Workspace, Microsoft 365, Zoho Workplace) and encrypted options (Proton). Includes intro-price traps and per-user vs flat pricing. Prices are curated from each provider’s pricing page with a date.
Annotations the server declares
- title: Compare email hosting
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
compare_tld_pricesStandard (non-premium) prices for one TLD across registrars, refreshed daily, sorted by 2-year cost.No findings
Why it is in this group
- The name "compare_tld_prices" says "compare": a word for reading.
Description, as the server wrote it Standard (non-premium) prices for one TLD across registrars, refreshed daily, sorted by 2-year cost. Use for general questions like "how much is a .io domain"; use check_domain for a specific name.
Annotations the server declares
- title: Compare TLD prices
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_supported_tldsTLDs with daily price tables, and the registrars TLDMath queries live.No findings
Why it is in this group
- The name "list_supported_tlds" says "list": a word for reading.
Description, as the server wrote it TLDs with daily price tables, and the registrars TLDMath queries live.
Annotations the server declares
- title: List supported TLDs
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.14.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http tldmath https://www.tldmath.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tldmath__compare_tld_prices",
"mcp__tldmath__compare_email_hosting",
"mcp__tldmath__compare_app_email",
"mcp__tldmath__list_supported_tlds"
],
"ask": [
"mcp__tldmath__check_domain",
"mcp__tldmath__check_name_across_tlds",
"mcp__tldmath__recommend_names",
"mcp__tldmath__brand_check",
"mcp__tldmath__check_renewals",
"mcp__tldmath__taken_domain_options",
"mcp__tldmath__tld_price_changes",
"mcp__tldmath__plan_dns_setup",
"mcp__tldmath__plan_launch_steps",
"mcp__tldmath__ownership_card",
"mcp__tldmath__plan_app_move"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tldmath. Review it before you use it.