Manage scheduled tasks
tuqui_scheduledCreate, read, update or delete the workspace's scheduled tasks (automations). action='list' returns a page of them; 'get' one in full; 'save' creates when 'task_id' is absent and updates when present; 'delete' removes one. kind='personal' (default) is your own automation — it runs as you and is charged to you; kind='agent' is a trigger of an agent and requires managing that agent; one saved by a non-admin stays off until a workspace admin turns it on. Cron is the standard 5-field expression, except the day, which also takes last (last day of the month) and 2nd tue (a weekday by its position). act_without_approval lets each run do, without asking, what the chat would ask to confirm (emailing someone other than the person, writing in Odoo); off by default. A run never deletes records nor calls these Odoo methods: action_invoice_sent, action_post, action_send_and_print, action_send_mail, action_validate, button_immediate_transfer, button_validate, send_mail (action_post on account.payment: only a payment through a payment provider). When the instruction asks for one, say so BEFORE saving and offer the run as a check that lists the records instead. A personal task with act_without_approval on may call stock.picking.button_immediate_transfer, stock.picking.button_validate, plain (no kwargs, no context), on models the workspace lets Tuqui execute on: check that with odoo_write_models before saving, and say so if it is missing. Even then Odoo may answer with a wizard (a partial delivery), which a run leaves for a person.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"action": "<action>"
},
"name": "tuqui_scheduled"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 'personal' (default) runs as you, with your accounts. 'agent' is a trigger of the agent and runs with its service identity — it needs 'agent_id' and rights over that agent. | personal |
| name | No | Human name. Required to create. | |
| limit | No | list only. | |
| action | Yes | REQUIRED. What to do with the scheduled tasks. | |
| offset | No | list only. | |
| prompt | No | What the run should do, in words. Required to create. | |
| enabled | No | Turn the task on or off (update only). Turning an agent's automation on takes a workspace admin. | |
| task_id | No | UUID. Required for 'get' and 'delete'; on 'save' it means update. | |
| agent_id | No | UUID. Required when kind='agent'. On a personal task it is a LENS: it lends the run the agent's instructions, skills and tools — never its identity. | |
| timezone | No | IANA name the cron is read in, e.g. 'America/Argentina/Buenos_Aires'. Omit it and a new task takes the caller's own clock, which is almost always right. Name it to file a task on somebody else's, or to MOVE an existing one — without it there was no way to change the zone of a task already saved. | |
| cron_expr | No | 5-field cron. Required to create. Read on the CALLER'S clock, not in UTC: '0 9 * * 1' is Mondays at 09:00 where the caller is, and stays 09:00 across a daylight-saving change. The day field is Linux cron plus two expressions cron cannot say: '0 9 last * *' is the last day of every month, and '0 9 2nd tue * *' the second Tuesday — for those, leave day-of-week at '*', because the weekday is named inside the day field. An automation may not run more often than every 15 minutes: that is the reservation that keeps a still-running task from being started a second time. | |
| project_id | No | UUID of the project the run belongs to. | |
| description | No | ||
| consent_token | No | The approval a person gave for THIS call in Tuqui. Bound to these arguments and valid once. | |
| act_without_approval | No | Personal tasks only, on 'save'. True lets every run do, without asking, what needs the person's approval in the chat: email someone other than them, write in Odoo, post. Runs happen while nobody watches, so without it such a step is skipped and the run says so. Ask for it only when the task needs one of those steps, and tell the person in a sentence what it lets the task do. Even then a run only emails someone outside the workspace if the task's prompt writes out their address: put every outside address the task should mail in the prompt. |