> ## 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 Caller-Declared Tool Name

> A tools[] entry has a name that is empty, contains a dash, or exceeds 64 characters.

**HTTP status:** 400

## Error message

```
invalid caller-declared tool names (must be non-empty, dash-free, and ≤ 64 chars): {names}
```

## When this error occurs

Caller-declared tools (under top-level `tools[]`) have no alias — the platform tells them
apart from MCP tools by the absence of a dash in the wire name. If a caller-declared
`tools[].name` contains a dash, it would collide with the MCP `{alias}-{tool}` shape and
the workflow can't safely route the call.

Validation rules for `tools[].name`:

* Non-empty.
* No dashes (`-`).
* ≤ 64 characters total (Bedrock's wire-name cap; MCP tools split this budget between
  alias + name, but caller-declared names use the full 64).

## How to fix

Rename the offending tool to a dash-free identifier:

```json theme={null}
{
  "tools": [
    { "name": "confirm_booking", "description": "...", "input_schema": {...} },
    { "name": "lookup_account", "description": "...", "input_schema": {...} }
  ]
}
```

Use underscores or camelCase instead of dashes for multi-word names.
