@hofmeister/godaddy-mcp
Provides tools for managing GoDaddy domains, including listing and retrieving domain details, renewing domains, managing DNS records, checking domain availability, getting registration quotes, registering domains, and setting nameservers via the GoDaddy Domains API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@hofmeister/godaddy-mcpCheck if example.com is available and show the price."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@hofmeister/godaddy-mcp
Model Context Protocol (MCP) server for the GoDaddy Domains API. Exposes domain listing, DNS management, availability search, and domain registration as MCP tools — for use with Claude Desktop, opencode, Cursor, or any other MCP client.
Published to GitHub Packages.
Features
Tool | What it does |
| List domains owned by the account (status, expiration, auto-renew, privacy, transfer lock). Filters by status, lifecycle group, expiration date, and update time, with cursor pagination. |
| Full detail for one domain, including |
| Renew a domain for 1–10 years (v1 API). Charges the account. |
| DNS records for a zone, filterable by type and name; returns the |
| Add an A/AAAA/CNAME/MX/TXT/NS/SRV/CAA record. |
| Fully replace a record by |
| Delete a record by |
| Availability + per-term pricing for one or many domains (cached |
| Available-name suggestions from a keyword query. |
| Lock a registration price ( |
| Execute a quote with consent. Charges the account. Polls until the registration completes. |
| Replace the authoritative nameservers (2–13). Polls the registry operation. |
Registration is deliberately two-step: get_registration_quote returns the price and the legal agreements to review, and register_domain only runs with the quoteToken and accepted agreementTypes from that quote.
Related MCP server: domain-checker
Prerequisites
Node.js 20+
A GoDaddy account (read operations work on any account; registration/renewal additionally need a payment method on file and a complete registrant contact)
A Personal Access Token (PAT) — see below
How to get a GoDaddy PAT
Sign in at GoDaddy, then open the Personal Access Token dashboard (you can also get there from the GoDaddy dashboard via Developer Tools → API Tokens, or by visiting the developer docs).
Click Create token (or the equivalent "New token" button), give it a name (e.g.
mcp-server), and set an expiry if you like (optional).Select the scopes the server needs:
Scope
Required for
domains.domain:readlist_domains,get_domain,list_dns_records,check_domain_availability,suggest_domainsdomains.dns:updateadd_dns_record,update_dns_record,delete_dns_recorddomains.domain:createget_registration_quote,register_domaindomains.nameserver:updateset_nameserversGranting all four is fine — the server only calls what you ask it to.
Create the token and copy it immediately — GoDaddy shows it only once.
Put it somewhere safe. It is a secret, like a password: it gives whoever holds it programmatic control of your domains.
Account profile gotcha: registration quotes resolve the registrant contact from your account profile. If any contact field (e.g. the city name) contains non-ASCII characters, GoDaddy rejects quotes with
422 VALIDATION_ERROR— make the fields plain ASCII.
Legacy API key/secret (sso-key) pairs are not supported. They are deprecated, cannot access the v3 registration/availability APIs, and the API will drop them.
Installation
The repository is public, so no GitHub tokens are needed — npx clones, builds, and runs the server for you:
npx -y github:hofmeister/godaddy-mcpThe first run takes about a minute (clone + npm install + build); afterwards npx serves it from its cache (~/.npm/_npx) and starts in seconds. GODADDY_PAT (see Setup) is the only secret involved.
Pin a version:
npx -y github:hofmeister/godaddy-mcp#v0.1.0(once release tags exist).Stale cache: npx caches git dependencies; if an update doesn't show up, run
npm cache clean --forceor use the pinned tag.
Alternatives
From source (development):
git clone https://github.com/hofmeister/godaddy-mcp, thennpm install && npm run build— the entry point isdist/index.js.GitHub Packages: after the first release,
@hofmeister/godaddy-mcpis available on GitHub Packages. It requires a read-only GitHub token in.npmrc(a GitHub-registry requirement, not a repository one), so prefer npx.
Setup
export GODADDY_PAT="your-personal-access-token"Environment variables:
Variable | Required | Description |
| yes | GoDaddy Personal Access Token (Bearer). |
| no | API base URL override (default |
If GODADDY_PAT is missing, the server still starts; tool calls return a clear error telling you to set it.
Verify without an MCP client
Both commands run in a source checkout:
GODADDY_PAT=... npm run smoke # read-only API smoke test
npm test # unit tests (no network, no credentials needed)MCP client configuration
The server speaks MCP over stdio; each client launches it with npx -y github:hofmeister/godaddy-mcp, which handles installing and building automatically. The first launch takes about a minute while npx fetches the repository — that is normal, do not kill the client.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"godaddy": {
"command": "npx",
"args": ["-y", "github:hofmeister/godaddy-mcp"],
"env": {
"GODADDY_PAT": "your-personal-access-token"
}
}
}
}opencode (opencode.json)
{
"mcp": {
"godaddy": {
"type": "local",
"command": ["npx", "-y", "github:hofmeister/godaddy-mcp"],
"enabled": true,
"environment": {
"GODADDY_PAT": "your-personal-access-token"
}
}
}
}Cursor (.cursor/mcp.json)
{
"mcpServers": {
"godaddy": {
"command": "npx",
"args": ["-y", "github:hofmeister/godaddy-mcp"],
"env": { "GODADDY_PAT": "your-personal-access-token" }
}
}
}PATH note: desktop apps inherit a minimal PATH. If the client cannot find
npx(e.g. Node is managed by nvm), use its absolute path ascommand(such as/opt/homebrew/bin/npx) — or fall back tonodewith the absolute path todist/index.jsfrom a source install.
Security note: the PAT grants programmatic control of your domains. Store it in the MCP client's env config (or a secrets manager), never in files that get committed.
Development
npm install # dependencies
npm run build # compile to dist/
npm test # vitest unit tests (mocked API, no credentials needed)
npm run dev # run the server from source via tsx
npm run smoke # read-only live API check (needs GODADDY_PAT)Releasing
Releases are cut by the Release workflow (.github/workflows/release.yml), which publishes to GitHub Packages and cuts a GitHub Release in one go.
Triggering a release: run the Release workflow from the Actions tab and pick patch, minor, or major. It works off master: the tests run first, then the new version is written to package.json, committed and tagged (vX.Y.Z), and the package is published from that commit. The version counts up from the newest vX.Y.Z tag; with no tags yet, the version already in package.json is released as it stands and the choice is ignored.
Pushing a tag vX.Y.Z that matches the version in package.json also releases the commit the tag points at.
The versioning logic lives in scripts/version.mjs (no dependencies, unit-testable):
node scripts/version.mjs --bump patch # print the next version
node scripts/version.mjs --bump minor --write # and write it to package.jsonError handling
All GoDaddy API errors are surfaced to the LLM with the HTTP status, the GoDaddy code, and per-field details (e.g. 422 QUOTE_MISMATCH, 409 dns_record_not_mutable on GoDaddy-managed SOA/NS records), so agents can correct themselves. Rate limits (429) report the Retry-After seconds.
Notes & limits
Prices are returned by GoDaddy in cents and are converted to whole currency units in tool output.
register_domainwaits up to ~90s for the async registration to reach a terminal state; if it's still executing it reportsEXECUTING— verify later withget_domain.GoDaddy rate limits API calls per credential (60 requests/minute); avoid hammering the API from tools.
The legacy key/secret (
sso-key) credentials are not supported: they are deprecated and cannot access the v3 registration/availability APIs.
This project was written by Amber — a model by 2ba.ai.
Available Tools
12 toolsadd_dns_recordA
Add a DNS record to a domain's zone without touching existing records. Record name is relative to the zone apex (@ = bare domain, www = www.example.com, * = wildcard). TTL 600-86400 seconds. MX and SRV require priority (SRV also port and weight); CNAME cannot be set at the apex; SOA and the apex NS set are managed by GoDaddy. The record is created synchronously and the response includes its recordId.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | CAA property tag: issue, issuewild, or iodef. | |
| ttl | Yes | Time-to-live in seconds (600-86400). | |
| data | Yes | Record value. Type-specific: IPv4 address for A, IPv6 for AAAA, hostname for CNAME and MX, text for TXT, target host for SRV, issuer for CAA. | |
| flag | No | CAA flag: 0 non-critical, 128 critical. | |
| name | Yes | Record name relative to the zone apex: use @ for the bare domain, www for www.example.com, or * for a wildcard. Never include the domain itself (e.g. not www.example.com). | |
| port | No | Port for SRV records. | |
| type | Yes | DNS record type. | |
| domain | Yes | Domain whose zone to modify, e.g. example.com. | |
| weight | No | Weight for SRV records with equal priority. | |
| service | No | Service label for SRV records, e.g. _http. | |
| priority | No | Priority for MX and SRV records; lower is preferred. Required for MX and SRV. | |
| protocol | No | Protocol label for SRV records, e.g. _tcp. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (openWorldHint, destructiveHint: false), the description discloses that creation is synchronous and that the response includes a recordId, plus domain-specific constraints like CNAME being prohibited at the apex and SOA/apex NS being managed by GoDaddy. This gives agents realistic expectations of side effects and edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four focused sentences: purpose and non-destructive guarantee first, then naming rules, then type-specific requirements, then synchronization/response. Each sentence encodes distinct useful information without fluff or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters and no output schema, the description covers the critical operational details: record-name relativity, TTL bounds, type-specific required fields, unsupported record placements, managed records, and the response including recordId. An agent has enough to call the tool correctly and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds high-value semantics: it defines the relative-name syntax, explains that MX/SRV require priority (SRV also port/weight), and notes CNAME cannot be set at the apex. This goes well beyond the individual property descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Add a DNS record to a domain's zone') and immediately adds a distinguishing scope ('without touching existing records'), which separates it from update/delete/list siblings. It also explains the important naming convention ('@ = bare domain, www = www.example.com, * = wildcard'), leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by stating the tool adds new records without modifying existing ones, which implies its appropriate use case. It does not explicitly name sibling tools like update_dns_record or delete_dns_record as alternatives or state when to choose them, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_domain_availabilityARead-only
Check whether one or more domains are available for registration, with indicative per-term pricing (registration and renewal prices, converted from cents to whole currency units). Read-only; no payment method required. Use ACCURACY for a live registry check.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | Domain names to check, e.g. ["mysite.com", "mysite.net"]. | |
| iscCode | No | ISC discount code for pricing context. | |
| optimizeFor | No | SPEED (default) uses cached data; ACCURACY forces a live registry check with higher latency. Availability is re-verified at quote time either way. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares the read-only nature, and the description reinforces it with 'Read-only; no payment method required.' It adds value beyond annotations by disclosing that pricing is indicative, per-term (registration/renewal), and converted from cents to whole currency units. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the primary function first, then add the read-only/payment guard, then the accuracy tip. Every sentence adds a distinct fact and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only check with 3 well-documented parameters and no output schema, the description conveys the core result domain: availability plus registration/renewal pricing in whole units. It does not specify the exact response structure, but the schema covers optimizeFor behavior and the tool is simple enough that the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains domains, iscCode, and optimizeFor (including the SPEED/ACCURACY trade-off). The description adds little beyond 'one or more domains' and a pointer to ACCURACY for a live check, so it mostly relies on the schema's detailed property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Check') and resource ('whether one or more domains are available for registration'), making the primary function concrete. It also states 'Read-only; no payment method required,' which implicitly distinguishes it from registration, quoting, and suggestion siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it is a read-only pre-registration check with no payment required, and it advises 'Use ACCURACY for a live registry check.' However, it never explicitly names alternatives or states when to prefer this tool over list_domains, suggest_domains, or get_registration_quote, so routing between tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordADestructive
Permanently delete one DNS record (identified by recordId from list_dns_records). Irreversible — verify the record first. GoDaddy-managed SOA and apex NS records cannot be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain whose zone to modify, e.g. example.com. | |
| recordId | Yes | recordId of the record to delete (from list_dns_records). Deletion is irreversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false, but the description adds valuable context beyond them: the operation is permanent, verification is advised, and certain managed record types cannot be deleted. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core purpose is front-loaded, followed by the irreversible warning and the managed-record exception. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param destructive tool, the description is complete: it states what is deleted, where the identifier comes from, why caution is needed, and what cannot be deleted. The annotations cover safety semantics, and no output schema is expected, so the absence of return-value detail is not a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters with descriptions, including that recordId comes from list_dns_records and that deletion is irreversible. The tool description largely repeats that schema information rather than adding new parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Permanently delete one DNS record'. It also identifies the source of the recordId via list_dns_records, which distinguishes this tool from add_dns_record, update_dns_record, and list_dns_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage guidance: verify the record first and understand that deletion is irreversible. It also excludes GoDaddy-managed SOA and apex NS records. However, it does not explicitly name update_dns_record as the alternative when the intent is to modify rather than delete, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domainARead-only
Get full details for one domain: lifecycle status, expiration (expiresAt and renewBy), auto-renew, WHOIS privacy, transfer lock, and current nameservers. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Fully-qualified domain name, e.g. example.com (punycode A-label form for internationalized domains). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, and the description reinforces this with 'Read-only.' It adds modest context by listing the returned fields, which is helpful because there is no output schema, but it does not disclose behaviors beyond that, such as behavior for nonexistent domains or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence that front-loads the core action and immediately lists the valuable return fields. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the key return fields. The single parameter is fully covered by the schema. It is complete enough for an agent to know what this tool provides, though it could briefly distinguish itself from check_domain_availability or list_domains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already fully documented in the schema. The description adds no additional parameter meaning, but none is needed given the schema's thorough explanation of the 'domain' field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('full details for one domain') and enumerates the exact data fields returned (lifecycle status, expiration, auto-renew, WHOIS privacy, transfer lock, nameservers). This clearly distinguishes it from list_domains and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for one domain' gives a clear context: use this when you need detail on a specific domain rather than a list of domains. It does not explicitly name alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registration_quoteARead-only
Get a price quote for registering a domain. This locks the price to a quoteToken for a short window and returns the required ICANN agreements that must be reviewed before registering. Read-only and does NOT charge the account. Step 1 of 2 of registration; step 2 is register_domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to register, e.g. example.com (must be available). | |
| period | No | Registration period in years (default 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations provide readOnlyHint=true, the description adds meaningful behavioral details: it locks the price to a quoteToken for a short window, returns required ICANN agreements, and explicitly states it does not charge the account. This is valuable context beyond what the annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, then explains the key side effect and workflow position, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description indicates the key returned artifacts (quoteToken and ICANN agreements) and explains the locking behavior and no-charge guarantee. For a two-parameter, single-required-field tool, this is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (domain and period) adequately. The description adds minimal parameter-level meaning beyond the context of registering a domain, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get a price quote for registering a domain.' It clearly distinguishes itself from register_domain by explicitly identifying this as Step 1 of 2, so an agent can tell it apart from its closest sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames when to use the tool: as Step 1 of a two-step registration flow, with register_domain named as Step 2. It also clarifies that the tool is read-only and does not charge the account, which signals that it should be used before any actual registration mutation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_recordsARead-only
List DNS records for a domain hosted on GoDaddy's authoritative nameservers. Filter by type and/or name (@ = zone apex). Records include the recordId needed to update or delete them. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter to records with this host name (e.g. www, _acme-challenge, or @ for apex). | |
| page | No | Page number (1-based, default 1). | |
| type | No | Filter to one record type. | |
| domain | Yes | Domain whose zone to read, e.g. example.com. | |
| pageSize | No | Records per page (1-100, default 25). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only, and the description adds context beyond that: records come from GoDaddy's authoritative nameservers, support type/name filtering, and include the recordId needed for mutations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the main purpose, then add the most decision-relevant details: filtering and recordId. No filler beyond the acceptable one-word 'Read-only' summary, which reinforces the safety profile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a list operation with pagination parameters already documented in the schema, and the description covers the key return value (recordId) and the filtering model. There is no output schema, so a bit more detail about the response shape/pagination would help, but the existing details are enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions, so the baseline is 3. The description mentions filtering by type and/or name and explains @ as zone apex, but this largely mirrors the schema and adds no deeper parameter semantics such as precedence or mutually exclusive combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List DNS records'), a resource ('domain hosted on GoDaddy'), and a filtering capability, which distinguishes it from sibling tools like list_domains, add_dns_record, and update_dns_record. It also conveys that the result includes recordId for later updates/deletes, reinforcing its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when the tool is useful by noting the recordId is needed to update or delete records and by stating filtering options. It does not explicitly preclude alternatives, but the read-only framing plus sibling context make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsARead-only
List domains owned by the GoDaddy account, with registry status, expiration dates, auto-renew flag, privacy, and transfer lock. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Max domains per page (1-200, default 100). | |
| statuses | No | Filter to these exact lifecycle statuses (e.g. ACTIVE, EXPIRED, PENDING_TRANSFER). Combined with OR. | |
| pageToken | No | Opaque cursor from a previous response's next link. | |
| updatedAfter | No | Only domains last updated after this RFC 3339 timestamp (exclusive). | |
| expiresBefore | No | Only domains expiring before this RFC 3339 timestamp (exclusive). | |
| lifecycleGroups | No | Coarse filter to lifecycle groups (e.g. REGISTERED, PENDING, EXPIRED, CANCELLED). Cannot be combined with statuses. | |
| pageTokenDirection | No | Token direction when pageToken is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true, and the description reinforces this with 'Read-only.' It also adds the response field list and account scope, providing some extra context. However, it does not disclose pagination behavior, result ordering, or potential open-world breadth beyond the openWorldHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, immediately front-loaded with the action and resource, followed by a concise list of returned fields. No fluff or redundant explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple listing tool, and the parameter schema covers pagination-related fields. However, with no output schema, the description could have mentioned pagination semantics (e.g., default page, how to use the token) or result sorting to be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have schema descriptions covering 100% of them, so the schema does the heavy lifting. The tool description does not add parameter-specific meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('domains owned by the GoDaddy account'), and enumerates the returned attributes. This clearly distinguishes the tool from siblings like get_domain (single domain) and list_dns_records (DNS records).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: list all account-owned domains with details. However, it does not explicitly mention when to prefer this over get_domain (single domain lookup) or other sibling tools. The guidance is sufficient but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_domainADestructiveIdempotent
Register a domain using a quote from get_registration_quote. CHARGES THE ACCOUNT's billing method and is not reversible — only call it after the user has explicitly confirmed the price and agreed to the listed agreements. Requires a payment method and registrant contact on the account. The call is accepted asynchronously and this tool waits for it to finish (up to ~90s).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to register. Must exactly match the domain in the quote. | |
| period | Yes | Registration period in years. Must match the quoted period or the API rejects with QUOTE_MISMATCH. | |
| agreedAt | No | ISO 8601 timestamp of when the user actually confirmed the purchase (default: now). Use the real consent time, not a synthetic one. | |
| quoteToken | Yes | quoteToken from get_registration_quote. The price is locked to this token; if it expires, get a new quote. | |
| agreementTypes | Yes | The agreementType values from the quote's requiredAgreements. Do not hardcode; they depend on the TLD. | |
| idempotencyKey | No | Idempotency key for this execution (default: a generated UUID). Reuse it when retrying after a timeout. | |
| acknowledgedFees | No | Required only when the quote's fees array is non-empty (e.g. premium domains). Must match the quote's fees verbatim. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and idempotent behavior, but the description adds critical non-obvious details: it charges the billing method, is irreversible, requires explicit user consent, and runs asynchronously with a ~90s wait. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all essential: the billing action and irreversibility are front-loaded, followed by prerequisites and async behavior. No redundant or filler content; every sentence adds decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, side-effect-heavy tool with 7 parameters and no output schema, the description covers the critical risks, prerequisites, and execution behavior. It does not describe the response shape, but the async acceptance model is disclosed, which is the most important contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter thoroughly. The description adds some useful context around the quote flow and price locking, but does not need to compensate for missing schema metadata. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Register a domain') with a clear resource and prerequisite source ('using a quote from get_registration_quote'). It also clearly distinguishes this from related sibling tools by highlighting that it charges the account, is irreversible, and is the execution step after quoting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage conditions: only after explicit user confirmation, requires a payment method and registrant contact, and should follow get_registration_quote. It does not name sibling alternatives explicitly, but the context makes the decision boundary clear for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_domainADestructive
Renew a domain for the given number of years (default 1). CHARGES THE ACCOUNT's billing method and cannot be undone. Confirm the domain and period with the user first. The account must have a valid billing method on file.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Fully-qualified domain name, e.g. example.com (punycode A-label form for internationalized domains). | |
| period | No | Years to renew (default 1). Charges the account's billing method. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description explicitly discloses that the action 'CHARGES THE ACCOUNT's billing method and cannot be undone.' It also gives a prerequisite: 'The account must have a valid billing method on file.' This adds meaningful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four concise sentences with no filler. It front-loads the action, then covers costs, irreversibility, confirmation, and prerequisites in a logical order. Every sentence carries necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with only two parameters, the description covers the essential prerequisites, billing impact, irreversibility, and confirmation requirement. It does not describe return values, but with no output schema and a simple renewal action this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both domain and period well. The description restates the default period of 1 and the billing effect, but adds little new parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource, 'Renew a domain', which clearly identifies the operation and distinguishes it from siblings like register_domain and get_domain. Adding 'for the given number of years' further clarifies the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: renewing an existing domain and requiring user confirmation before the renewal. It doesn't explicitly mention alternatives such as register_domain for new domains, but the prerequisites and confirmation requirement make the appropriate usage reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_nameserversADestructive
Replace the authoritative nameservers for a domain (2-13 hostnames). The registry change propagates asynchronously; this tool waits until it completes or reports that it is still in progress. WARNING: switching nameservers moves DNS off GoDaddy, so records managed with the DNS tools will no longer be served by GoDaddy.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain whose authoritative nameservers to replace. | |
| nameservers | Yes | New authoritative nameservers, e.g. ["ns1.example-dns.com", "ns2.example-dns.com"]. 2-13 hostnames. Replaces the full set; DNS managed via list/add/update_dns_record will stop being served after the cutover. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses that propagation is asynchronous and that the tool waits or reports in-progress status. It also warns that moving nameservers off GoDaddy will stop serving existing DNS records, which is essential behavioral context for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: purpose, async behavior, and critical warning are all front-loaded and concise. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with a clear schema and no output schema, the description covers purpose, behavior, blocking semantics, and consequences. An agent has enough to invoke it correctly and set expectations for the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters, including the 2-13 count constraint and full-set replacement semantics. The description reinforces these points but does not add meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action—"Replace the authoritative nameservers for a domain"—with a concrete resource and count constraint. It implicitly distinguishes itself from the sibling DNS record tools by warning that those records will no longer be served after the change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this tool changes delegation at the registry level, not individual records. It warns against use when GoDaddy DNS management is still desired, implicitly differentiating it from update_dns_record and related siblings, though it does not name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_domainsARead-only
Get available domain name suggestions for a keyword or natural-language query, with indicative pricing. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| tlds | No | TLDs to include, e.g. ["com", "net", "shop"]. | |
| query | Yes | Natural-language query or keywords, e.g. "sunrise bakery". | |
| sources | No | Suggestion strategies: EXTENSION (vary TLD), KEYWORD_SPIN (rotate keywords), CC_TLD (country-code TLDs), PREMIUM (include premium names). | |
| pageSize | No | Number of suggestions (1-50, default 10). | |
| lengthMax | No | Maximum second-level label length. | |
| lengthMin | No | Minimum second-level label length. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool read-only, and the description restates 'Read-only.' It adds some useful behavior: results are 'available' suggestions with 'indicative pricing' rather than guaranteed registrations. However, it doesn't disclose suggestion-source behavior, ordering, or whether results are exhaustive, so context beyond annotations is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the core purpose, but the standalone 'Read-only.' sentence repeats the readOnlyHint annotation and does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read-only tool with no output schema, the description gives a clear one-line purpose and a hint at pricing in the response, but it omits output shape and does not route users away from semantically adjacent tools like check_domain_availability. Adequate, but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema carries detailed meanings for query, tlds, sources, pageSize, lengthMin, and lengthMax. The description only restates the 'keyword or natural-language query' concept and adds no parameter-level guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Get available domain name suggestions for a keyword or natural-language query.' This clearly distinguishes it from siblings like check_domain_availability (checking a specific domain) and list_domains (listing owned domains).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for query-driven suggestion generation, but it never states when to prefer it over sibling tools such as check_domain_availability, nor does it mention any exclusions. Agents must infer the boundary from the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_recordADestructive
Replace an existing DNS record (identified by recordId from list_dns_records). This is a FULL replacement: name, type, data, and ttl must all be supplied; omitted fields are not preserved. GoDaddy-managed SOA and apex NS records cannot be replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | CAA property tag: issue, issuewild, or iodef. | |
| ttl | Yes | Time-to-live in seconds (600-86400). | |
| data | Yes | Record value. Type-specific: IPv4 address for A, IPv6 for AAAA, hostname for CNAME and MX, text for TXT, target host for SRV, issuer for CAA. | |
| flag | No | CAA flag: 0 non-critical, 128 critical. | |
| name | Yes | Record name relative to the zone apex: use @ for the bare domain, www for www.example.com, or * for a wildcard. Never include the domain itself (e.g. not www.example.com). | |
| port | No | Port for SRV records. | |
| type | Yes | DNS record type. | |
| domain | Yes | Domain whose zone to modify, e.g. example.com. | |
| weight | No | Weight for SRV records with equal priority. | |
| service | No | Service label for SRV records, e.g. _http. | |
| priority | No | Priority for MX and SRV records; lower is preferred. Required for MX and SRV. | |
| protocol | No | Protocol label for SRV records, e.g. _tcp. | |
| recordId | Yes | recordId of the existing record to replace (from list_dns_records). PUT replaces the whole record, so all fields are required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructiveness, and the description adds a crucial behavioral detail: this is a FULL replacement where omitted fields are not preserved. It also discloses protected record types (GoDaddy-managed SOA and apex NS) that cannot be replaced, which is exactly the kind of behavioral context an agent needs before invoking a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The primary action is front-loaded, the full-replacement requirement is stated next, and the protected-record restriction closes the description. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive annotation and rich input schema, the description covers the essential operational context: how to identify the target record, the all-or-nothing replacement semantics, and the records that cannot be touched. No output schema exists, but the description does not need to detail return values for a PUT mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 13 parameters with type-specific meanings. The description reinforces that name, type, data, and ttl must all be supplied, which is redundant with the required array. It adds minimal semantic value beyond the schema, though the 'omitted fields are not preserved' note is mildly informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Replace'), identifies the resource ('existing DNS record'), and pins the target via 'recordId from list_dns_records'. It clearly distinguishes this tool from add_dns_record and delete_dns_record by framing it as a full replacement operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for replacing an existing record, and the sibling list makes alternatives obvious. It explicitly excludes GoDaddy-managed SOA and apex NS records, but does not explicitly tell the agent when to prefer add_dns_record or delete_dns_record instead. The usage context is clear, but exclusions are partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
add_dns_record - First observed
check_domain_availability - First observed
delete_dns_record - First observed
get_domain - First observed
get_registration_quote - First observed
list_dns_records - First observed
list_domains - First observed
register_domain - First observed
renew_domain - First observed
set_nameservers - First observed
suggest_domains - First observed
update_dns_record
TDQS
Each tool targets a distinct resource and action: domain listing/detail, domain renewal, DNS record CRUD, availability/suggestions, registration quote/actual registration, and nameserver updates. Even overlapping concepts like check_domain_availability and suggest_domains are separated by whether the input is a specific domain or a keyword query.
All tools follow a consistent snake_case verb_noun pattern: list_domains, add_dns_record, renew_domain, register_domain, set_nameservers. Verbs clearly indicate the action and nouns clearly indicate the resource, with no mixed conventions or vague generic names.
12 tools is well-scoped for a domain-management server. Each tool covers a meaningful operation without redundancy, and the set is neither bloated nor too thin.
The set covers domain lookup, renewal, registration, DNS record CRUD, and nameserver management, which covers the main workflows. Minor gaps exist: domain flags like auto-renew, WHOIS privacy, and transfer lock are visible in list_domains/get_domain but cannot be updated via a tool.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
Custom domains for SaaS and AI agents: search, register, connect DNS, and issue HTTPS over MCP.
Domains MCP — domain registration lookup + availability search over live
Discover MCP endpoints for real-world entities by resolving business domains.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides integration with the Namecheap API for domain management operations, including domain listing, availability checks, and nameserver configuration. It allows users to interact with their Namecheap account through natural language commands in MCP-compatible clients.34519MIT
- AlicenseBqualityDmaintenanceEnables domain name checking and related services through a standardized MCP interface.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables domain registration lookup, availability checks, DNS record fetching, and IP/ASN resolution via RDAP and DNS-over-HTTPS through MCP.871Apache 2.0
- AlicenseAqualityCmaintenanceMCP server for managing GoDaddy DNS records. Enables listing, adding, replacing, and deleting DNS records, and checking domain availability via natural language.510MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hofmeister/godaddy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server