> ## Documentation Index
> Fetch the complete documentation index at: https://docs.narrative.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Invalid MCP Server URL

> One or more mcp_servers URLs are not absolute https URLs with a host.

**HTTP status:** 400

## Error message

```
invalid mcp_server url(s) (must be an absolute https:// URL with a host): {bad-urls}
```

## When this error occurs

Every `url` under `defaults.mcp_servers[]` (and under `config_override.mcp_servers[]` on a run)
must be an absolute `https://` URL with a host. The API validates this at conversation- and
run-create time, so a bad URL fails fast here rather than at run start as a
[MCP Discovery Failed](./mcp-discovery-failed).

`https` is required because a public MCP server is called with no bearer — over plaintext `http`
the tool arguments (and, for a Narrative-owned server, a server-minted token) would travel in the
clear. Malformed values (no scheme, no host, or not a URL at all) are rejected for the same reason.

## How to fix

| Bad                                      | Fix                             |
| ---------------------------------------- | ------------------------------- |
| `http://mcp.example.com/mcp` (plaintext) | `https://mcp.example.com/mcp`   |
| `mcp.example.com/mcp` (no scheme)        | `https://mcp.example.com/mcp`   |
| `https:///mcp` (no host)                 | `https://mcp.example.com/mcp`   |
| `not a url`                              | a valid absolute `https://` URL |

Re-post the request with the corrected URLs. A URL that is well-formed but unreachable or not a
valid MCP endpoint surfaces later as [MCP Discovery Failed](./mcp-discovery-failed).
