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

# Rasa MCP Tools API Reference

> Reference for the Rasa MCP tools available through the local Rasa MCP server.

Rasa MCP Tools are included in Rasa Pro 3.16 and later.

v3.16

## Cheat Sheet

| Tool                                    | Group         | What it does                            |
| --------------------------------------- | ------------- | --------------------------------------- |
| `search_rasa_documentation`             | Documentation | Search official Rasa docs               |
| `list_project_flow_definitions`         | Introspection | List all flows                          |
| `list_project_slot_definitions`         | Introspection | List all slots                          |
| `list_project_response_definitions`     | Introspection | List all responses                      |
| `get_flow`                              | Introspection | Get one flow by ID or name              |
| `get_slot`                              | Introspection | Get one slot by name                    |
| `get_response`                          | Introspection | Get one response by name                |
| `list_project_custom_actions_in_domain` | Introspection | List custom actions declared in domain  |
| `list_custom_action_implementations`    | Introspection | List custom action Python classes       |
| `list_default_action_names`             | Introspection | List built-in Rasa action names         |
| `get_flow_schema`                       | Schemas       | Get the flow JSON schema                |
| `get_domain_schema`                     | Schemas       | Get the domain YAML schema              |
| `get_e2e_schema`                        | Schemas       | Get the E2E test YAML schema            |
| `validate_project`                      | Build         | Validate project config and data        |
| `train_rasa_assistant`                  | Build         | Train the assistant model               |
| `talk_to_assistant`                     | Runtime       | Send messages to the running assistant  |
| `get_assistant_logs`                    | Runtime       | Get recent assistant logs               |
| `validate_scenario`                     | Evaluation    | Validate a scenario YAML before running |
| `evaluate_agent`                        | Evaluation    | Run a simulated evaluation scenario     |

## CLI Commands

| Command                                  | Effect                                                                                                                                                                                                                                 |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rasa tools init`                        | Interactive setup wizard. Creates `.rasa/tools.yaml` and downloads offline docs and skills. Each installed skill includes its `SKILL.md` and any files from the skill's `references/` folder.                                          |
| `rasa tools init -y`                     | Non-interactive setup with all defaults.                                                                                                                                                                                               |
| `rasa tools init --project-path PATH`    | Initialize for a project in a different directory.                                                                                                                                                                                     |
| `rasa tools init docs`                   | Download or refresh offline documentation files.                                                                                                                                                                                       |
| `rasa tools init skills`                 | Download or refresh agent skills, including each skill's `references/` files. Skills without a `references/` folder install only `SKILL.md`. If a reference file fails to download, Rasa logs a warning and still installs `SKILL.md`. |
| `rasa tools run --mode stdio`            | Start the MCP server in stdio mode (for IDE integrations).                                                                                                                                                                             |
| `rasa tools run --mode http --port 7331` | Start the MCP server in HTTP mode on the specified port.                                                                                                                                                                               |
| `rasa tools run --config PATH`           | Start the server using settings from `.rasa/tools.yaml` in the given directory.                                                                                                                                                        |
| `rasa tools run --project-path PATH`     | Override the project folder the server reads from.                                                                                                                                                                                     |
| `rasa tools run --rasa-server-url URL`   | Override the Rasa server URL (default: `http://localhost:5005`).                                                                                                                                                                       |

## Documentation tools

### `search_rasa_documentation`

Search the official Rasa documentation for authoritative information. Returns relevant documentation about Rasa concepts, APIs, best practices, configuration, and troubleshooting with links to official docs.

| Parameter | Type   | Required | Description                                                   |
| --------- | ------ | -------- | ------------------------------------------------------------- |
| `query`   | string | yes      | The search query to find relevant Rasa documentation entries. |

**Returns:** Matching documentation snippets with source links.

**Sample prompts:**

```text theme={null}
Search the Rasa docs for how to configure slot validation.
```

```text theme={null}
Look up how collect steps work in Rasa flows.
```

## Project introspection tools

### `list_project_flow_definitions`

List all flow definitions in the project. Returns flow ID, name, and file path for each flow.

| Parameter     | Type   | Required | Default  | Description                                                  |
| ------------- | ------ | -------- | -------- | ------------------------------------------------------------ |
| `data_folder` | string | no       | `"data"` | Folder containing flow YAML files, relative to project root. |

