Refused hosts
A base URL is checked before anything is fetched. These are refused, with the message the MCP page shows. A message never repeats the URL, in case a secret was pasted into it.
| Refused | Message |
|---|---|
| A URL that's too long | Use a shorter URL. |
Anything but https, or a URL that doesn't parse | Use an https:// URL. |
| A user name or password in the URL | Leave out the user name and password: store the credential instead. |
| A port | Leave out the port: only the default https port is called. |
| A query or a fragment | Leave out the query and the fragment: each tool adds its own. |
| An IP address, a single-label name, a private name, latitude10.tech or Cloudflare's own names | Use your API’s public host name, not an IP address or a private name. |
Private names are those under localhost, local, internal, localdomain, lan, arpa, test, invalid, example and onion. An IP address is refused in any spelling, numeric names included.
The same check guards the API client's proxy hosts and the servers Try it may call.
Where this comes from
app/hosted-mcp/_lib/upstream.tsapp/reference/_lib/playground/proxy.tsapp/reference/_lib/playground/csp.ts