Nymwell
View as Markdown

MCP and sign-in

Nymwell runs a hosted MCP server: Streamable HTTP, JSON-RPC over POST. A GET answers 405; there is no SSE stream. Two addresses serve the same tools.

AddressSign-inWhat works
https://nymwell.com/mcpNoneSearch, prices, endings, DNS presets and buy links. Account tools answer with how to sign in.
https://nymwell.com/mcp/accountGoogle, once (OAuth 2.1)Everything above, plus quotes, checkouts the person pays, renewals, transfers and DNS changes the person approves.

Connect with sign-in

  • claude.ai or Claude Desktop: Settings → Connectors → Add custom connector, and paste https://nymwell.com/mcp/account.
  • ChatGPT: add a connector in developer mode with https://nymwell.com/mcp/account and OAuth.
  • Claude Code: run the command below, then /mcp and choose Authenticate.
  • Codex: run the commands below.
claude mcp add --transport http nymwell https://nymwell.com/mcp/account

codex mcp add nymwell --url https://nymwell.com/mcp/account
codex mcp login nymwell

Other clients: {"mcpServers": {"nymwell": {"url": "https://nymwell.com/mcp/account"}}}.

The person sees a Nymwell page that names the app, the workspace and what the app may do, and allows it. Only a workspace owner or admin can. They can disconnect the app any time in AI Agents.

Connect without sign-in

claude mcp add --transport http nymwell https://nymwell.com/mcp

search_domains returns a buy_url for every name that can be registered; the person opens it, signs in and pays. When an agent calls an account tool here, the answer says to use buy_url or connect to /mcp/account, and carries a mcp/www_authenticate challenge that ChatGPT uses to link the account.

How sign-in works

For client developers. Nymwell is its own OAuth 2.1 authorization server, issuer https://nymwell.com.

WhatWhere
Protected resource metadatahttps://nymwell.com/.well-known/oauth-protected-resource/mcp/account
Authorization server metadatahttps://nymwell.com/.well-known/oauth-authorization-server
Authorizationhttps://nymwell.com/oauth/authorize (code flow, PKCE S256 required)
Tokenhttps://nymwell.com/oauth/token (authorization_code, refresh_token)
Dynamic client registrationhttps://nymwell.com/oauth/clients
Revocationhttps://nymwell.com/oauth/revoke
  • Clients identify themselves with a Client ID Metadata Document (an https client_id) or by dynamic registration.
  • Send resource (RFC 8707) as https://nymwell.com/mcp/account. Responses carry iss (RFC 9207).
  • Scope: account. Access tokens last an hour; refresh tokens rotate and last 60 days.
  • Without a token, /mcp/account answers 401 with WWW-Authenticate: Bearer resource_metadata="…", scope="account".
  • Tokens work on MCP only, never on the REST API. A grant stops working if the person who allowed it is no longer an owner or admin.

Agent keys, for scripts

Scripts and servers can send an agent key instead of signing in: X-Nymwell-Key: nw_live_… or Authorization: Bearer nw_live_…. A signed-in owner creates it in AI Agents, or with POST /api/v1/api-keys (scopes, an optional domain allowlist, an expiry of up to 90 days). It is shown once. Never ask a person to paste it into a conversation.

Tools

tools/list marks each tool with securitySchemes: noauth for the public ones, oauth2 for the rest.

ToolAccessWhat it does
nymwell_statusPublicRead Nymwell backend, database and provider-adapter readiness.
list_domainsSigned inList domains visible to the signed-in Nymwell organization.
list_dns_recordsSigned inList DNS records for a managed domain. refresh: true first pulls the records from the registrar (including ones changed outside Nymwell).
list_invoicesSigned inList invoice metadata for the signed-in Nymwell organization.
list_membersSigned inList members and roles for the signed-in Nymwell organization.
list_audit_eventsSigned inRead 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.
check_domain_eligibilitySigned inBefore 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.
stage_dns_changeSigned inPrepare 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.
search_domainsPublicCheck 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.
screen_domainsPublicFast 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.
get_quoteSigned inLock 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.
purchase_domainSigned inStart 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.
get_orderSigned inRead 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).
list_dns_presetsPublicList 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.
apply_dns_presetSigned inPrepare 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.
suggest_domainsPublicNames 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.
get_tld_infoPublicWhat 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.
get_domainSigned inLive 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.
set_auto_renewSigned inTurn 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.
update_domain_settingsSigned inPrepare a WHOIS privacy or transfer lock change. An owner or admin approves it in the console before the registrar is touched.
set_nameserversSigned inPrepare 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.
set_contactsSigned inPrepare 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.
request_auth_codeSigned inPrepare 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.
cancel_registrationSigned inPrepare 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.
list_domain_servicesSigned inRead DNSSEC DS records, URL forwarding, email forwarding or branded (vanity) nameservers for a domain, live from the registrar.
change_domain_serviceSigned inPrepare 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).
list_transfersSigned inTransfers into Nymwell for this organization and where each one is.
cancel_transferSigned inPrepare cancelling a transfer: direction "in" stops one coming to Nymwell (the payment is refunded), "out" stops a domain leaving for another registrar. Needs approval.
list_unverified_contactsSigned inRegistrant emails still waiting for ICANN verification on this organization's domains, with the deadline. A domain whose registrant misses it stops resolving.
get_registrantSigned inWhether 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.
list_approvalsSigned inChanges 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.
resend_contact_verificationSigned inSend the ICANN verification email again for one verification_id from list_unverified_contacts.

Schemas: https://nymwell.com/mcp-tools.json · Server card: https://nymwell.com/.well-known/mcp/server-card.json · Official MCP Registry: com.nymwell/mcp