**Returns:** List of flows with `id`, `name`, and `file_path`.

**Sample prompt:**

```text theme={null}
List all flows in this project.
```

### `list_project_slot_definitions`

List all slot definitions from the project domain file(s). Returns slot name, type, and file path.

| Parameter       | Type   | Required | Default    | Description                                                    |
| --------------- | ------ | -------- | ---------- | -------------------------------------------------------------- |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files, relative to project root. |

**Returns:** List of slots with `name`, `type`, and `file_path`.

**Sample prompt:**

```text theme={null}
List all slots in this project and their types.
```

### `list_project_response_definitions`

List all response (utterance) definitions from the project domain file(s). Returns response name and file path.

| Parameter       | Type   | Required | Default    | Description                                                    |
| --------------- | ------ | -------- | ---------- | -------------------------------------------------------------- |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files, relative to project root. |

**Returns:** List of responses with `name` and `file_path`.

**Sample prompt:**

```text theme={null}
Show me all responses defined in this project.
```

### `get_flow`

Get a single flow by flow ID (YAML key) or flow name. Returns flow metadata and full definition including steps, triggers, and branching logic.

| Parameter     | Type   | Required | Default  | Description                                     |
| ------------- | ------ | -------- | -------- | ----------------------------------------------- |
| `flow_id`     | string | yes      | —        | Flow ID (YAML key) or human-readable flow name. |
| `data_folder` | string | no       | `"data"` | Folder containing flow YAML files.              |

**Returns:** Full flow definition with metadata.

**Sample prompt:**

```text theme={null}
Get the transfer_money flow and explain its steps.
```

### `get_slot`

Get a single slot by name. Returns slot metadata and full definition from the domain.

| Parameter       | Type   | Required | Default    | Description                          |
| --------------- | ------ | -------- | ---------- | ------------------------------------ |
| `slot_name`     | string | yes      | —          | Slot name.                           |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files. |

**Returns:** Full slot definition with type, mappings, and metadata.

**Sample prompt:**

```text theme={null}
Get the recipient slot definition and explain its mappings.
```

### `get_response`

Get a single response (utterance) by name. Returns response metadata and full definition including text, images, buttons, and custom payloads.

| Parameter       | Type   | Required | Default    | Description                          |
| --------------- | ------ | -------- | ---------- | ------------------------------------ |
| `response_name` | string | yes      | —          | Response name (e.g. `utter_greet`).  |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files. |

**Returns:** Full response definition with all variations.

**Sample prompt:**

```text theme={null}
Get the utter_ask_recipient response.
```

### `list_project_custom_actions_in_domain`

List all custom actions declared in the domain file(s). Returns action name and file path where the action is registered.

| Parameter       | Type   | Required | Default    | Description                          |
| --------------- | ------ | -------- | ---------- | ------------------------------------ |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files. |

**Returns:** List of custom action names with `name` and `file_path`. This lists domain declarations, not Python implementations.

**Sample prompt:**

```text theme={null}
What custom actions are declared in the domain?
```

### `list_custom_action_implementations`

List all custom action Python implementations in the project. Returns action name, class name, and file path for each action.

| Parameter        | Type   | Required | Default       | Description                                                                                                        |
| ---------------- | ------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------ |
| `actions_folder` | string | no       | auto-detected | Path to the actions folder relative to project root. Auto-detects from `endpoints.yml` or defaults to `"actions"`. |

**Returns:** List of action implementations with `action_name`, `class_name`, and `file_path`.

**Notes:**

* If `error` is set: the actions folder was not found. Check `endpoints.yml` or specify the folder.
* If `count=0` and no error: the actions folder exists but contains no action classes.

**Sample prompt:**

```text theme={null}
List all custom action implementations and their file locations.
```

### `list_default_action_names`

List all built-in default action names provided by Rasa. These actions are available without configuration and can be overridden.

**Parameters:** None.

**Returns:** List of default action name strings.

**Sample prompt:**

```text theme={null}
What are the default built-in Rasa actions?
```

## Schema tools

### `get_flow_schema`

Get the official Rasa flow schema in JSON Schema format. Use this to validate flow YAML or generate new flows.

