Run Odoo actions
odoo_executeInvoke an arbitrary public method on an Odoo model or set of records (e.g. action_confirm on sale.order, action_process on ai.video). Take the method from the model's operations (odoo_fields_get with with_operations=true), never from a field name or by analogy: a guessed one fails in Odoo. The model must be on the workspace's write whitelist with can_execute=true. Internal methods (starting with ) and dedicated-tool methods (create, write, unlink, sudo, with_user, with_company, with_env, invalidate, flush) are always blocked, and so is messaging (message_post and family, WhatsApp sends): post with odoo_message_post. Hard limit of 200 ids per call. For @api.model methods, pass ids=[]. Default timeout is 300s; pass timeout (in seconds, max 600) for slower methods. On timeout the tool returns a structured error with code='timeout' instead of raising.
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": {
"model": "<model>",
"method": "<method>"
},
"name": "odoo_execute"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Record IDs to invoke the method on (max 200). Empty list for @api.model methods. | |
| model | Yes | Odoo model technical name. | |
| kwargs | No | Keyword arguments forwarded to the method. | |
| method | Yes | Public method name (no underscore prefix). | |
| context | No | Optional Odoo context. | |
| timeout | No | Per-call timeout in seconds. Default 300, hard cap 600. Bump it for methods that take longer (transcription, batch posting). Returns code='timeout' if exceeded. |