# Odoo

Open-source ERP and CRM platform for business management, including sales, accounting, inventory, and project management

- **Category:** crm
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `ODOO`
- **Version:** 20260429_01

## Tools

### Odoo JSON-RPC Call

**Slug:** `ODOO_CALL_ODOO_JSONRPC`

JSON-RPC endpoint for Odoo external API calls. Provides the same functionality as XML-RPC but with JSON encoding. DEPRECATED in v19.0 and scheduled for removal in v20.0 (Fall 2026). Use JSON-2 API at POST /json/2/{model}/{method} instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `args` | array | No | Arguments to pass to the method. The structure depends on the service and method being called. For example, authenticate requires [db, login, password], execute_kw requires [db, uid, password, model, method, args, kwargs]. |
| `method` | string | Yes | The method to call on the service (e.g., 'version', 'authenticate', 'execute', 'execute_kw'). For 'common' service: version, authenticate, login. For 'object' service: execute, execute_kw. |
| `service` | string | Yes | The service to call (e.g., 'common', 'object', 'db'). Common services include 'common' for version/authentication and 'object' for model operations. |
| `database` | string | No | The database name to connect to. If not provided, defaults to 'openerp' for Odoo.com instances or attempts to extract from metadata. |
| `request_id` | integer | No | JSON-RPC request ID used to match responses with requests. Can be any integer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Contact

**Slug:** `ODOO_CREATE_CONTACT`

Create a new contact (customer, supplier, or generic partner) in Odoo's res.partner model. Use this action when you need to add a new person or company to the Odoo database. Set customer_rank > 0 to mark as a customer, supplier_rank > 0 to mark as a supplier, or leave both unset for a generic contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tz` | string | No | IANA timezone identifier for the contact (e.g., 'America/New_York', 'Europe/Brussels'). |
| `ref` | string | No | Internal reference code for the contact. |
| `vat` | string | No | Tax/VAT identification number of the contact. |
| `city` | string | No | City of the contact's address. |
| `lang` | string | No | Language locale code for the contact (e.g., 'en_US', 'fr_FR', 'es_ES'). |
| `name` | string | Yes | The name of the contact. For companies, use the company name. For individuals, use the full name. |
| `email` | string | No | Email address of the contact. |
| `phone` | string | No | Phone number of the contact. |
| `title` | integer | No | ID of the partner title (res.partner.title model) such as Mr., Ms., Dr., etc. |
| `mobile` | string | No | Mobile phone number of the contact. |
| `street` | string | No | Street address line 1 of the contact. |
| `comment` | string | No | Internal notes about the contact (can contain HTML). |
| `street2` | string | No | Street address line 2 (apartment, suite, etc.) of the contact. |
| `website` | string | No | Website URL of the contact or company. |
| `function` | string | No | Job title or position of the contact person. |
| `state_id` | integer | No | ID of the state/province (res.country.state model). |
| `zip_code` | string | No | Postal/ZIP code of the contact's address. Will be mapped to Odoo's 'zip' field. |
| `parent_id` | integer | No | ID of the parent company partner to link this contact under. Used to create a contact person belonging to a company. |
| `country_id` | integer | No | ID of the country (res.country model). If you need to find the country ID, use search_read on res.country model first. |
| `is_company` | boolean | No | True if the partner is a company, False if an individual person. Defaults to False. |
| `company_type` | string ("person" | "company") | No | Type of the partner: 'person' for an individual or 'company' for an organization. |
| `customer_rank` | integer | No | Customer rank. Set to a value greater than 0 to mark the partner as a customer. |
| `supplier_rank` | integer | No | Supplier rank. Set to a value greater than 0 to mark the partner as a vendor/supplier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Applicant Parsing Result

**Slug:** `ODOO_GET_APPLICANT_RESULT`

Tool to retrieve parsing results for a previously submitted resume/applicant document. Use when you need to check the status and get extracted fields (name, email, phone, mobile) from a resume that was previously submitted for parsing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | No | API version number to use for the request |
| `account_token` | string | Yes | IAP (In-App Purchase) account token for authentication |
| `document_token` | string | Yes | Token received from the parse response that identifies the document to retrieve results for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Bank Statement Result

**Slug:** `ODOO_GET_BANK_STATEMENT_RESULT`

Tool to retrieve parsing results for a previously submitted bank statement. Returns extracted fields including balance_start, balance_end, date, and bank_statement_lines. Use when you need to check the status and get extracted data from a bank statement document using Odoo's Extract API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | Yes | API version number. Use 1 for current version. |
| `account_token` | string | Yes | IAP account token for authentication. |
| `document_token` | string | Yes | Token received from the bank statement parse submission response. Use this to retrieve parsing results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Expense Extraction Result

**Slug:** `ODOO_GET_EXPENSE_RESULT`

Retrieve parsing results for a previously submitted expense document. Returns extracted fields including description, country, date, total, and currency. Use this after submitting an expense document to get the OCR/extraction results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | Yes | API version number to use for the request |
| `account_token` | string | Yes | IAP account token for authentication and billing |
| `document_token` | string | Yes | Token identifying the document, returned from the parse/submit request |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice Parsing Result