| Parameter   | Type    | Required | Default | Description                                                         |
| ----------- | ------- | -------- | ------- | ------------------------------------------------------------------- |
| `calm_only` | boolean | no       | `true`  | Return only CALM-related properties, excluding NLU-specific fields. |

**Returns:** JSON Schema document describing flow structure: name, description, step types, branching logic (`if`/`then`/`else`), collect steps, flow guards, and more.

**Sample prompt:**

```text theme={null}
Get the flow schema so I can write a valid new flow.
```

### `get_domain_schema`

Get the official Rasa domain schema in YAML schema format. Use this to validate domain YAML or generate domain files.

| Parameter   | Type    | Required | Default | Description                                                         |
| ----------- | ------- | -------- | ------- | ------------------------------------------------------------------- |
| `calm_only` | boolean | no       | `true`  | Return only CALM-related properties, excluding NLU-specific fields. |

**Returns:** YAML schema document describing domain structure: slots, custom actions, responses, and more.

**Sample prompt:**

```text theme={null}
Get the domain schema. I need to add a new boolean slot correctly.
```

### `get_e2e_schema`

Get the official Rasa E2E test schema in YAML schema format. Use this to validate or generate end-to-end test files.

**Parameters:** None.

**Returns:** YAML schema document describing E2E test structure: test cases, steps (user and bot messages), fixtures, metadata, stub custom actions, and assertions.

**Sample prompt:**

```text theme={null}
Get the E2E test schema, then write tests for the transfer_money flow.
```

## Build and validation tools

### `validate_project`

Validate the assistant project configuration and training data. Runs comprehensive checks on domain, flows, config, and training data.

**Parameters:** None (reads from the configured project folder).

**Returns:** Pass/fail status with a list of errors and warnings.

**Notes:**

* Can take 60+ seconds for large projects.
* Always run this after making changes and before training.

**Sample prompts:**

```text theme={null}
Validate this project and tell me what's wrong.
```

```text theme={null}
I made changes to the domain. Validate and fix any issues.
```

### `train_rasa_assistant`

Train the Rasa assistant with the current project configuration. Creates a new model in the `models/` directory.

**Parameters:** None (reads from the configured project folder).

**Returns:** Training status (success/failure), model path, and any errors.

**Notes:**

* Can take several minutes for large projects.
* Only call this after validation passes.
* Each training run produces a new timestamped model file.

**Sample prompts:**

```text theme={null}
Train the assistant.
```

```text theme={null}
Validate and then train. If validation fails, fix the issues first.
```

## Runtime testing and debugging tools

### `talk_to_assistant`

Test the assistant by sending a sequence of messages and verifying responses. Creates a new conversation for each call.

| Parameter         | Type          | Required | Default                 | Description                                                                                                       |
| ----------------- | ------------- | -------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `messages`        | list\[string] | yes      | —                       | List of user messages to send in sequence. Each message is sent after the assistant responds to the previous one. |
| `rasa_server_url` | string        | no       | `http://localhost:5005` | Override the Rasa server URL. Leave empty to use the configured default.                                          |

**Returns:** Structured response with:

* Conversation history (user messages and assistant responses)
* Tracker context showing conversation state, active flows, and slot values

**Prerequisites:** The Rasa assistant must be running (`rasa run` or `rasa run --inspect`).

**Sample prompts:**

```text theme={null}
Talk to the assistant: "I want to send money", "to Jen", "50 dollars", "yes".
Verify the transfer_money flow completes successfully.
```

```text theme={null}
Test the happy path: send "hello" then "I need to transfer money to Bob".
Check which flow was triggered and what slots were filled.
```

### `get_assistant_logs`

Get recent log entries from the Rasa assistant for troubleshooting.

**Parameters:** None.

**Returns:** Recent log entries as text.

**Sample prompts:**

```text theme={null}
Get the assistant logs and explain why the last conversation failed.
```

```text theme={null}
Show me the assistant logs. I think a custom action is throwing an error.
```

## Simulation and evaluation tools

v3.17

### `validate_scenario`

Validate a scenario YAML file before running any simulation. Checks syntax and structure, assertion type validity, and that all slot names referenced in `initial_slots`, `slot_was_set`, and `slot_was_not_set` assertions exist in the domain with compatible types. All errors are reported together in a single response.

