Skip to main content
Glama
solutionsunity

OdooSurface MCP

list_records

Retrieve paginated Odoo records with domain filters, field selection, and ordering. Control context for translations or archived records; write large results to a file.

Instructions

Return a paginated list of records — as the list view or the Export dialog would show them. domain: Odoo domain, e.g. [["state","=","draft"]]; ANDed with the action's domain when action_id is given. fields: field names to return (any readable field; relational ones as [id, display_name]); default: the list view's columns. Pass context to control read behaviour — e.g. {lang: "fr_FR"} returns translated field values, {active_test: false} includes archived records. order: e.g. "date desc, id"; ordering by a many2one follows the related model's own order (e.g. order_id on sale.order = date_order desc, id desc), which can look like order being ignored. Returns {total, offset, limit, records[]}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
modelYes
orderNo
domainNo
fieldsNo
offsetNo
contextNo
action_idNo
output_pathNoAbsolute path on the MCP server host. When given, the full JSON result is written there and the tool returns only {output_path, total, count} — for results too large for context or meant for scripts.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.6.1
    • addedInput schema / properties / domain
      Added value: +{
      +  "items": {},
      +  "type": "array"
      +}
    • addedInput schema / properties / fields
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / output_path
      Added value: +{
      +  "description": "Absolute path on the MCP server host. When given, the full JSON result is written there and the tool returns only {output_path, total, count} — for results too large for context or meant for scripts.",
      +  "type": "string"
      +}
  2. First observedv0.5.1

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden, and it does substantial work: it discloses pagination, the default column selection, the effect of context keys like {lang} and {active_test}, and an ordering pitfall (many2one ordering following the related model). It stops short of stating access/permission requirements or explicitly framing the operation as read-only.

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?

Front-loaded with purpose, then parameter semantics, then the return shape, with no filler sentences. It is dense and slightly long, but each clause adds information an agent needs to call the tool correctly.

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

Completeness4/5

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

For a 9-parameter tool with nested objects, no annotations, and no output schema, the description covers the hard parts — return shape is spelled out as {total, offset, limit, records[]}, and the ambiguous parameters are explained. Gaps are minor: model and the limit/offset defaults are left to the schema.

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

Parameters4/5

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

Schema description coverage is only 11%, so the description must compensate, and it does: it defines domain syntax with an example, explains fields and its default, describes context behaviour with two concrete keys, gives an order example plus a many2one caveat, and clarifies how action_id interacts with domain. limit/offset are only implied by 'paginated' and the defaults live in the schema, so it is not fully exhaustive.

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

Purpose4/5

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

States a specific verb and resource ('Return a paginated list of records') and anchors it with a concrete analogy ('as the list view or the Export dialog would show them'). It does not, however, distinguish itself from the very close sibling search_records or read_group, which an agent must choose between.

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

Usage Guidelines3/5

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

Usage is only implied through parameter semantics — it explains how domain is ANDed with an action's domain and what context keys do, which hints at when the tool is appropriate. There is no explicit when-to-use/when-not guidance or any pointer to search_records or read_group as alternatives for the same model.

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