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

# EKB Runtime

> Ask agents, run published tools, and search knowledge from an MCP client

**Endpoint:** `/runtime/mcp`\
**Permission:** Use (`odin:use`) — consent label **Use your agents and tools**

Runtime turns what already exists in EKB into named MCP tools. Draft / unpublished work is never exposed — publishing is what makes custom tools available over MCP.

## Prerequisites

* Consent to **Use your agents and tools** for this client
* Access to the project(s) whose agents, tools, KB, or smart tables you want to use
* Published workflows / custom tools if you need `run_*` tools

## Tools the client sees

### Always present

| Tool                 | Purpose                                                                   | Key inputs                                                                                                                     |
| -------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `list_odin_projects` | Discover project ids, names, and descriptions                             | (none)                                                                                                                         |
| `search_knowledge`   | Search a project knowledge base and return matching passages with sources | `query` (required); `project_id` (required unless pinned); optional `max_results` (default 10)                                 |
| `query_smart_table`  | Read rows from a smart table by **name or id**                            | `table` (required); `project_id` (required unless pinned); optional `search`, `limit`, `page`, `sort_column`, `sort_direction` |

Use `search_knowledge` for looking up facts in documents. Use an `ask_<agent>` tool when you want an agent to **reason** over those results.

### Dynamic tools (per project)

| Pattern            | Meaning                                    | Key inputs                                                          |
| ------------------ | ------------------------------------------ | ------------------------------------------------------------------- |
| `ask_<agent_name>` | Ask a reachable agent                      | `message` (required); optional `chat_id` to continue a conversation |
| `run_<tool_name>`  | Run a **published** custom tool / workflow | Inputs mirror the tool’s declared schema (real names and types)     |

Naming notes:

* Agent and tool names are slugified for MCP (punctuation normalized)
* With multiple projects and no pin, names may include a project qualifier
* Tool lists can be large; pin a project when you know the target

Every `ask_*` response includes a `chat_id`. Pass it back on the next call to continue the same conversation; omit it to start fresh.

## Pin a project

Send this header from your MCP client config:

```text theme={null}
x-project-id: <your-project-id>
```

| Mode            | Behavior                                                                                                        |
| --------------- | --------------------------------------------------------------------------------------------------------------- |
| **With pin**    | Tools scoped to that project; `project_id` often optional on static tools                                       |
| **Without pin** | May aggregate across projects you can access; `project_id` required on `search_knowledge` / `query_smart_table` |

Discover ids with `list_odin_projects` if you do not already know them.

## Publishing and visibility

| Resource                | Exposed over Runtime when                                                                      |
| ----------------------- | ---------------------------------------------------------------------------------------------- |
| Agent                   | You can reach it in EKB with the same account                                                  |
| Custom tool / workflow  | It is **published** (drafts are omitted)                                                       |
| Knowledge base passages | Document is visible to you (including [Access Tags](/knowledge-base/tags-and-custom-metadata)) |
| Smart table rows        | Table exists in a project you can access                                                       |

Runtime does not grant extra visibility. Access Tags and project membership still filter what search and agents can return.

## When to use Runtime

* “Ask our support / HR / ops agent from Claude”
* “Run this published workflow with these inputs”
* “Search the KB” or “pull rows from a smart table”
* Any client that should **use** EKB without permission to **change** configuration

## Tips

* Publish workflows before expecting them as `run_*` tools
* Prefer Runtime-only connections on laptops and assistants that must not edit agents
* Prefer `ask_*` when you want judgment; prefer `search_knowledge` / `query_smart_table` for direct lookup
* Keep conversations coherent by reusing `chat_id`

## Troubleshooting

| Symptom                                               | What to check                                                                     |
| ----------------------------------------------------- | --------------------------------------------------------------------------------- |
| Expected `run_*` missing                              | Publish the tool; confirm the account can see it in the product                   |
| Wrong or huge tool list                               | Set `x-project-id`                                                                |
| Search returns nothing sensitive you expected to hide | Access Tags / project access for the **calling user** — Runtime acts as that user |
| `project_id is required`                              | Call `list_odin_projects` or pin with `x-project-id`                              |
| Conversation resets every turn                        | Pass `chat_id` from the previous `ask_*` response                                 |

## Related

* [Connect a client](/ekb-as-mcp/connect-a-client)
* [Authentication](/ekb-as-mcp/authentication)
* [EKB Builder](/ekb-as-mcp/builder)
* [Knowledge Base](/knowledge-base/kb-overview)
* [Tags & Custom Metadata](/knowledge-base/tags-and-custom-metadata)
