aggregate_records
Server-side groupby/aggregation via formattedreadgroup (Odoo 19+) or readgroup (16-18).
How to use it
aggregate_records is exposed by the MCP Odoo MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the aggregate_records tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install MCP Odoo
uvx odoo-mcp --setupOther tools in MCP Odoo (38)
AR/AP aging across every client DB with combined buckets — the partner-network sweep.
Open receivable/payable item counts plus the draft invoice backlog.
Group/aggregate per instance plus additive grand totals across the fleet.
Build and validate an Odoo domain from structured conditions.
Report expected modules, models, and discovery calls for sales, CRM, inventory, accounting, or HR.
Cancel a pending or running task.
Post a chatter message on a mail.thread record. Default mode requires the approval-token preview/execute flow.
Diagnose ACL and record-rule visibility for the current Odoo credential.
Diagnose a model call without executing it.
Execute only a same-session, live-validated, confirmed write when ODOOMCPENABLEWRITES=1.
Execute a reviewed model method. Direct create, write, and unlink are blocked. Side-effect methods require an exact allowlist or ODOOMCPALLOWUNKNOWNMETHODS=1.
Classify requirements into standard, configuration, Studio, custom module, avoid, or unknown.
Convert XML-RPC-shaped input into JSON-2 endpoint, headers, and named body.
Poll a task's status and result.
Read field metadata for one model.
Read server version, user context, transport, database, and installed module summary.
Report non-secret MCP runtime posture, including rate-limit counters and field-ACL status when enabled.
Fetch a bounded record slice once and build a local BM25 index (accent-insensitive; data never leaves the machine).
Group relationship fields, required fields, and create/write hints.
Report per-model index sizes and the ODOOMCPKNOWLEDGEMAXDOCS budget.
List live and recently finished tasks.
List configured Odoo instance names, URLs, databases, transports, and cross-instance tags — never credentials.
List Odoo model technical names and labels.
Resolve outdated model names (account.invoice → account.move) against a curated per-version rename catalog.
Produce a non-executing approval payload for create, write, or unlink.
Read an ir.attachment's metadata and size-capped base64 content (ODOOMCPMAXATTACHMENTBYTES, default 1 MiB).
Read one record by model and ID. Smart-field selection when caller omits fields.
Aged AR/AP report bucketed by days overdue (not due / 1-30 / 31-60 / 61-90 / 90+), with per-partner totals.
Scan local addon source without importing addon code.
Build a bounded model catalog with optional field metadata.
Search every opted-in instance (or a list/tag selection); rows tagged with instance, partial results on per-instance failure.
Search employees by name.
Search leave records by date range.
Relevance-ranked free-text search over indexed records with zero further RPC calls.
Run bounded read-only searchread. Smart-field selection when caller omits fields.
Run an allowlisted long read operation (scanaddonssource, indexknowledge, receivablepayableaging) on a bounded worker pool. Writes are never accepted.
Surface transport, method, and migration risks across Odoo versions.
Validate a write payload against trusted live fieldsget metadata.