Custom Domain API

io.github.siretov0.11.1Updated Oct 10, 2026

Register a SaaS app's customer hostnames, show their DNS records and checks, recheck or delete them.

VerifiedSTDIODesktop onlyCloud & InfrastructureDeveloper Tools

Overview

AI-generated overview

Lets an assistant register, inspect, recheck, and delete customer custom hostnames through the Custom Domain API.

What it does
Wraps the Custom Domain API so an assistant can register a customer's hostname for a workspace and get back the DNS records to hand over. It can fetch a domain with its status, records, and four checks, list domains filtered by workspace or status with paging, and produce the DNS records as text with per-record help. It can recheck a domain after a DNS fix, delete a hostname, and list webhook subscriptions without secrets.
When to use it
Use it when a SaaS application lets customers point their own hostnames at it and you want an assistant to onboard those hostnames, explain the DNS records to customers, or diagnose why a domain is not live yet. It fits support and onboarding workflows rather than general DNS administration.
Requirements
Runs locally over stdio, installed with uvx or pip, so Python and the package are needed. Two environment variables are required: CUSTOM_DOMAIN_API_URL, the https edge URL, and CUSTOM_DOMAIN_API_KEY, an application API key starting with cd_. Desktop MCP clients only; no web executable.
Before you install
The server holds an application API key (CUSTOM_DOMAIN_API_KEY), so it can do anything that application's backend can, though not operator actions. delete_domain stops serving a hostname and deletes it, and is marked destructive; the server asks the assistant to confirm the hostname and only act on an explicit request. Webhook creation and rotation are excluded because responses carry the signing secret. Hostnames, workspace references, metadata, and check messages come from customers and DNS…

Installation

In SourceWeft

  1. Open Custom Domain API in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

custom-domain-mcp

An MCP server for the Custom Domain API. It lets an AI assistant (Claude, Cursor, any MCP client) register your customers' hostnames, show them their DNS records, check why a domain isn't live yet, and recheck or delete it. It acts as one application, with that application's own API key.

Setup

bash
uvx custom-domain-mcp        # or: pip install custom-domain-mcp

It reads two settings from the environment:

SettingValue
CUSTOM_DOMAIN_API_URLyour edge, such as https://edge.example.net (https only; plain http just for localhost)
CUSTOM_DOMAIN_API_KEYan application API key (cd_…)

Claude Code:

bash
claude mcp add custom-domain --env CUSTOM_DOMAIN_API_URL=https://edge.example.net \  --env CUSTOM_DOMAIN_API_KEY=cd_... -- uvx custom-domain-mcp

Claude Desktop, Cursor and other clients (mcpServers in their config):

json
{  "mcpServers": {    "custom-domain": {      "command": "uvx",      "args": ["custom-domain-mcp"],      "env": {        "CUSTOM_DOMAIN_API_URL": "https://edge.example.net",        "CUSTOM_DOMAIN_API_KEY": "cd_..."      }    }  }}

Tools

ToolDoes
create_domainRegister a customer's hostname for a workspace; returns its DNS records. Safe to retry.
get_domainA domain with its status, records and the four checks.
list_domainsDomains, filtered by workspace or status, paged.
dns_instructionsThe records as text for the customer, with help for each.
recheck_domainRun the checks again after a DNS fix (once a minute per domain).
delete_domainStop serving a hostname and delete it (marked destructive).
list_webhooksWebhook subscriptions, without secrets.

What it can't do

  • No operator actions. It never holds an operator token, only the application's key, so it can do exactly what the application's backend can.
  • No webhook creation or rotation. Their responses carry the signing secret, which would end up in the assistant's conversation. Create webhooks through the API or the portal.

Customer data is data, not instructions. Hostnames, workspace references, metadata and check messages come from your application's customers and from DNS. The server tells the assistant to report them, never to follow them, and to call delete_domain only when you explicitly asked for that domain to be deleted, repeating its hostname back to you first. Your MCP client's own confirmation for destructive tools adds a second check.

The server's instructions also tell the assistant the one rule integration code must follow: select the tenant from the verified X-Custom-Domain-Assertion, never from Host (verifying requests).

Source: mcp-server/README.md at commit 0434ba1

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.11.1LatestOct 10, 2026