Connect a customer domain with doDomain
Walk one domain from a new connect session to verified DNS. Creating a session uses one unit of the plan's monthly connection quota, so confirm before you create one.
Connecting and calling the tools
Every tool in this skill comes from the dodomain MCP server, the doDomain connector, and is written here as dodomain:<tool>.
- Tools listed by name: call them directly, for example
dodomain:check_domain. - Only
dodomain:search_toolsanddodomain:execute_typescriptlisted (Code Mode, the default): calldodomain:search_toolsfirst, then call each tool insidedodomain:execute_typescriptasexternal_<tool>(for exampleexternal_check_domain); the program mustreturnits result. Scopes, confirmations and gates are identical on both surfaces. - "Tool not found": switch to the Code Mode route instead of retrying the direct call. If
dodomain:search_toolsdoes not return the tool either, its OAuth scope was not granted; the user reconnects doDomain and approves that scope. - No
dodomaintools at all: doDomain is not connected yet. Install the doDomain power, which adds the server; it signs in with OAuth on first use.
Tools you will use
dodomain:list_apps: the apps on the team with id, name, public widget key, and sandbox flag. Never returns secret keys.dodomain:check_domain: provider, zone, and connect tier for the domain, as a pre-flight.dodomain:create_connect_session: start a session for a domain on an app. Takes theappId, the customer'sdomain, and the DNS records the app needs; returns asessionTokenand the records to apply. Counts against the monthly connection quota.dodomain:get_connect_session: the current state of a session by token: domain, expected records, and status (pending,detected,authorizing,writing,verifying,verified).dodomain:verify_connect_session: a live check of the session's expected records against authoritative nameservers, with a per-record breakdown of present, propagating, or absent.
Workflow
- Call
dodomain:list_apps. If the team has more than one app, ask which one the domain belongs to. Point out sandbox apps. - Call
dodomain:check_domainfor the domain and tell the user which connect tier the customer will get. - Ask for the DNS records the app needs if the user has not given them. Do not invent record targets.
- Confirm the app, the domain, and the records, and say that this uses one unit of the monthly connection quota. Then call
dodomain:create_connect_session. - Report the
sessionTokenand list the records the customer must apply, one per line with type, name, and value. - When the user asks for progress, call
dodomain:get_connect_sessionfor the status, thendodomain:verify_connect_sessionfor the per-record breakdown. - Present the breakdown record by record.
verifiedis true only when every record matches.
Rules
verified: falseon a fresh session is a normal answer, not an error. It means the records are not published yet. Name each missing record.propagatingmeans the record is on its way. Suggest checking again in a few minutes rather than calling in a loop.- If a call returns
RATE_LIMITED, tell the user the wait in seconds fromretryAfterSecondsand stop. Do not retry automatically. - Create at most one session per domain per request. If the user already has a session token for that domain, use
dodomain:get_connect_sessioninstead.
