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

# code_mode

# `fastmcp.experimental.transforms.code_mode`

## Classes

### `SandboxProvider` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L73" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Interface for executing LLM-generated Python code in a sandbox.

WARNING: The `code` parameter passed to `run` contains untrusted,
LLM-generated Python.  Implementations MUST execute it in an isolated
sandbox — never with plain `exec()`.  Use `MontySandboxProvider`
(backed by `pydantic-monty`) for production workloads.

**Methods:**

#### `run` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L82" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={"theme":{"light":"snazzy-light","dark":"dark-plus"}}
run(self, code: str) -> Any
```

### `MontySandboxProvider` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L91" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Sandbox provider backed by `pydantic-monty`.

**Args:**

* `limits`: Resource limits for sandbox execution. Supported keys:
  `max_duration_secs` (float), `max_allocations` (int),
  `max_memory` (int), `max_recursion_depth` (int),
  `gc_interval` (int).  All are optional; omit a key to
  leave that limit uncapped.

**Methods:**

#### `run` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L109" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={"theme":{"light":"snazzy-light","dark":"dark-plus"}}
run(self, code: str) -> Any
```

### `Search` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L180" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Discovery tool factory that searches the catalog by query.

**Args:**

* `search_fn`: Async callable `(tools, query) -> matching_tools`.
  Defaults to BM25 ranking.
* `name`: Name of the synthetic tool exposed to the LLM.
* `default_detail`: Default detail level for search results.
  `"brief"` returns tool names and descriptions only.
  `"detailed"` returns compact markdown with parameter schemas.
  `"full"` returns complete JSON tool definitions.
* `default_limit`: Maximum number of results to return.
  The LLM can override this per call.  `None` means no limit.

### `GetSchemas` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L262" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Discovery tool factory that returns schemas for tools by name.

**Args:**

* `name`: Name of the synthetic tool exposed to the LLM.
* `default_detail`: Default detail level for schema results.
  `"brief"` returns tool names and descriptions only.
  `"detailed"` renders compact markdown with parameter names,
  types, and required markers.
  `"full"` returns the complete JSON schema.

### `GetTags` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L323" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Discovery tool factory that lists tool tags from the catalog.

Reads `tool.tags` from the catalog and groups tools by tag. Tools
without tags appear under `"untagged"`.

**Args:**

* `name`: Name of the synthetic tool exposed to the LLM.
* `default_detail`: Default detail level.
  `"brief"` returns tag names with tool counts.
  `"full"` lists all tools under each tag.

### `ListTools` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L390" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Discovery tool factory that lists all tools in the catalog.

**Args:**

* `name`: Name of the synthetic tool exposed to the LLM.
* `default_detail`: Default detail level.
  `"brief"` returns tool names and one-line descriptions.
  `"detailed"` returns compact markdown with parameter schemas.
  `"full"` returns the complete JSON schema.

### `CodeMode` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L439" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Transform that collapses all tools into discovery + execute meta-tools.

Discovery tools are composable via the `discovery_tools` parameter.
Each is a callable that receives catalog access and returns a `Tool`.
By default, `Search` and `GetSchemas` are included for
progressive disclosure: search finds candidates, get\_schema retrieves
parameter details, and execute runs code.

The `execute` tool is always present and provides a sandboxed Python
environment with `call_tool(name, params)` in scope.

**Methods:**

#### `transform_tools` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L489" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={"theme":{"light":"snazzy-light","dark":"dark-plus"}}
transform_tools(self, tools: Sequence[Tool]) -> Sequence[Tool]
```

#### `get_tool` <sup><a href="https://github.com/PrefectHQ/fastmcp/blob/main/src/fastmcp/experimental/transforms/code_mode.py#L492" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python  theme={"theme":{"light":"snazzy-light","dark":"dark-plus"}}
get_tool(self, name: str, call_next: GetToolNext) -> Tool | None
```
