dooray_workflows
Manage Dooray project workflows by listing, viewing details, creating, updating, or deleting workflows to organize and automate project processes.
Instructions
Manage Dooray workflows - list project workflows, get workflow details, create, update, delete workflows
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on workflows | |
| workflowId | No | Workflow ID (required for get/update/delete) | |
| name | No | Workflow name (for create/update) | |
| projectId | No | Project ID (optional - uses default from environment if not provided) |
Implementation Reference
- src/dooray_mcp/tools/workflows.py:8-50 (handler)The WorkflowsTool class provides the main handler for the 'dooray_workflows' tool, dispatching to specific workflow actions (list, get, create, update, delete) based on input arguments.class WorkflowsTool: """Handle Dooray workflow operations.""" def __init__(self, client: DoorayClient): self.client = client async def handle(self, args: Dict[str, Any]) -> Dict[str, Any]: """Handle workflow tool calls.""" action = args.get("action") if action == "list": return await list_workflows( self.client, args.get("projectId") ) elif action == "get": return await get_workflow_details( self.client, args["workflowId"], args.get("projectId") ) elif action == "create": return await create_workflow( self.client, args["name"], args.get("projectId") ) elif action == "update": return await update_workflow( self.client, args["workflowId"], args["name"], args.get("projectId") ) elif action == "delete": return await delete_workflow( self.client, args["workflowId"], args.get("projectId") ) else: raise ValueError(f"Unknown action: {action}")
- src/dooray_mcp/server.py:283-309 (schema)Input schema definition for the 'dooray_workflows' tool, specifying actions and required parameters.types.Tool( name="dooray_workflows", description="Manage Dooray workflows - list project workflows, get workflow details, create, update, delete workflows", inputSchema={ "type": "object", "properties": { "action": { "type": "string", "enum": ["list", "get", "create", "update", "delete"], "description": "Action to perform on workflows" }, "workflowId": { "type": "string", "description": "Workflow ID (required for get/update/delete)" }, "name": { "type": "string", "description": "Workflow name (for create/update)" }, "projectId": { "type": "string", "description": "Project ID (optional - uses default from environment if not provided)" } }, "required": ["action"] } )
- src/dooray_mcp/server.py:373-375 (registration)Tool registration and invocation in the main handle_call_tool function, instantiating WorkflowsTool and calling its handle method.elif name == "dooray_workflows": tool = WorkflowsTool(dooray_client) result = await tool.handle(args)
- Helper function to list workflows for a project via Dooray API.async def list_workflows(client: DoorayClient, project_id: Optional[str] = None) -> Dict[str, Any]: """ List all workflows for a project Args: client: DoorayClient instance project_id: Project ID (optional - uses default from environment if not provided) Returns: Dictionary containing workflow list response """ # Use default project ID if not provided if not project_id: project_id = client.project_id if not project_id: raise ValueError("Project ID must be provided either as parameter or environment variable") endpoint = f"/project/v1/projects/{project_id}/workflows" return await client.get(endpoint)