workflowy_delete_node
Remove a WorkFlowy node and all its child elements from your outline to maintain organized task management and hierarchical structure.
Instructions
Delete a WorkFlowy node and all its children
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes |
Implementation Reference
- src/workflowy_mcp/server.py:1096-1120 (handler)MCP tool handler and registration for workflowy_delete_node. Calls WorkFlowyClient.delete_node with rate limiting.@mcp.tool(name="workflowy_delete_node", description="Delete a WorkFlowy node and all its children") async def delete_node(node_id: str) -> dict: """Delete a WorkFlowy node and all its children. Args: node_id: The ID of the node to delete Returns: Dictionary with success status """ client = get_client() if _rate_limiter: await _rate_limiter.acquire() try: success = await client.delete_node(node_id) if _rate_limiter: _rate_limiter.on_success() return {"success": success, "deleted_id": node_id} except Exception as e: if _rate_limiter and hasattr(e, "__class__") and e.__class__.__name__ == "RateLimitError": _rate_limiter.on_rate_limit(getattr(e, "retry_after", None)) raise
- src/workflowy_mcp/server.py:1096-1097 (registration)Tool registration decorator defining the tool name and description.@mcp.tool(name="workflowy_delete_node", description="Delete a WorkFlowy node and all its children") async def delete_node(node_id: str) -> dict:
- tests/contract/test_delete_node.py:19-27 (handler)Contract test verifying the tool schema: input node_id: str (required).assert "workflowy_delete_node" in tools tool = tools["workflowy_delete_node"] assert tool.name == "workflowy_delete_node" assert tool.description is not None # Check parameters params = tool.parameters assert params["type"] == "object"