Skip to main content
HTTP status: 400

Error message

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. 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.
Reachability is a separate check that runs at outbound call time. Even if a URL passes this validation, the platform’s egress guard refuses hosts that resolve to loopback, private, link-local (including the 169.254.169.254 metadata IP), IPv6 unique-local, unspecified, or multicast addresses. Those failures surface as MCP Discovery Failed — not this error. The MCP server must be publicly reachable on the internet.

How to fix

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.

See also

  • Agent Conversations reference — how mcp_servers[] plugs into a run.
  • MCP Connections — how to attach an OAuth connection to an external MCP server that requires user authorization.
  • MCP Discovery Failed — the run-time error for a URL that passes validation but cannot be reached (including hosts blocked by the SSRF egress guard).