Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Use Cases & Examples

Real-world examples of using odoo-rust-mcp with AI assistants.


Sales & CRM

Find Top Customers by Revenue

Search for sale orders with state 'sale' from this year,
group by partner and sum the amount_total.
Show me the top 10 customers.

Tool used: odoo_read_group


Create a Quotation

Create a new sale order for partner ID 42 with 3 lines:
- Product ID 10, qty 5
- Product ID 15, qty 2
- Product ID 20, qty 10

Tools used: odoo_create (sale.order), odoo_create_batch (sale.order.line)


Confirm Pending Orders

Find all draft sale orders older than 7 days and confirm them.

Tools used: odoo_search, odoo_workflow_action (action_confirm)


Inventory

Check Stock Levels

List all products where qty_available is less than 10.
Include product name, quantity on hand, and category.

Tool used: odoo_search_read on product.product


Process Pending Deliveries

Find all stock pickings in 'assigned' state for today and validate them.

Tools used: odoo_search, odoo_workflow_action (button_validate)


Accounting

Unpaid Invoice Analysis

Show me all unpaid customer invoices grouped by partner,
with total amount and count.

Tool used: odoo_read_group on account.move

{
  "instance": "production",
  "model": "account.move",
  "domain": [
    ["state", "=", "posted"],
    ["move_type", "=", "out_invoice"],
    ["payment_state", "!=", "paid"]
  ],
  "fields": ["amount_residual:sum", "id:count"],
  "groupby": ["partner_id"]
}

Post Draft Invoices

Find all draft invoices for this month and post them.

Tools used: odoo_search, odoo_workflow_action (action_post)


Multi-Instance Workflow

Compare Data Across Environments

Count the number of active products in both production and staging instances.

Tools used: odoo_count (called twice with different instance values)

// First call
{"instance": "production", "model": "product.product", "domain": [["active", "=", true]]}

// Second call
{"instance": "staging", "model": "product.product", "domain": [["active", "=", true]]}

Verify Staging Before Go-Live

Compare the number of sale orders in staging vs production
to make sure test data won't leak.

Tools used: odoo_count on both instances, odoo_search_read to inspect differences


HR & Employees

Employee Directory Lookup

Search for all employees in the Sales department and show
their name, job title, and work email.

Tool used: odoo_search_read on hr.employee

{
  "instance": "production",
  "model": "hr.employee",
  "domain": [["department_id.name", "=", "Sales"]],
  "fields": ["name", "job_title", "work_email"],
  "limit": 50
}

Leave Balance Check

Show me all approved leaves for this month with employee name and leave type.

Tool used: odoo_search_read on hr.leave


Contacts

Bulk Update Partners

Find all partners in category 'Prospects' and add them to the
'Newsletter' mailing list.

Tools used: odoo_search, odoo_update


Find Duplicate Contacts

Search for partners with duplicate email addresses.

Tool used: odoo_search_read with odoo_read_group


Reports

Generate Sales Report

Generate a PDF sales report for order ID 42.

Tool used: odoo_generate_report

{
  "instance": "production",
  "reportName": "sale.report_saleorder",
  "ids": [42]
}

Monthly Revenue Dashboard

Show me total revenue by month for the current year.

Tool used: odoo_read_group

{
  "instance": "production",
  "model": "account.move",
  "domain": [
    ["state", "=", "posted"],
    ["move_type", "=", "out_invoice"],
    ["invoice_date", ">=", "2026-01-01"]
  ],
  "fields": ["amount_untaxed_signed:sum"],
  "groupby": ["invoice_date:month"]
}

Model Discovery

Explore Available Models

List all non-transient models in my Odoo instance.

Tool used: odoo_list_models


Understand a Model

Show me the fields and their types for the sale.order model.

Tool used: odoo_get_model_metadata


Chained Discovery Workflow

A typical model discovery workflow chains multiple tools:

  1. List models to find relevant ones:

    List models matching "stock" in my production instance.
    
  2. Get metadata for the model of interest:

    Show me the fields for stock.picking.
    
  3. Search records to see real data:

    Show me 5 recent stock pickings with their state, partner, and scheduled date.
    
  4. Understand defaults for creating new records:

    Get default values for a new stock.picking.
    

Tools used: odoo_list_models -> odoo_get_model_metadata -> odoo_search_read -> odoo_default_get


Best Practices

1. Always specify fields

# Good - only requested fields
"fields": ["name", "email", "phone"]

# Avoid - fetches everything
"fields": []

2. Use pagination for large datasets

{
  "limit": 100,
  "offset": 0
}

3. Check access before writing

Before updating those records, check if I have write access.

Tool used: odoo_check_access

4. Use dry run for cleanup

Run a dry run of database cleanup first to see what would be affected.
{
  "dryRun": true
}

5. Specify the instance name

When using multi-instance setups, always specify which instance to target:

Search for partners in my **staging** instance.

If omitted, the server will use the first/default instance.