delete_folder
Deletes a folder from the content repository using its unique identifier or path. Returns the folder ID on success.
Instructions
Deletes a folder in the content repository. This tool interfaces with the GraphQL API to delete a folder object with the provided id.
:param id_or_path string Yes The unique identifier or path for the folder. If not provided, an error will be returned.
:returns: If successful, return the folder id. Else, return a ToolError instance that describes the error.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_path | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/cs_mcp_server/tools/folders.py:40-42 (registration)The register_folder_tools function that registers all folder tools including delete_folder on the FastMCP server instance.
def register_folder_tools(mcp: FastMCP, graphql_client: GraphQLClient) -> None: @mcp.tool( name="create_folder", - The delete_folder tool handler decorated with @mcp.tool(name='delete_folder'). Takes an id_or_path string, validates input, executes a GraphQL deleteFolder mutation, and returns the folder ID or a ToolError on failure.
@mcp.tool( name="delete_folder", ) def delete_folder(id_or_path: str) -> Union[str, ToolError]: """ Deletes a folder in the content repository. This tool interfaces with the GraphQL API to delete a folder object with the provided id. :param id_or_path string Yes The unique identifier or path for the folder. If not provided, an error will be returned. :returns: If successful, return the folder id. Else, return a ToolError instance that describes the error. """ method_name = "delete_folder" try: # check id or path if not id_or_path: return ToolError( message=f"delete_folder failed: id is a required input.", ) mutation = """ mutation deleteFolder( $id_or_path:String! $repo: String!) { deleteFolder(repositoryIdentifier: $repo, identifier: $id_or_path ) { id className } } """ var = { "repo": graphql_client.object_store, "id_or_path": id_or_path, } response = graphql_client.execute(query=mutation, variables=var) # handling exception, for example duplicate folder name if "errors" in response: return ToolError( message=f"delete_folder failed: got err {response}.", ) return response["data"]["deleteFolder"]["id"] except Exception as e: error_traceback = traceback.format_exc(limit=TRACEBACK_LIMIT) logger.error( f"{method_name} failed: {e.__class__.__name__} - {str(e)}\n{error_traceback}" ) return ToolError( message=f"{method_name} failed: got err {e}. Trace available in server logs.", ) - GraphQL mutation used by delete_folder to delete a folder via the deleteFolder mutation with repository and identifier arguments.
mutation = """ mutation deleteFolder( $id_or_path:String! $repo: String!) { deleteFolder(repositoryIdentifier: $repo, identifier: $id_or_path ) { id className } } """ - src/cs_mcp_server/mcp_server_main.py:42-45 (registration)Import of register_folder_tools from cs_mcp_server.tools.folders in the main server file.
from cs_mcp_server.tools.folders import register_folder_tools from cs_mcp_server.tools.annotations import register_annotation_tools from cs_mcp_server.tools.property_extraction import register_property_extraction_tools from cs_mcp_server.tools.classification import register_classification_tools - src/cs_mcp_server/mcp_server_main.py:268-300 (registration)Registration calls to register_folder_tools for both CORE and FULL server types.
# Register tools based on server type if server_type == ServerType.CORE: register_document_tools(mcp, graphql_client, metadata_cache) register_folder_tools(mcp, graphql_client) register_class_tools(mcp, graphql_client, metadata_cache) register_search_tools(mcp, graphql_client, metadata_cache) # register_annotation_tools(mcp, graphql_client) # register_custom_object_tools(mcp, graphql_client) logger.info("Core tools registered") elif server_type == ServerType.AI__DOCUMENT_INSIGHT: register_advanced_search_tools(mcp, graphql_client, metadata_cache) register_vector_search_tool(mcp, graphql_client) logger.info("AI Document Insight tools registered") elif server_type == ServerType.LEGAL_HOLD: register_hold_tools(mcp, graphql_client) logger.info("Legal hold tools registered") elif server_type == ServerType.PROPERTY_EXTRACTION_AND_CLASSIFICATION: register_property_extraction_tools(mcp, graphql_client, metadata_cache) register_classification_tools(mcp, graphql_client, metadata_cache) logger.info("Property extraction and classification tools registered") elif server_type == ServerType.FULL: register_document_tools(mcp, graphql_client, metadata_cache) register_folder_tools(mcp, graphql_client) register_class_tools(mcp, graphql_client, metadata_cache) register_search_tools(mcp, graphql_client, metadata_cache) # register_annotation_tools(mcp, graphql_client) # register_custom_object_tools(mcp, graphql_client) register_vector_search_tool(mcp, graphql_client) register_advanced_search_tools(mcp, graphql_client, metadata_cache)