Source code for rossum_mcp.tools.delete.handler

from __future__ import annotations

from typing import TYPE_CHECKING

from fastmcp.exceptions import ToolError

from rossum_mcp.tools.delete.models import DeleteEntityType
from rossum_mcp.tools.delete.registry import build_delete_registry

if TYPE_CHECKING:
    from fastmcp import FastMCP
    from rossum_api import AsyncRossumAPIClient


[docs] def register_delete_tools(mcp: FastMCP, client: AsyncRossumAPIClient) -> None: registry = build_delete_registry(client) # Fail fast at startup if DeleteEntityType drifts from the registry for _entity in DeleteEntityType: if _entity not in registry: raise RuntimeError( f"DeleteEntityType member '{_entity}' is missing from registry — " "update DeleteEntityType or build_delete_registry to keep them in sync" ) @mcp.tool( description=( "Delete an entity by ID. " "Entity-specific behavior: " "queue → deletion begins after ~24h, cascades to annotations/documents; " "annotation → soft-delete (status 'deleted'); " "workspace → fails if it still contains queues; " "schema → fails with 409 if linked to any queue/annotation." ), tags={"write"}, annotations={"readOnlyHint": False, "destructiveHint": True}, ) async def delete(entity: DeleteEntityType, entity_id: int) -> dict: delete_fn = registry.get(entity) if delete_fn is None: raise ToolError(f"Unknown entity type: {entity}") return await delete_fn(entity_id)