Public leaderboard

Public assessment

mikusnuz/dynadot-mcp (dynadot-mcp)

dynadot-mcp · v1.3.0 · scanned

What changed in the harness

Selection accuracy 98→100, token cost up 10%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

19.6 / 30

19.6 out of 30
03Economics

13.9 / 20

13.9 out of 20
04Discoverability

11.9 / 20

11.9 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

63 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
register_domain
no_return_description
Register a new domain name for a duration of 1-10 years and return the registration result status. Requires the domain name and duration in years; optionally provide a registrant contact ID, a currency for payment, and a coupon code for a discount.
bulk_register_domains
no_return_description
Register up to 100 domains in a single call and return the registration status for each domain. Domains use default settings unless overridden; optionally provide a currency for payment and a coupon code for a discount.
get_domain_info
no_return_description
Return detailed information about a domain, including its expiry date, nameservers, WHOIS contacts, privacy status, and lock status. Use this to check a domain's current registration state before renewing or modifying it.
list_domains
name_restates_behavior no_return_description
Return a list of all domains in the Dynadot account with basic information such as domain name and status, so you can enumerate your portfolio and pick domains for renewal, DNS changes, or deletion.
renew_domain
name_restates_behavior no_return_description
Extend an existing domain registration by 1-10 years and return the renewal status. Set price_check to true to only retrieve the renewal price without renewing; optionally apply a coupon code for a discount.
delete_domain
name_restates_behavior no_return_description
Remove a domain during its grace period and return the deletion status. This action cannot be undone after the grace period expires, so only call it for domains you no longer want.
restore_domain
no_return_description
Restore a recently deleted domain from the redemption grace period and return the restoration status so the domain becomes active again for registration use.
push_domain
name_restates_behavior no_return_description
Transfer a domain to another Dynadot account using the recipient's push username and return the push status. Set unlock to true to unlock the domain first if it is currently locked.
get_dns
name_restates_behavior no_return_description
Return all DNS records configured for a domain, including A, AAAA, CNAME, MX, TXT, and SRV records and their subdomains, so you can review the domain's current DNS configuration before editing it.
set_dns
no_return_description
Set or append DNS records for a domain using Dynadot's DNS service and return the update status. Supports main records and up to 10 subdomains; pass Dynadot API3 set_dns2 parameters in the records map (e.g., main_record_type, main_record, subdomain0, sub_record_type0, sub_record0, ttl), and set add_dns_to_current_setting to '1' to append instead of overwrite.
set_nameservers
name_restates_behavior no_return_description
Point a domain at hosting DNS by setting its nameservers and return the update status. Accepts up to 13 nameserver hostnames (e.g., 'ns1.example.com').
get_nameservers
name_restates_behavior no_return_description
Return the nameservers currently configured for a domain, so you can verify where a domain's DNS is delegated before changing nameservers.
register_nameserver
name_restates_behavior no_return_description
Register a custom nameserver (glue record) by associating a hostname such as 'ns1.example.com' with an IP address and return the registration status, so delegated nameservers resolve correctly.
get_dnssec
name_restates_behavior no_return_description
Return the DNSSEC (Domain Name System Security Extensions) settings configured for a domain, so you can review its current security configuration before enabling or disabling DNSSEC.
add_nameserver
no_return_description
Add a new nameserver entry with the given hostname and IP address and return the result, so the domain can advertise additional nameservers.
set_nameserver_ip
no_return_description
Point an existing registered nameserver to a new IP address and return the update status, so DNS queries for that host resolve to the updated server.
delete_nameserver
no_return_description
Delete a registered nameserver by hostname, or delete all nameservers associated with a domain, and return the deletion status. Provide either host (exact nameserver) or domain (removes all of that domain's nameservers).
list_registered_nameservers
name_restates_behavior no_return_description
Return all registered (custom) nameservers in the account, so you can inspect glue records and identify hosts to update or delete.
create_contact
params_unexplained no_return_description
Create a new contact record for use with domain registrations and return the new contact ID. Required: name, email, phone_num (with country code, e.g., '+1.5551234567'), address1, city, state, zip_code, and country (e.g., 'US'). Optionally provide address2, organization (company name), and fax_num.
delete_contact
name_restates_behavior no_return_description
Remove a contact record that is not in use by any domain and return the deletion status. Use list_contacts to find the contact_id first.
list_contacts
no_return_description
Return all contacts in the account, or the details of a single contact when contact_id is provided. Use the returned contact_id values as the registrant_contact for register_domain.
set_contact_regional_setting
no_return_description
Configure the region-specific contact settings required by certain TLD registries (EU, Latvia, Lithuania) for a contact and return the update status. Select the region ('eu', 'lv', or 'lt') and pass the registry-required parameters as key-value pairs.
manage_cn_audit
no_return_description
Manage China (.cn) domain audit requests, which are required for .cn domain registration. Use action 'create' to start a new audit (passing the contact_id and audit parameters such as the required audit documents), or 'status' to check an existing one. Returns the audit status for 'status', and for 'create' returns confirmation with the new audit's details.
set_reseller_verification
name_restates_behavior params_unexplained no_return_description
Update the WHOIS verification status of a reseller contact to record whether the contact's identity has been verified for WHOIS display. Provide the contact_id of the reseller contact and the status value to apply (e.g., verified/unverified). Returns a confirmation that the verification status was set.
transfer_domain
name_restates_behavior no_return_description
Initiate an inbound domain transfer into your Dynadot account. Supply the domain name and the authorization/EPP code issued by the current registrar; optionally set registrant_contact to the contact ID to use as registrant and coupon for a discount. Returns confirmation and the transfer status once initiated.
cancel_transfer
name_restates_behavior no_return_description
Cancel a pending inbound domain transfer to stop it from completing into your Dynadot account. Pass the domain whose transfer should be cancelled. Returns a confirmation that the transfer was cancelled.
get_transfer_status
no_return_description
Check the current status of a domain transfer (e.g., pending, approved, rejected, cancelled) for the given domain. Returns the transfer status.
get_auth_code
no_return_description
Retrieve the transfer authorization (EPP) code for the given domain; this code is required to move the domain to another registrar. Optionally set new_code to generate a new code instead of the existing one, and unlock_for_transfer to automatically unlock the domain. Returns the authorization code, and indicates whether a new code was generated and the domain unlocked.
authorize_transfer_away
no_return_description
Approve an outgoing transfer of the given domain to the requesting registrar so the transfer can proceed. Returns a confirmation that the transfer away was authorized.
set_auth_code
params_unexplained no_return_description
Set the authorization/EPP code for the given domain; this code is used as the secret when transferring the domain to another registrar. Provide the domain and the auth_code to assign. Returns a confirmation that the code was set.
manage_domain_push
no_return_description
View or respond to incoming domain push requests from other Dynadot accounts. Use action 'list' to see pending requests, or 'accept'/'reject' with the push_id of a specific request to respond to it. For 'list', returns the pending push requests; for 'accept'/'reject', returns a confirmation of the outcome.
set_privacy
no_return_description
Set WHOIS privacy for the given domain to control how much registrant contact info is publicly visible: option 'full' hides all info, 'partial' hides some, and 'off' shows all. Returns a confirmation that privacy was set.
set_whois_contacts
name_restates_behavior params_unexplained no_return_description
Update the WHOIS contact information for the given domain by specifying contact IDs (saved contacts from your account) for the registrant, admin, technical, and/or billing roles; omitted roles are unchanged. Each contact_id must reference an existing contact. Returns a confirmation that the WHOIS contacts were updated.
set_forwarding
no_return_description
Configure URL forwarding for the given domain so visitors are redirected to url. By default uses a 301 (permanent) redirect; set is_temporary to use a 302 (temporary) redirect, or stealth to embed the target in an iframe with an optional stealth_title. Returns a confirmation that forwarding was configured.
set_renew_option
no_return_description
Set the auto-renewal behavior for the given domain: option 'auto' enables auto-renewal, 'donot' disables renewal, and 'reset' restores the default renewal setting. Returns a confirmation that the renewal option was updated.
lock_domain
no_return_description
Lock or unlock the given domain for transfer protection. Locking enables clientTransferProhibited status to prevent unauthorized transfers; use lock 'lock' to enable the transfer lock or 'unlock' to disable it (default 'lock'). Returns a confirmation of the new lock state.
set_domain_note
name_restates_behavior no_return_description
Attach a note to the given domain and/or move it into a folder to organize your domain list. Pass the note text and the target folder name or ID; either is optional. Returns a confirmation that the note/folder was updated.
set_parking
no_return_description
Enable domain parking for the given domain so it shows a placeholder page. Optionally set with_ads to show ads on the parking page. Returns a confirmation that parking was enabled.
set_hosting
name_restates_behavior no_return_description
Provision website hosting for the given domain using Dynadot's built-in hosting service. Select hosting_type 'advanced' or 'basic', and for 'advanced' optionally enable mobile_view for a mobile-optimized view. Returns a confirmation that hosting was configured.
set_email_forward
no_return_description
Configure email forwarding for the given domain so mail sent to it is handled as configured. Use params with forward_type 'forward' and keys username0/exist_email0 to route to existing mailboxes, or 'mx' with mx_host0/mx_priority0 to set MX records. Returns a confirmation that email forwarding was set.
clear_domain_setting
name_restates_behavior no_return_description
Remove a previously configured service setting from the given domain. Select the service to clear: 'forwarding', 'stealth', 'parking', 'hosting', 'dns', or 'email_forward'. Returns a confirmation that the setting was cleared.
create_folder
name_restates_behavior no_return_description
Create a new folder in your Dynadot account for organizing domains. Provide the folder_name for the new folder. Returns the new folder ID.
delete_folder
no_return_description
Delete the given folder from your Dynadot account. The folder must be empty (no domains assigned to it) or the deletion fails. Returns a confirmation that the folder was deleted.
list_folders
name_restates_behavior no_return_description
List folders in your Dynadot account, used to organize domains. Returns the account's folders with their IDs and names.
set_folder_settings
no_return_description
Apply default settings to the given folder so every domain inside it inherits them. Choose a setting_type from whois, ns, dns, dns2, forwarding, stealth, parking, hosting, email_forward, renew_option, or clear, and pass the Dynadot API parameters for that type via params. Returns a confirmation that the folder settings were applied.
rename_folder
name_restates_behavior no_return_description
Rename an existing folder in your Dynadot account. Provide the folder_id of the folder and the new folder_name. Returns a confirmation that the folder was renamed.
get_account_info
no_return_description
Retrieve details about your Dynadot account, including the username, email, and account settings. Returns the account information.
get_account_balance
no_return_description
Check the current account balance available for domain purchases and renewals. Returns the available balance amount and its currency.
set_account_defaults
no_return_description
Set default account settings for new domain registrations. Supports default WHOIS contacts, nameservers, DNS, parking, forwarding, stealth, hosting, email forwarding, and renewal options, with setting_type 'clear' removing existing defaults. Returns the type of default setting applied and whether the operation succeeded.
list_orders
name_restates_behavior no_return_description
Retrieve the account's order history covering purchases, renewals, and transfers. Returns a list of orders with their IDs, types, dates, and statuses.
get_order_status
no_return_description
Check the status of a specific order by its ID. Returns the order's current status and associated order details.
check_processing
name_restates_behavior no_return_description
Determine whether the account currently has any pending or in-progress operations. Returns whether processing is active and a list of any pending operations.
list_coupons
name_restates_behavior no_return_description
Retrieve the coupon codes available on the account, including their values and any expiration dates. Returns a list of usable coupons.
get_auctions
no_return_description
List domain auctions, showing open (active) or closed (completed) auctions. Returns a list of auctions with their IDs, domains, and status.
place_bid
name_restates_behavior no_return_description
Submit a bid for a domain at auction using the auction ID and the bid amount in the specified currency. Returns confirmation of the placed bid with its details.
manage_backorders
no_return_description
Manage domain backorder requests by adding a new backorder, deleting an existing one, or listing all current requests. Returns the list of backorders for 'list' and a confirmation for 'add' and 'delete'.
set_for_sale
no_return_description
List a domain for sale on the Dynadot marketplace with a specified asking price and currency. Returns confirmation and the marketplace listing details.
get_marketplace_listings
no_return_description
View marketplace listings: lists all available domains, or returns details of a specific listing when a listing_id is provided. Returns the matching listings and their pricing.
get_auction_details
no_return_description
Get detailed information about a specific auction, including auction status and, when include_bids is set, the full bid history. Returns the auction details and current bids.
manage_backorder_auctions
no_return_description
View backorder auctions (open or closed), get details of a specific backorder auction, or place a bid on one. Returns the requested auction list, auction details including bids, or bid confirmation.
buy_expired_domain
no_return_description
Browse and purchase expired closeout domains at discounted prices; use 'list' to see available domains and 'buy' to purchase one. Returns the list of available domains or the purchase confirmation.
buy_it_now
no_return_description
Purchase a domain listed on the marketplace at its Buy It Now price in the specified currency. Returns confirmation and order details for the purchased domain.
confirm_marketplace_action
name_restates_behavior params_unexplained no_return_description
Approve or reject a pending marketplace action for a specific domain originating from an Afternic or Sedo integration; specify the platform, the affected domain name, and the action to perform (e.g., 'accept' or 'reject'). Returns confirmation of the applied action.

Selection evidence

Confusable tool pairs.

11 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_auctions get_auction_details medium A task like 'get auction info' or 'show me auction status' is ambiguous: get_auctions lists auctions, while get_auction_details needs an auction_id and returns bid details; an agent may pick the generic 'get_auctions' for a details request.
manage_backorders manage_backorder_auctions medium Both tools handle 'backorders' with overlapping concepts; a task like 'manage my backorders' or 'deal with backorder auctions' could route to manage_backorders (add/delete/list requests) instead of manage_backorder_auctions (list/bid on backorder auctions), or vice versa.
push_domain manage_domain_push medium Both involve 'domain push'. 'Push a domain to Bob' clearly hits push_domain, but a task like 'handle my domain pushes' or 'respond to the incoming push' could misroute: push_domain pushes out, manage_domain_push lists/accepts/rejects incoming requests.
push_domain transfer_domain medium A task like 'transfer my domain to another account' is ambiguous: push_domain moves it between Dynadot accounts (by username), while transfer_domain brings it in from another registrar (with EPP code). Without specifying destination registrar, either could be chosen.
get_transfer_status get_order_status medium A user asking 'check the status of my transfer order' is ambiguous: get_transfer_status checks a domain transfer status, while get_order_status checks a specific order by ID. Both match 'transfer order status' phrasing.
set_forwarding set_email_forward medium A bare task like 'set up forwarding for example.com' is ambiguous between URL forwarding (set_forwarding) and email forwarding (set_email_forward). The names and descriptions only differ by 'email', so unqualified 'forwarding' requests can misroute.
set_nameservers set_nameserver_ip medium 'Update my nameserver' is ambiguous: set_nameservers assigns hostnames to a domain, while set_nameserver_ip changes the IP of an existing registered nameserver. Both descriptions start with set + nameserver and accept a hostname, so a user 'changing nameservers' may pick the wrong one.
get_dns get_nameservers medium 'Check the DNS for my domain' is ambiguous: get_dns returns DNS records (A, CNAME, MX, etc.), while get_nameservers returns the delegated hostnames. Users often say 'DNS' when they mean 'nameservers' and vice versa.
get_auth_code set_auth_code low Mostly verb-disambiguated, but confusion is plausible for 'regenerate/update my auth code': get_auth_code can generate a new code (new_code flag) while set_auth_code sets one explicitly, so a 'change my EPP code' task could hit either.
register_domain bulk_register_domains low Descriptions clearly split singular vs multi-domain, but a task like 'register a few domains' or 'register my domains' without an explicit list/count could route to register_domain when bulk_register_domains is intended, or vice versa.
set_contact_regional_setting set_whois_contacts low Both are 'set ... contact' tools. A task like 'set the contact settings for my .eu domain' could be read as assigning WHOIS contacts (set_whois_contacts) instead of the registry regional setting (set_contact_regional_setting); plausible only for region-specific .eu/.lv/.lt requests.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard