# Odoo — how to use (mcp.ai)

Connect your Odoo account and use 12 tools for CRM straight from your AI agent. Connect with your own API key. Open-source ERP and CRM platform for business management, including sales, accounting, inventory, and project management.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_odoo?ms=1787293440000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `odoo_call_odoo_jsonrpc`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/odoo`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/odoo/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/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 
  - body: { args?: string|integer|number|boolean|object|string[][], method: string, service: string, database?: string, request_id?: integer }
- `POST https://api.mcp.ai/api/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 m
  - body: { tz?: string, ref?: string, vat?: string, city?: string, lang?: string, name: string, email?: string, phone?: string, title?: integer, mobile?: string, street?: string, comment?: string, street2?: string, website?: string, function?: string, state_id?: integer, zip_code?: string, parent_id?: integer, country_id?: integer, is_company?: boolean, company_type?: string, customer_rank?: integer, supplier_rank?: integer }
- `POST https://api.mcp.ai/api/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 wa
  - body: { version?: integer, account_token: string, document_token: string }
- `POST https://api.mcp.ai/api/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 th
  - body: { version: integer, account_token: string, document_token: string }
- `POST https://api.mcp.ai/api/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 
  - body: { version: integer, account_token: string, document_token: string }
- `POST https://api.mcp.ai/api/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 st
  - body: { version: integer, account_token: string, document_token: string }
- `POST https://api.mcp.ai/api/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.
- `POST https://api.mcp.ai/api/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 resul
  - body: { version?: integer, document: string, request_id?: string, account_token: string }
- `POST https://api.mcp.ai/api/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
  - body: { version: integer, documents: string[], request_id?: string, account_token: string }
- `POST https://api.mcp.ai/api/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. Us
  - body: { version: integer, documents: string[], account_token: string }
- `POST https://api.mcp.ai/api/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
  - body: { dbuuid?: string, version: integer, documents: string[], request_id?: string, user_infos?: object, webhook_url?: string, account_token: string }
- `POST https://api.mcp.ai/api/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 
  - body: { model: string, values: object, record_ids: integer[] }

## Example prompts
- "What can I do in Odoo?"
- "Show me a summary of my Odoo account"

## More
- Page: https://mcp.ai/odoo
- Agent spec (llms.txt): https://mcp.ai/odoo/llms.txt
- Postman collection: https://mcp.ai/odoo/postman.json
