fastmcp.experimental.transforms.code_mode
Classes
SandboxProvider
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
MontySandboxProvider
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.
run
Search
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.Nonemeans no limit.
GetSchemas
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
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
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
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:

