{
  "name": "com.nymwell/mcp",
  "title": "Nymwell",
  "version": "0.6.0",
  "description": "Domain registrar for people and their AI agents: search names, check live availability and prices, hand the person a buy link, then renew, transfer and run DNS with a person approving every change.",
  "websiteUrl": "https://nymwell.com/en/developers/mcp/",
  "documentation": "https://nymwell.com/agents.md",
  "serverInfo": {
    "name": "nymwell",
    "version": "0.6.0"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://nymwell.com/mcp"
    },
    {
      "type": "streamable-http",
      "url": "https://nymwell.com/mcp/account"
    }
  ],
  "authentication": {
    "required": false,
    "schemes": [
      "oauth2",
      "apiKey"
    ],
    "protectedResourceMetadata": "https://nymwell.com/.well-known/oauth-protected-resource/mcp/account",
    "header": "X-Nymwell-Key",
    "description": "https://nymwell.com/mcp needs no sign-in for the public tools. https://nymwell.com/mcp/account signs the person in with Google (OAuth 2.1) for account tools. Scripts can send an agent key as X-Nymwell-Key.",
    "publicTools": [
      "get_tld_info",
      "list_dns_presets",
      "nymwell_status",
      "screen_domains",
      "search_domains",
      "suggest_domains"
    ]
  },
  "pricing": "Searching is free. Domains are paid per registration by the person, by card.",
  "publisher": {
    "name": "Nymwell",
    "url": "https://nymwell.com"
  },
  "tools": [
    {
      "name": "nymwell_status",
      "description": "Read Nymwell backend, database and provider-adapter readiness.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_domains",
      "description": "List domains visible to the signed-in Nymwell organization.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_dns_records",
      "description": "List DNS records for a managed domain. refresh: true first pulls the records from the registrar (including ones changed outside Nymwell).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "refresh": {
            "type": "boolean"
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_invoices",
      "description": "List invoice metadata for the signed-in Nymwell organization.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_members",
      "description": "List members and roles for the signed-in Nymwell organization.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_audit_events",
      "description": "Read recent immutable audit evidence for the signed-in Nymwell organization: who (person, API key, OAuth app, schedule, registrar), how (console, API, MCP) and the outcome, with a summary. Reads are left out unless include_reads is true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          },
          "domain": {
            "type": "string"
          },
          "include_reads": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "check_domain_eligibility",
      "description": "Before a sensitive action, ask whether it can happen now. For transfer_out, renew and cancel it returns state (eligible, action_required, blocked, in_progress), reasons with a code, the source (registry, namecom, nymwell), an until date when the block ends, the next action, and what the action requires (roles, Google confirmation, approval, payment). Staging checks the same rules again.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "action": {
            "type": "string",
            "enum": [
              "transfer_out",
              "renew",
              "cancel"
            ]
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "stage_dns_change",
      "description": "Prepare DNS changes (create, update, delete) for review. Nothing is written until an owner or admin approves; then Nymwell applies them at the registrar in order. For update and delete, pass record_id from list_dns_records when a name has more than one record of that type.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "changes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "type": "object",
              "properties": {
                "operation": {
                  "enum": [
                    "create",
                    "update",
                    "delete"
                  ]
                },
                "type": {
                  "enum": [
                    "A",
                    "AAAA",
                    "CNAME",
                    "MX",
                    "TXT",
                    "CAA",
                    "SRV",
                    "NS"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                },
                "ttl": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 2147483647
                },
                "priority": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 65535
                },
                "record_id": {
                  "type": "string",
                  "description": "The record to update or delete, from list_dns_records"
                }
              },
              "required": [
                "operation",
                "type",
                "name",
                "value"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "domain",
          "changes"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "search_domains",
      "description": "Check which domain names can be registered and what they cost from a live registrar (not DNS or RDAP). Pass exact domains, or a name plus endings. If Nymwell is not connected to a live registrar, this tool refuses sandbox data; use screen_domains for a public-record first pass. Prices are USD for the minimum term; get_quote gives the exact price for a chosen term. Each name has tier (standard or premium) when it can be registered, or reason (domain_unavailable, extension_not_supported, extension_disallows_registration) when it cannot. No sign-in needed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 20
          },
          "name": {
            "type": "string",
            "description": "A name without an ending, e.g. orbitnotes"
          },
          "tlds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "description": "Endings to try with name, e.g. [\"com\",\"ai\",\"dev\"]"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "screen_domains",
      "description": "Fast first pass over many names: is there a registration record, since when, with which registrar, is it parked for sale. Uses public RDAP and DNS, so it works before any registrar is configured. It is NOT availability: no_record still has to be confirmed with search_domains or get_quote after nymwell_status reports a live registrar. No sign-in needed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 20
          },
          "name": {
            "type": "string",
            "description": "A name without an ending, e.g. noren"
          },
          "tlds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20,
            "description": "Endings to try with name; defaults to com, ai, dev, app, io, co, tw"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_quote",
      "description": "Lock the exact price for one domain: action \"register\" (default) for an available name, \"renew\" for a domain this organization holds, or \"transfer\" to bring one from another registrar (adds one year; the owner then submits the auth code in the console). Valid for 40 minutes; purchase_domain charges exactly this.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "years": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          },
          "action": {
            "enum": [
              "register",
              "renew",
              "transfer"
            ]
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "purchase_domain",
      "description": "Start paying for a quote (registration, renewal or transfer). Returns a checkout_url: give it to the person, who pays once; paying is their approval. The registrar call (and, for a registration, the DNS records you pass) then runs on its own. Poll get_order for the result. An agent never pays by itself.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "quote_id": {
            "type": "string"
          },
          "dns": {
            "type": "object",
            "description": "Records to create right after registration: a preset from list_dns_presets, optional records, or both.",
            "properties": {
              "preset": {
                "type": "string"
              },
              "target": {
                "type": "string",
                "description": "Hostname the preset points www at, when the preset needs one"
              },
              "records": {
                "type": "array",
                "maxItems": 20,
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "enum": [
                        "A",
                        "AAAA",
                        "CNAME",
                        "MX",
                        "TXT",
                        "SRV",
                        "NS"
                      ]
                    },
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    },
                    "ttl": {
                      "type": "integer",
                      "minimum": 300
                    },
                    "priority": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65535
                    }
                  },
                  "required": [
                    "type",
                    "name",
                    "value"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "additionalProperties": false
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 120
          },
          "accept_trademark_notice": {
            "type": "boolean",
            "description": "true only after the person has read the trademark notice get_quote returned"
          },
          "tld_requirements": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Extra registry fields some country endings need (see get_tld_info)"
          },
          "locale": {
            "enum": [
              "en",
              "zh-tw"
            ],
            "description": "Language of the page the person returns to after paying"
          }
        },
        "required": [
          "quote_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_order",
      "description": "Read where a purchase is: awaiting_payment, registering, registered, needs_attention or failed_refunded, with the DNS records that were created. workflow.state says what to do: in_progress or blocked = check again later; action_required = give workflow.action.url to the person; succeeded or failed = stop (failed carries workflow.error).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string"
          }
        },
        "required": [
          "order_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_dns_presets",
      "description": "List the DNS presets purchase_domain and apply_dns_preset accept (Vercel, Netlify, GitHub Pages, Cloudflare Pages, Agent Lab Deploy, Google Workspace email). No sign-in needed.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "apply_dns_preset",
      "description": "Prepare DNS records for a domain this organization already manages. It creates a change set a person approves in the console; nothing is written before that.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "preset": {
            "type": "string"
          },
          "target": {
            "type": "string"
          }
        },
        "required": [
          "domain",
          "preset"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "suggest_domains",
      "description": "Names a live registrar can sell now that fit a keyword, with prices (registration inventory only). Sandbox suggestions are refused; use screen_domains until nymwell_status reports a live registrar. No sign-in needed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "maxLength": 63
          },
          "tlds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 20
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_tld_info",
      "description": "What an ending costs (registration, renewal, transfer) and its rules: allowed terms, days left to renew after expiry, WHOIS privacy, DNSSEC, HSTS preload. No sign-in needed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tlds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 10
          }
        },
        "required": [
          "tlds"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_domain",
      "description": "Live state of a domain this organization holds through Nymwell: expiry, renewal price, transfer lock, WHOIS privacy, registry locks, nameservers, contact verification and any transfer in progress.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "set_auto_renew",
      "description": "Turn Nymwell's auto-renew on or off for a domain. When it is on and the workspace has a saved card, Nymwell charges that card for a one-year renewal from 14 days before expiry (retrying 7, 3 and 1 day before); without a card it sends reminders instead. The answer says which applies. The registrar's own auto-renew always stays off.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "domain",
          "enabled"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "update_domain_settings",
      "description": "Prepare a WHOIS privacy or transfer lock change. An owner or admin approves it in the console before the registrar is touched.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "privacy_enabled": {
            "type": "boolean"
          },
          "transfer_lock": {
            "type": "boolean"
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "set_nameservers",
      "description": "Prepare a nameserver change: 2 to 13 hostnames, or \"default\" to return to Nymwell DNS. Pointing elsewhere means the records in Nymwell stop applying. Needs approval.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "nameservers": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "minItems": 2,
                "maxItems": 13
              },
              {
                "const": "default"
              }
            ]
          }
        },
        "required": [
          "domain",
          "nameservers"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "set_contacts",
      "description": "Prepare a contact change. registrant is required (it is the legal holder); admin, tech and billing are optional. A new registrant must confirm by email within 15 days or the domain stops resolving. Needs approval.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "contacts": {
            "type": "object",
            "properties": {
              "registrant": {
                "type": "object",
                "properties": {
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "companyName": {
                    "type": "string"
                  },
                  "address1": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string"
                  },
                  "zip": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter code"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Like +886.912345678"
                  },
                  "fax": {
                    "type": "string"
                  }
                },
                "required": [
                  "firstName",
                  "lastName",
                  "address1",
                  "city",
                  "country",
                  "email",
                  "phone"
                ],
                "additionalProperties": false
              },
              "admin": {
                "type": "object",
                "properties": {
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "companyName": {
                    "type": "string"
                  },
                  "address1": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string"
                  },
                  "zip": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter code"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Like +886.912345678"
                  },
                  "fax": {
                    "type": "string"
                  }
                },
                "required": [
                  "firstName",
                  "lastName",
                  "address1",
                  "city",
                  "country",
                  "email",
                  "phone"
                ],
                "additionalProperties": false
              },
              "tech": {
                "type": "object",
                "properties": {
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "companyName": {
                    "type": "string"
                  },
                  "address1": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string"
                  },
                  "zip": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter code"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Like +886.912345678"
                  },
                  "fax": {
                    "type": "string"
                  }
                },
                "required": [
                  "firstName",
                  "lastName",
                  "address1",
                  "city",
                  "country",
                  "email",
                  "phone"
                ],
                "additionalProperties": false
              },
              "billing": {
                "type": "object",
                "properties": {
                  "firstName": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "companyName": {
                    "type": "string"
                  },
                  "address1": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string"
                  },
                  "zip": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter code"
                  },
                  "email": {
                    "type": "string"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Like +886.912345678"
                  },
                  "fax": {
                    "type": "string"
                  }
                },
                "required": [
                  "firstName",
                  "lastName",
                  "address1",
                  "city",
                  "country",
                  "email",
                  "phone"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "registrant"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "domain",
          "contacts"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "request_auth_code",
      "description": "Prepare unlocking a domain and revealing its transfer auth code, to move it to another registrar. After approval the code is shown once to the approving person; an agent never sees it. Not possible within 60 days of a registration or transfer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "cancel_registration",
      "description": "Prepare cancelling a registration made in the last few days (the registry's add grace period, about 5 days). Once approved the domain is deleted and the payment refunded.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_domain_services",
      "description": "Read DNSSEC DS records, URL forwarding, email forwarding or branded (vanity) nameservers for a domain, live from the registrar.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "service": {
            "enum": [
              "dnssec",
              "url_forwarding",
              "email_forwarding",
              "vanity_nameservers"
            ]
          }
        },
        "required": [
          "domain",
          "service"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "change_domain_service",
      "description": "Prepare a DNSSEC, URL forwarding, email forwarding or vanity nameserver change. Needs approval. data: dnssec {key_tag, algorithm, digest_type, digest} (delete: digest); url_forwarding {host, forwards_to, type: masked|redirect|302, title?, meta?} (delete: host); email_forwarding {email_box, email_to} (delete: email_box); vanity_nameservers {hostname, ips} (delete: hostname).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "service": {
            "enum": [
              "dnssec",
              "url_forwarding",
              "email_forwarding",
              "vanity_nameservers"
            ]
          },
          "operation": {
            "enum": [
              "create",
              "update",
              "delete"
            ]
          },
          "data": {
            "type": "object"
          }
        },
        "required": [
          "domain",
          "service",
          "operation",
          "data"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_transfers",
      "description": "Transfers into Nymwell for this organization and where each one is.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "cancel_transfer",
      "description": "Prepare cancelling a transfer: direction \"in\" stops one coming to Nymwell (the payment is refunded), \"out\" stops a domain leaving for another registrar. Needs approval.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "direction": {
            "enum": [
              "in",
              "out"
            ]
          }
        },
        "required": [
          "domain",
          "direction"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_unverified_contacts",
      "description": "Registrant emails still waiting for ICANN verification on this organization's domains, with the deadline. A domain whose registrant misses it stops resolving.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_registrant",
      "description": "Whether this organization has its registrant on file. The customer is the legal holder of every domain; a signed-in person enters the registrant and accepts the terms in the console before the first registration or transfer.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_approvals",
      "description": "Changes waiting for a person to approve, and the ones already decided, each with workflow.state (action_required, in_progress, succeeded, failed). Approving is done by a person in the console, never through MCP.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "resend_contact_verification",
      "description": "Send the ICANN verification email again for one verification_id from list_unverified_contacts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "verification_id": {
            "type": "string"
          }
        },
        "required": [
          "verification_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "openWorldHint": true
      }
    }
  ]
}