> ## 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.

# Unknown Tool Choice MCP Alias

> tool_choice.mcp_alias does not match any registered MCP server.

**HTTP status:** 400

## Error message

```
tool_choice references unknown mcp_alias '{alias}' — not a registered MCP server
```

## When this error occurs

When `tool_choice: { kind: "specific_tool", mcp_alias: "...", name: "..." }` carries an
`mcp_alias`, the platform looks the alias up in the effective config's `mcp_servers[]`. If
no MCP server has that alias for the run (typo? missing entry in a `config_override` that
replaced the conversation's default list?), the call is rejected synchronously.

## How to fix

Use one of the registered aliases — or drop `mcp_alias` entirely if you meant a
caller-declared tool. Sample shapes:

```json theme={null}
// MCP-pinned (alias "docs" must be in mcp_servers)
{ "kind": "specific_tool", "mcp_alias": "docs", "name": "search_kb" }

// Caller-declared (no mcp_alias)
{ "kind": "specific_tool", "name": "confirm_booking" }
```

Remember that `config_override.mcp_servers` replaces the conversation default wholesale —
the run sees only what's listed in the override (or, if absent, the defaults). If you're
overriding the list, every alias your `tool_choice` references has to be in that override.
