Custom Domain Setup
A custom domain lets you publish your MCP server under your own hostname (e.g. mcp.acme.com) and submit it as an independent OpenAI plugin. Instead of sending users to mcp.shredly.io/mcp/your-slug, you can use a URL you fully own.
Prerequisites
- An MCP server already created on Shredly (you'll need its MCP ID)
- A domain you control with access to its DNS settings
- The Shredly MCP connected to your agent (Claude, Cursor, etc.)
Step 1: Register your custom domain
Use the setCustomDomain tool on the Shredly MCP:
setCustomDomain
id: <your-mcp-id>
hostname: mcp.acme.com
This calls Cloudflare to provision SSL for your hostname automatically. The tool returns the DNS record you need to add:
CNAME mcp.acme.com → mcp-proxy.shredly.io
If your MCP already has a custom domain, you'll get a 409 error. Run deleteCustomDomain first, then retry.
Step 2: Add the CNAME record
In your DNS provider, add:
| Type | Name / Host | Target | TTL |
|---|---|---|---|
| CNAME | mcp (or the subdomain you chose) | mcp-proxy.shredly.io | Auto / 3600 |
If your domain is on Cloudflare: set this record to DNS only (grey cloud icon) — proxying it will interfere with SSL provisioning on Shredly's side.
DNS propagation typically takes a few minutes but can take up to 48 hours.
Step 3: Wait for verification
Poll the verification status using the getCustomDomainStatus tool:
getCustomDomainStatus
id: <your-mcp-id>
You'll see one of:
| Status | Meaning |
|---|---|
active | CNAME verified, SSL cert live — you're ready |
pending | DNS hasn't propagated yet — check back in a few minutes |
cname_error | Your CNAME is pointing to the wrong target |
error | Something unexpected happened — contact support |
Keep polling until you see verified: true.
Step 4: Test your domain
Once verified, your MCP server is live at:
https://mcp.acme.com/mcp/<your-slug>
Try connecting to it:
claude mcp add --transport http my-mcp https://mcp.acme.com/mcp/your-slug
Step 5: Submit to OpenAI (optional)
To list your MCP as an OpenAI plugin, OpenAI needs to verify that you own the domain.
- Start the plugin submission flow at platform.openai.com
- OpenAI will give you a challenge token that looks like
openai-challenge-abc123xyz... - Store the token using the
setOpenAiChallengeTokentool:
setOpenAiChallengeToken
id: <your-mcp-id>
value: openai-challenge-abc123xyz...
-
Tell OpenAI to verify. It will fetch:
GET https://mcp.acme.com/.well-known/openai-apps-challengeShredly serves your token automatically at this URL.
-
Complete the OpenAI submission with your MCP URL:
https://mcp.acme.com/mcp/<your-slug>
Removing a custom domain
To remove the custom domain from your MCP server:
deleteCustomDomain
id: <your-mcp-id>
This removes the Cloudflare custom hostname, clears your stored challenge token, and allows you to register a different domain.
Troubleshooting
SSL handshake error when connecting
Your CNAME may have propagated before the SSL cert finished provisioning. Wait a few minutes and run getCustomDomainStatus — cert issuance completes automatically once Cloudflare sees the CNAME.
cname_error status
Your DNS record is pointing somewhere other than mcp-proxy.shredly.io. Double-check the CNAME target and that there are no conflicting A or AAAA records on the same subdomain.
OpenAI challenge token not found (404)
Make sure you've called setOpenAiChallengeToken with the correct token value before telling OpenAI to verify. The token is case-sensitive.
409 when setting a custom domain
Your MCP already has a domain registered. Call deleteCustomDomain first to clear it, then set the new one.