Search records
odoo_searchSearch model records using Odoo domain filters and return a paginated page with requested fields, total matches, offset, and has_more for paging.
Instructions
Find the records of one model that match a domain and return one page of them with the requested fields, plus total (all matches), offset and has_more; page with offset while has_more is true. Use it when you need the records themselves. For known ids use odoo_read, for a number only odoo_count, for totals per group odoo_aggregate. You only see records your access rights allow. Many2one values come as {id, name}, one2many and many2many as {count, ids} (first 50 ids), long texts are cut at 4,000 characters.
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>"
},
"name": "odoo_search"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Records per page. Values above the model's max_records_per_call (usually 200) are reduced to it. | |
| model | Yes | Technical model name from odoo_list_models, e.g. 'res.partner' or 'sale.order'. | |
| order | No | Sort order on fields of this model, e.g. 'date_order desc, id desc'. Default: the model's own order. | |
| domain | No | Odoo domain: a list of [field, operator, value] conditions, combined with AND unless prefixed by '|' (OR) or '!' (NOT). A dotted path follows a relation to another available model, e.g. 'country_id.code'. Omit or [] to match every record you can see; archived records are left out unless the domain has a condition on active. Example: [["customer_rank", ">", 0], ["country_id.code", "=", "BE"]]. | |
| fields | No | Field names to return, from odoo_describe_model. Omit for a default selection. | |
| offset | No | Number of matching records to skip, for paging. |