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

# Tool Groups & Modes

> Scope which of Ana's tools a connection exposes, and let your assistant load tools on demand.

Ana's tools are organized into **groups** so you can keep your client's tool list focused. The defaults (`analysis` and `catalog`) are on for every connection; the rest are off by default and enabled per connection.

## Tool groups

* **`analysis`** *(default)* — ask the data analyst agent questions, synchronous and streaming: `ana`, `ana_ask`, `ana_poll`.
* **`catalog`** *(default)* — discover the connectors you can query: `list_connectors`.
* **`sandcastle`** — run code and queries in a managed Python sandcastle: create, inspect, and stop sandcastles; run Python in a persistent kernel; load connector data or saved `.tql` queries from your Ontology into dataframes; run shell commands; read and upload files; and propose Ontology changes as a reviewable patch.
* **`ontology`** — review and govern proposed Ontology changes: list pending patches, read one, and approve, deny, or restore.

## Scoping a connection's tools

**Scope a connection's tools** with the `?toolsets=` query parameter (or the `X-MCP-Toolsets` header) — name the groups you want, or use a keyword: `all` for every group, `default` for the default-on groups:

```
https://app.textql.com/mcp?toolsets=analysis,catalog,sandcastle
```

This lets you expose, say, an analysis-only endpoint to one client and a fuller one to another.

## Dynamic mode

**Let your assistant load tools on demand** with `?dynamic=1`:

```
https://app.textql.com/mcp?dynamic=1
```

In dynamic mode the connecting client starts with just the four toolset meta-tools — `list_available_toolsets`, `get_toolset_tools`, `enable_toolset`, and `disable_toolset` — and enables a group only when a task needs it, so your assistant keeps a small, relevant tool list instead of loading everything up front. Dynamic mode needs a client that supports MCP tool-list updates (Claude Code, Cursor, and the MCP Inspector all do). You can combine the two — `?dynamic=1&toolsets=sandcastle` pre-enables a group in a dynamic session.

In dynamic mode the server also keeps track of your **active sandcastle** for the session, so you can call `execute_python`, `run_query`, and the other sandcastle tools without passing a `sandbox_id` — one is created automatically the first time you need it, and reused after.

## Related

* [Connecting a client](/core/how-it-works/mcp/client-setup) — add Ana to your MCP client and authorize over OAuth.
* [Managing access](/core/how-it-works/mcp/managing-access) — review and revoke authorized clients.
