Skip to main content
Glama

MCP for Claude & ChatGPT

Manage scheduled tasks

tuqui_scheduled
Destructive

Create, 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

NameRequiredDescriptionDefault
kindNo'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
nameNoHuman name. Required to create.
limitNolist only.
actionYesREQUIRED. What to do with the scheduled tasks.
offsetNolist only.
promptNoWhat the run should do, in words. Required to create.
enabledNoTurn the task on or off (update only). Turning an agent's automation on takes a workspace admin.
task_idNoUUID. Required for 'get' and 'delete'; on 'save' it means update.
agent_idNoUUID. 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.
timezoneNoIANA 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_exprNo5-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_idNoUUID of the project the run belongs to.
descriptionNo
consent_tokenNoThe approval a person gave for THIS call in Tuqui. Bound to these arguments and valid once.
act_without_approvalNoPersonal 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, destructive tool, and the description adds substantial context beyond them: a non-admin's saved task stays off until an admin enables it, act_without_approval defaults off and silently skips skipped steps, a hard floor of one run per 15 minutes, an explicit blocklist of Odoo methods runs may never call, and the note that Odoo may return a wizard (partial delivery) which the run leaves for a human. Nothing here conflicts with the destructiveHint/readOnlyHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded well: resource, then action map, then kind semantics, then the caveats. It runs long for a 15-parameter destructive tool but nearly every clause carries decision-relevant information. The safety block is dense to the point of being hard to parse in one pass (the button_immediate_transfer paragraph in particular), which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, destructive, no-output-schema tool, the description covers the missing pieces: what each action returns at a high level ('a page of them', 'one in full'), the approval/consent flow's implications, and the operational limits an agent could otherwise violate. Nothing an agent needs in order to call this safely is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 93%, so the schema already carries most parameter meaning (cron format, timezone semantics, agent_id lens behaviour, consent_token). The description reinforces the key interactions — task_id present means update, agent_id is required for kind='agent' — and adds the cron day-field extensions, but much of it restates what the field descriptions already say. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the resource (the workspace's scheduled tasks/automations) and all four verbs, then maps each action value ('list', 'get', 'save', 'delete') to a concrete effect, including the create-vs-update rule for 'save'. An agent knows exactly what the tool manipulates and what each action does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to pick kind='personal' vs 'agent' and the rights each requires, when to set act_without_approval (only if the task needs an approval-gated step) and that the person must be told, and what to do when an instruction asks for a forbidden Odoo method: say so BEFORE saving and offer a listing run instead. It also names the sibling check tool (odoo_write_models) and the condition that triggers it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.