| Parameter       | Type   | Required | Default    | Description                                                                                         |
| --------------- | ------ | -------- | ---------- | --------------------------------------------------------------------------------------------------- |
| `scenario_path` | string | yes      | —          | Relative path to the scenario YAML file within the project (e.g. `eval/scenarios/happy_path.yml`).  |
| `domain_folder` | string | no       | `"domain"` | Folder containing domain YAML files, relative to project root. Used to verify slot names and types. |

**Returns:** Pass/fail status with a list of all validation errors.

**Sample prompts:**

```text theme={null}
Validate the scenario at eval/scenarios/order_delay.yml.
```

```text theme={null}
I just edited a scenario file. Check it for errors before running.
```

### `evaluate_agent`

Run a simulation and evaluation loop for a given scenario. Loads `eval/conftest.yml`, simulates a multi-turn conversation with an LLM-based user against the running Rasa server, evaluates deterministic assertions against the tracker event history, and scores quality criteria and metrics with an LLM judge. Writes per-run result files and updates the experiment summary.

| Parameter              | Type    | Required | Default            | Description                                                                                                                                                                                           |
| ---------------------- | ------- | -------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `scenario_path`        | string  | yes      | —                  | Relative path to the scenario YAML file within the project.                                                                                                                                           |
| `experiment_timestamp` | string  | yes      | —                  | Experiment folder name (e.g. `2026-04-21_14-30-22`). Generate once per session with `datetime.now().strftime('%Y-%m-%d_%H-%M-%S')` and reuse across all scenarios so they land under the same folder. |
| `run_count`            | integer | no       | `1`                | Number of times to run the scenario. Multiple runs surface LLM non-determinism. Capped at 10.                                                                                                         |
| `rasa_server_url`      | string  | no       | configured default | Override the Rasa server URL. Leave empty to use the server URL configured at startup.                                                                                                                |

**Returns:** Pass/fail verdict, runs passed/total count, and the path to the updated `summary.txt`.

**Prerequisites:** The Rasa assistant must be running (`rasa run --inspect` recommended so that simulated conversations are viewable in the Inspector).

**Notes:**

* A run is marked failed if any deterministic assertion fails or any quality criterion fails.
* Quality metrics (`task_completion` and aggregated `bot_quality` — `helpfulness`, `repair_quality`, `coherence`, `tone`) are informational and do not gate the pass/fail verdict.
* On timeout, completed `run_N.txt` files are preserved but `summary.txt` is not updated.

**Sample prompts:**

```text theme={null}
Generate and run a happy path scenario for the add_contact flow.
```

```text theme={null}
Run the order_delay scenario 3 times and summarize the results.
```

```text theme={null}
Run all scenarios in eval/scenarios/ and tell me which ones failed.
```

## Typical workflow

A common sequence for building a feature end-to-end:

1. **Discover** — `list_project_flow_definitions`, `list_project_slot_definitions`, `list_project_response_definitions`
2. **Understand schemas** — `get_flow_schema`, `get_domain_schema`, `get_e2e_schema`
3. **Implement** — write flows, domain entries, and custom actions
4. **Validate** — `validate_project`
5. **Train** — `train_rasa_assistant`
6. **Test** — `talk_to_assistant`
7. **Debug** — `get_assistant_logs` if behavior is unexpected
8. **Evaluate** — `validate_scenario`, `evaluate_agent` to run LLM-simulated conversations and score them against your goals

## Related

* [Rasa MCP Tools](/docs/pro/installation/rasa-mcp-tools) — setup and client configuration
* [Simulation and Evaluation](/docs/reference/testing/evals/overview) — scenario YAML schema, assertion types, conftest configuration, and result file formats
* [Command Line Interface](/docs/reference/api/command-line-interface) — Rasa CLI reference
* [Prompt-Driven Agent Tutorial](/docs/learn/ai-assisted-development) — build features with prompts


## Related topics

- [Rasa MCP Tools](/docs/pro/installation/rasa-mcp-tools.md)
- [Build an Agent with Prompts](/docs/learn/ai-assisted-development.md)
- [Developer Quickstart](/docs/learn/quickstart/pro.md)
- [Get Started with Rasa](/docs/pro/installation/overview.md)
- [MCP Servers](/docs/reference/integrations/mcp-servers.md)