**Slug:** `ODOO_GET_INVOICE_RESULT`

Tool to retrieve parsing results for a previously submitted invoice from Odoo Extract API. Use when you need to check the status and get extracted data from an invoice. Poll this endpoint until the status field is 'success' - processing may take time depending on document complexity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | Yes | API version number (must match the version used in the parse request) |
| `account_token` | string | Yes | IAP (In-App Purchase) account token used for the original parse request |
| `document_token` | string | Yes | Token returned from the invoice parse request. Used to identify the document being processed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Databases

**Slug:** `ODOO_LIST_DATABASES`

Tool to list all available Odoo databases on the server. Use when you need to see which databases are available on the Odoo instance.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Parse Applicant Resume

**Slug:** `ODOO_PARSE_APPLICANT`

Tool to submit a resume/CV document for OCR parsing and data extraction via Odoo Extract API. Extracts name, email, phone, and mobile from applicant resumes. Returns a document_token to poll for results. Cost: 1 IAP credit per successful parse.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | No | API version number. Latest version is 102. Use this to ensure compatibility with the Extract API. |
| `document` | string | Yes | Base64-encoded resume/CV document (PDF or image format). The document should be encoded as a base64 string before submission. |
| `request_id` | string | No | JSON-RPC request identifier for tracking. Can be any unique string to identify this request. |
| `account_token` | string | Yes | IAP (In-App Purchase) account token for billing. Each successful parse consumes 1 IAP credit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Parse Bank Statement Document

**Slug:** `ODOO_PARSE_BANK_STATEMENT`

Tool to submit a bank statement document for OCR parsing and data extraction via Odoo Extract API. Extracts balance_start, balance_end, date, and bank_statement_lines. Returns a document_token to poll for results. Cost: 1 IAP credit per successful parse.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | Yes | API version number to use. Latest version is 100. Required to ensure compatibility with response format. |
| `documents` | array | Yes | Array containing exactly one Base64-encoded document. Supported formats: PDF, PNG, JPG. The document will be parsed to extract bank statement fields (balance_start, balance_end, date, bank_statement_lines). |
| `request_id` | string | No | JSON-RPC request ID. Auto-generated UUID if not provided. Used to match responses with requests. |
| `account_token` | string | Yes | IAP (In-App Purchase) account token for billing. Each successful parse costs 1 IAP credit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Parse Expense Document

**Slug:** `ODOO_PARSE_EXPENSE`

Tool to submit an expense document for OCR parsing and data extraction. Extracts description, country, date, total, and currency from expense receipts. Returns a document_token to poll for results. Use when you need to process expense documents using Odoo's Extract API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `version` | integer | Yes | API version to use. Latest version is 132. |
| `documents` | array | Yes | Array containing one Base64-encoded document image to parse. Only the first document in the array will be processed. |
| `account_token` | string | Yes | IAP account token for billing. Cost: 1 IAP credit per successful parse. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Parse Invoice Document

**Slug:** `ODOO_PARSE_INVOICE`

Tool to submit an invoice document for OCR parsing and data extraction via Odoo Extract API. Uses AI-based algorithms to extract fields like total, due date, invoice lines, VAT numbers, IBAN, supplier, client, and currency. Returns a document_token to poll for results. Cost: 1 IAP credit per successful parse.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dbuuid` | string | No | Unique identifier of the Odoo database. Used for tracking and analytics. |
| `version` | integer | Yes | API version number to use. Latest version is 123. Required to ensure compatibility with response format. |
| `documents` | array | Yes | Array containing exactly one Base64-encoded document. Supported formats: PDF, PNG, JPG. The document will be parsed to extract invoice fields. |
| `request_id` | string | No | JSON-RPC request ID. Auto-generated UUID if not provided. Used to match responses with requests. |
| `user_infos` | object | No | Optional user information to enhance OCR accuracy. |
| `webhook_url` | string | No | URL to receive a POST notification when parsing is complete. Useful for asynchronous processing. |
| `account_token` | string | Yes | IAP (In-App Purchase) account token for billing. Each successful parse costs 1 IAP credit. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Odoo Record

**Slug:** `ODOO_UPDATE_RECORD`

Generic tool to update records across any Odoo model via the JSON-2 API write endpoint. Updates one or more records with the specified field values. Supports all Odoo field types including relational fields with command tuples. Use this action when you need to modify existing records in any Odoo model (contacts, leads, orders, invoices, products, etc.).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `model` | string | Yes | The Odoo model name to update records in (e.g., 'res.partner', 'crm.lead', 'sale.order', 'account.move', 'product.product'). Must use dot notation for model names. |
| `values` | object | Yes | Dictionary mapping field names to new values. For many2many fields, use Odoo command tuples: [(6,0,[ids])] to replace all links, [(4,id)] to add a link, [(3,id)] to remove a link. For one2many fields: [(0,0,vals)] to create new records, [(1,id,vals)] to update existing records, [(2,id)] to delete records. |
| `record_ids` | array | Yes | List of Odoo record IDs to update. Must contain at least one ID. All specified records will be updated with the same values. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
