{ "id": "zoho-tasks", "name": "Zoho Tasks", "description": "Zoho Projects task management integration for EU data center", "version": "2.0.0", "author": "Ferenc Szontagh & Zoë", "sdkVersion": 1, "entry": "index.js", "runtime": "quickjs", "permissions": { "allowNetwork": true, "allowStorage": true }, "config": [ { "key": "client_id", "label": "Zoho OAuth Client ID", "required": true, "secret": true }, { "key": "client_secret", "label": "Zoho OAuth Client Secret", "required": true, "secret": true }, { "key": "portal_url", "label": "Zoho Projects Portal URL (e.g. https://projects.zoho.eu/portal/myportal)", "required": false, "secret": false } ], "tools": [ { "name": "setup_auth", "description": "Exchange a Zoho grant token for access + refresh tokens. Run this ONCE after getting a grant token from the Zoho Developer Console.", "parameters": { "type": "object", "properties": { "grant_token": { "type": "string", "description": "Grant token from Zoho Developer Console (Self Client → Generate)" } }, "required": ["grant_token"] } }, { "name": "resolve_portal", "description": "Resolve a portal URL or name to its numeric portal ID. Call this after setup_auth to auto-configure the portal. Optionally pass portal_url or portal_name to match a specific portal.", "parameters": { "type": "object", "properties": { "portal_url": { "type": "string", "description": "Full portal URL (e.g. https://projects.zoho.eu/portal/aicaller) or portal name slug" }, "portal_name": { "type": "string", "description": "Portal display name to match" } } } }, { "name": "auth_status", "description": "Check authentication status and token validity", "parameters": { "type": "object", "properties": {} } }, { "name": "list_projects", "description": "List all accessible Zoho Projects in the portal", "parameters": { "type": "object", "properties": { "index": { "type": "number", "description": "Page index (default 1)" } } } }, { "name": "list_tasks", "description": "List tasks from a Zoho Projects project. Supports filtering by status, priority, assignee, and date range.", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "status": { "type": "string", "description": "Filter: all, completed, notcompleted (default: all)" }, "priority": { "type": "string", "description": "Filter: all, none, low, medium, high" }, "owner": { "type": "string", "description": "Filter: all or user ID" }, "index": { "type": "number", "description": "Page index (default 1)" } }, "required": ["project_id"] } }, { "name": "get_task", "description": "Get full details of a single task", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID" } }, "required": ["project_id", "task_id"] } }, { "name": "create_task", "description": "Create a new task in a Zoho Projects project", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "name": { "type": "string", "description": "Task name/title" }, "description": { "type": "string", "description": "Task description (HTML allowed)" }, "person_responsible": { "type": "string", "description": "Owner user ID(s), comma-separated" }, "priority": { "type": "string", "description": "none, low, medium, high" }, "start_date": { "type": "string", "description": "Start date (MM-DD-YYYY format)" }, "end_date": { "type": "string", "description": "Due date (MM-DD-YYYY format)" }, "tasklist_id": { "type": "string", "description": "Task list ID to add the task to" } }, "required": ["project_id", "name"] } }, { "name": "update_task", "description": "Update an existing task in Zoho Projects", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID to update" }, "name": { "type": "string", "description": "New task name" }, "description": { "type": "string", "description": "New description (HTML allowed)" }, "person_responsible": { "type": "string", "description": "New owner user ID(s), comma-separated" }, "priority": { "type": "string", "description": "none, low, medium, high" }, "start_date": { "type": "string", "description": "New start date (MM-DD-YYYY)" }, "end_date": { "type": "string", "description": "New due date (MM-DD-YYYY)" }, "percent_complete": { "type": "string", "description": "Completion percentage (0-100)" } }, "required": ["project_id", "task_id"] } }, { "name": "delete_task", "description": "Delete a task from Zoho Projects", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID to delete" } }, "required": ["project_id", "task_id"] } }, { "name": "add_comment", "description": "Add a comment to a task", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID" }, "content": { "type": "string", "description": "Comment text (HTML allowed)" } }, "required": ["project_id", "task_id", "content"] } }, { "name": "update_comment", "description": "Update an existing comment on a task", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID" }, "comment_id": { "type": "string", "description": "Comment ID to update" }, "content": { "type": "string", "description": "New comment text (HTML allowed)" } }, "required": ["project_id", "task_id", "comment_id", "content"] } }, { "name": "delete_comment", "description": "Delete a comment from a task", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID" }, "comment_id": { "type": "string", "description": "Comment ID to delete" } }, "required": ["project_id", "task_id", "comment_id"] } }, { "name": "my_tasks", "description": "Get tasks assigned to the authenticated user across all projects", "parameters": { "type": "object", "properties": { "status": { "type": "string", "description": "Filter: all, completed, notcompleted (default: all)" }, "priority": { "type": "string", "description": "Filter: all, none, low, medium, high" }, "index": { "type": "number", "description": "Page index (default 1)" } } } }, { "name": "search_tasks", "description": "Search tasks by keyword across all projects in the portal", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "Search term" }, "project_id": { "type": "string", "description": "Optional: limit search to a specific project" } }, "required": ["query"] } }, { "name": "log_time", "description": "Log time (timesheet entry) against a task in Zoho Projects", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Task ID to log time against" }, "hours": { "type": "number", "description": "Hours worked (can include decimals, e.g. 1.5 for 1h 30m)" }, "minutes": { "type": "number", "description": "Additional minutes (optional)" }, "date": { "type": "string", "description": "Date of work (MM-DD-YYYY format, default: today)" }, "notes": { "type": "string", "description": "Description of the work done" } }, "required": ["project_id", "task_id", "hours"] } }, { "name": "list_timesheets", "description": "List timesheet entries for a project, optionally filtered by task and date range", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "task_id": { "type": "string", "description": "Optional: filter by task ID" }, "from_date": { "type": "string", "description": "Start date (MM-DD-YYYY)" }, "to_date": { "type": "string", "description": "End date (MM-DD-YYYY)" }, "index": { "type": "number", "description": "Page index (default 1)" } }, "required": ["project_id"] } }, { "name": "delete_timesheet", "description": "Delete a timesheet entry from a Zoho Projects project", "parameters": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Zoho Projects project ID" }, "log_id": { "type": "string", "description": "Timesheet log ID to delete" } }, "required": ["project_id", "log_id"] } } ], "skills": ["zoho-tasks"] }