Skip to content

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.

Final · 1Changes · 102 high findings

15 tools: 1 do something that can't be undone, 10 change things and 4 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

2 high1 warn
  • The description refers to ".env.example".

    Matched text

    description: "...om package.json and variable NAMES from .env.example: never pass values or secrets. Read-onl..."

    What this check looks for
  • The input schema at properties.env_names.description refers to ".env.example".

    Matched text

    inputSchema.properties.env_names.description: "Environment variable names only (from .env.example or the builder’s secrets list). Never v..."

    What this check looks for
  • The server marks "plan_app_move" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "plan_app_move" says "move": a word for a change.

    What this check looks for

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".

      Matched text

      description: "...om package.json and variable NAMES from .env.example: never pass values or secrets. Read-onl..."

      What this check looks for
    • High

      The input schema at properties.env_names.description refers to ".env.example".

      Matched text

      inputSchema.properties.env_names.description: "Environment variable names only (from .env.example or the builder’s secrets list). Never v..."

      What this check looks for
    • Warn

      The server marks "plan_app_move" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "plan_app_move" says "move": a word for a change.

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.