list_strategies
Browse available chunking strategies for your RAG corpus. Filter by content type to find relevant options.
Instructions
List registered chunking strategies, optionally filtered by content type.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content_type | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/chunktuner/mcp/tools.py:31-41 (handler)MCP tool handler registered via @mcp.tool() decorator. Calls list_strategies_impl and logs call latency.
@mcp.tool() def list_strategies(content_type: str | None = None) -> list[dict]: """List registered chunking strategies, optionally filtered by content type.""" t0 = time.perf_counter() try: out = list_strategies_impl(content_type) _log_tool("list_strategies", t0, True) return out except Exception: _log_tool("list_strategies", t0, False) raise - src/chunktuner/api/routes.py:53-55 (handler)FastAPI HTTP route handler for GET /list_strategies, delegates to list_strategies_impl.
@router.get("/list_strategies") def list_strategies(content_type: str | None = None) -> list[dict]: return list_strategies_impl(content_type) - src/chunktuner/mcp/service.py:40-52 (helper)Shared implementation that builds the full strategy registry and returns a list of strategy dicts (name, description, supported_content_types, supported_params).
def list_strategies_impl(content_type: str | None = None) -> list[dict]: reg = build_full_registry() out: list[dict] = [] for s in reg.list(content_type): out.append( { "name": s.name, "description": s.description, "supported_content_types": s.supported_content_types, "supported_params": s.param_schema(), } ) return out - src/chunktuner/mcp/tools.py:31-41 (registration)Tool registered via @mcp.tool() decorator inside register_tools(), making it available as an MCP tool.
@mcp.tool() def list_strategies(content_type: str | None = None) -> list[dict]: """List registered chunking strategies, optionally filtered by content type.""" t0 = time.perf_counter() try: out = list_strategies_impl(content_type) _log_tool("list_strategies", t0, True) return out except Exception: _log_tool("list_strategies", t0, False) raise - StrategyRegistry class with list() method that optionally filters by content_type, used internally by list_strategies_impl.
class StrategyRegistry: def __init__(self) -> None: self._by_name: dict[str, ChunkingStrategy] = {} def register(self, strategy: ChunkingStrategy) -> None: self._by_name[strategy.name] = strategy def get(self, name: str) -> ChunkingStrategy: if name not in self._by_name: raise KeyError(f"Unknown strategy: {name}") return self._by_name[name] def list(self, content_type: str | None = None) -> list[ChunkingStrategy]: strategies = list(self._by_name.values()) if content_type is None: return strategies return [s for s in strategies if content_type in s.supported_content_types] def names(self, content_type: str | None = None) -> list[str]: return [s.name for s in self.list(content_type)]