manifest.json 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. {
  2. "id": "zoho-tasks",
  3. "name": "Zoho Tasks",
  4. "description": "Zoho Projects task management integration for EU data center",
  5. "version": "2.0.0",
  6. "author": "Ferenc Szontagh & Zoë",
  7. "sdkVersion": 1,
  8. "entry": "index.js",
  9. "runtime": "quickjs",
  10. "permissions": {
  11. "allowNetwork": true,
  12. "allowStorage": true
  13. },
  14. "config": [
  15. { "key": "client_id", "label": "Zoho OAuth Client ID", "required": true, "secret": true },
  16. { "key": "client_secret", "label": "Zoho OAuth Client Secret", "required": true, "secret": true },
  17. { "key": "portal_url", "label": "Zoho Projects Portal URL (e.g. https://projects.zoho.eu/portal/myportal)", "required": false, "secret": false }
  18. ],
  19. "tools": [
  20. {
  21. "name": "setup_auth",
  22. "description": "Exchange a Zoho grant token for access + refresh tokens. Run this ONCE after getting a grant token from the Zoho Developer Console.",
  23. "parameters": {
  24. "type": "object",
  25. "properties": {
  26. "grant_token": { "type": "string", "description": "Grant token from Zoho Developer Console (Self Client → Generate)" }
  27. },
  28. "required": ["grant_token"]
  29. }
  30. },
  31. {
  32. "name": "resolve_portal",
  33. "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.",
  34. "parameters": {
  35. "type": "object",
  36. "properties": {
  37. "portal_url": { "type": "string", "description": "Full portal URL (e.g. https://projects.zoho.eu/portal/aicaller) or portal name slug" },
  38. "portal_name": { "type": "string", "description": "Portal display name to match" }
  39. }
  40. }
  41. },
  42. {
  43. "name": "auth_status",
  44. "description": "Check authentication status and token validity",
  45. "parameters": { "type": "object", "properties": {} }
  46. },
  47. {
  48. "name": "list_projects",
  49. "description": "List all accessible Zoho Projects in the portal",
  50. "parameters": {
  51. "type": "object",
  52. "properties": {
  53. "index": { "type": "number", "description": "Page index (default 1)" }
  54. }
  55. }
  56. },
  57. {
  58. "name": "list_tasks",
  59. "description": "List tasks from a Zoho Projects project. Supports filtering by status, priority, assignee, and date range.",
  60. "parameters": {
  61. "type": "object",
  62. "properties": {
  63. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  64. "status": { "type": "string", "description": "Filter: all, completed, notcompleted (default: all)" },
  65. "priority": { "type": "string", "description": "Filter: all, none, low, medium, high" },
  66. "owner": { "type": "string", "description": "Filter: all or user ID" },
  67. "index": { "type": "number", "description": "Page index (default 1)" }
  68. },
  69. "required": ["project_id"]
  70. }
  71. },
  72. {
  73. "name": "get_task",
  74. "description": "Get full details of a single task",
  75. "parameters": {
  76. "type": "object",
  77. "properties": {
  78. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  79. "task_id": { "type": "string", "description": "Task ID" }
  80. },
  81. "required": ["project_id", "task_id"]
  82. }
  83. },
  84. {
  85. "name": "create_task",
  86. "description": "Create a new task in a Zoho Projects project",
  87. "parameters": {
  88. "type": "object",
  89. "properties": {
  90. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  91. "name": { "type": "string", "description": "Task name/title" },
  92. "description": { "type": "string", "description": "Task description (HTML allowed)" },
  93. "person_responsible": { "type": "string", "description": "Owner user ID(s), comma-separated" },
  94. "priority": { "type": "string", "description": "none, low, medium, high" },
  95. "start_date": { "type": "string", "description": "Start date (MM-DD-YYYY format)" },
  96. "end_date": { "type": "string", "description": "Due date (MM-DD-YYYY format)" },
  97. "tasklist_id": { "type": "string", "description": "Task list ID to add the task to" }
  98. },
  99. "required": ["project_id", "name"]
  100. }
  101. },
  102. {
  103. "name": "update_task",
  104. "description": "Update an existing task in Zoho Projects",
  105. "parameters": {
  106. "type": "object",
  107. "properties": {
  108. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  109. "task_id": { "type": "string", "description": "Task ID to update" },
  110. "name": { "type": "string", "description": "New task name" },
  111. "description": { "type": "string", "description": "New description (HTML allowed)" },
  112. "person_responsible": { "type": "string", "description": "New owner user ID(s), comma-separated" },
  113. "priority": { "type": "string", "description": "none, low, medium, high" },
  114. "start_date": { "type": "string", "description": "New start date (MM-DD-YYYY)" },
  115. "end_date": { "type": "string", "description": "New due date (MM-DD-YYYY)" },
  116. "percent_complete": { "type": "string", "description": "Completion percentage (0-100)" }
  117. },
  118. "required": ["project_id", "task_id"]
  119. }
  120. },
  121. {
  122. "name": "delete_task",
  123. "description": "Delete a task from Zoho Projects",
  124. "parameters": {
  125. "type": "object",
  126. "properties": {
  127. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  128. "task_id": { "type": "string", "description": "Task ID to delete" }
  129. },
  130. "required": ["project_id", "task_id"]
  131. }
  132. },
  133. {
  134. "name": "add_comment",
  135. "description": "Add a comment to a task",
  136. "parameters": {
  137. "type": "object",
  138. "properties": {
  139. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  140. "task_id": { "type": "string", "description": "Task ID" },
  141. "content": { "type": "string", "description": "Comment text (HTML allowed)" }
  142. },
  143. "required": ["project_id", "task_id", "content"]
  144. }
  145. },
  146. {
  147. "name": "update_comment",
  148. "description": "Update an existing comment on a task",
  149. "parameters": {
  150. "type": "object",
  151. "properties": {
  152. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  153. "task_id": { "type": "string", "description": "Task ID" },
  154. "comment_id": { "type": "string", "description": "Comment ID to update" },
  155. "content": { "type": "string", "description": "New comment text (HTML allowed)" }
  156. },
  157. "required": ["project_id", "task_id", "comment_id", "content"]
  158. }
  159. },
  160. {
  161. "name": "delete_comment",
  162. "description": "Delete a comment from a task",
  163. "parameters": {
  164. "type": "object",
  165. "properties": {
  166. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  167. "task_id": { "type": "string", "description": "Task ID" },
  168. "comment_id": { "type": "string", "description": "Comment ID to delete" }
  169. },
  170. "required": ["project_id", "task_id", "comment_id"]
  171. }
  172. },
  173. {
  174. "name": "my_tasks",
  175. "description": "Get tasks assigned to the authenticated user across all projects",
  176. "parameters": {
  177. "type": "object",
  178. "properties": {
  179. "status": { "type": "string", "description": "Filter: all, completed, notcompleted (default: all)" },
  180. "priority": { "type": "string", "description": "Filter: all, none, low, medium, high" },
  181. "index": { "type": "number", "description": "Page index (default 1)" }
  182. }
  183. }
  184. },
  185. {
  186. "name": "search_tasks",
  187. "description": "Search tasks by keyword across all projects in the portal",
  188. "parameters": {
  189. "type": "object",
  190. "properties": {
  191. "query": { "type": "string", "description": "Search term" },
  192. "project_id": { "type": "string", "description": "Optional: limit search to a specific project" }
  193. },
  194. "required": ["query"]
  195. }
  196. },
  197. {
  198. "name": "log_time",
  199. "description": "Log time (timesheet entry) against a task in Zoho Projects",
  200. "parameters": {
  201. "type": "object",
  202. "properties": {
  203. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  204. "task_id": { "type": "string", "description": "Task ID to log time against" },
  205. "hours": { "type": "number", "description": "Hours worked (can include decimals, e.g. 1.5 for 1h 30m)" },
  206. "minutes": { "type": "number", "description": "Additional minutes (optional)" },
  207. "date": { "type": "string", "description": "Date of work (MM-DD-YYYY format, default: today)" },
  208. "notes": { "type": "string", "description": "Description of the work done" }
  209. },
  210. "required": ["project_id", "task_id", "hours"]
  211. }
  212. },
  213. {
  214. "name": "list_timesheets",
  215. "description": "List timesheet entries for a project, optionally filtered by task and date range",
  216. "parameters": {
  217. "type": "object",
  218. "properties": {
  219. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  220. "task_id": { "type": "string", "description": "Optional: filter by task ID" },
  221. "from_date": { "type": "string", "description": "Start date (MM-DD-YYYY)" },
  222. "to_date": { "type": "string", "description": "End date (MM-DD-YYYY)" },
  223. "index": { "type": "number", "description": "Page index (default 1)" }
  224. },
  225. "required": ["project_id"]
  226. }
  227. },
  228. {
  229. "name": "delete_timesheet",
  230. "description": "Delete a timesheet entry from a Zoho Projects project",
  231. "parameters": {
  232. "type": "object",
  233. "properties": {
  234. "project_id": { "type": "string", "description": "Zoho Projects project ID" },
  235. "log_id": { "type": "string", "description": "Timesheet log ID to delete" }
  236. },
  237. "required": ["project_id", "log_id"]
  238. }
  239. }
  240. ],
  241. "skills": ["zoho-tasks"]
  242. }