Describe fields
odoo_fields_getGet business field metadata for an Odoo model: types, relations, searchable/sortable/groupable flags, the aggregation each field supports, selection options, and help text. A field is safe to group by in read_group when 'groupable' is true, and safe to aggregate when it carries an 'aggregator' (role 'measure'). Monetary fields carry 'currency_field' — the field that says which currency the amount is in. Read it before summing or grouping money: on the same record 'amount_total' is in 'currency_id' while 'amount_total_signed' is already converted to 'company_currency_id', so grouping by one and summing the other mislabels the result. System and mail bookkeeping fields are filtered out. Call before writing domains with unfamiliar fields or selection values. 'name_pattern' matches the field LABEL and help as well as the technical name, so search it with the words the user said ('due', 'vencim') rather than guessing Odoo's spelling. Returns a page envelope ('records' plus count / total / has_more / next_offset), the same contract as odoo_search_read. A wide model has hundreds of fields: narrow with 'fields' when you know the names, or 'name_pattern' to explore a family ('x_studio_*', 'date'); when 'has_more' is true, call again with 'offset' to read the rest — 'total' says how many there are in all. To inspect several related models at once (walking relational fields before a domain or a write), pass 'models' (up to 20) instead of 'model': each one comes back as its field list, or as an inline error. Pass 'with_operations' only when you are about to run a method on records (odoo_execute), not to read or explain: it adds 'operations', the buttons its form and list offer. An operation with 'method' runs with odoo_execute; one with 'wizard' opens that model: create it with odoo_create, passing the records in the context as active_model and active_ids, then run the method listed in the wizard's own operations with odoo_execute and that same context: many wizards read it again there.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "odoo_fields_get"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size. Omit to ask for every field: a narrow model then arrives in one call. Pass it to page through a wide one with next_offset. | |
| model | No | The model to describe. Use 'models' for several. | |
| fields | No | Return only these fields, by exact technical name. A name this model does not have brings its closest fields instead, with a note saying so. | |
| models | No | Several models in one call, instead of 'model'. Returns every field of each, keyed by model; 'fields', 'name_pattern', 'with_operations' and paging do not apply. | |
| offset | No | ||
| name_pattern | No | Substring of the technical name, the LABEL or the help text, case-insensitive, so you can search with the words the user used: 'due' finds 'amount_residual', whose label is 'Amount Due'. Use '*' to anchor: '*_date', 'x_studio_*'. Nothing matching brings the closest fields. Combines with 'fields' as a union. | |
| with_operations | No | Also return 'operations': each button of the form and the list, with its label, the 'method' or 'wizard' it runs, the views it is on and its 'invisible' condition. 'name_pattern' does not narrow them. |