Odoo
Odoo ERP 19 and newer over the JSON-2 API: search, read, create and update any model, plus purpose-built tools for partners, sales orders, invoices and products. Odoo Online, Odoo.sh or self-hosted, bearer API key. For Odoo 14 to 18 use the Odoo 14-18 (JSON-RPC) connector.
7-day free trial · No credit card · EU-hosted
Ask Odoo anything
Try a real prompt against Odoo via AnythingMCP — Claude calls the tools, returns the answer. Press Enter on your own message to install on Cloud.
Install Odoo on CloudClaude is AI and can make mistakes. Please double-check responses.
Setup in 2 minutes
- 1Start a free trial on cloud.anythingmcp.com.
- 2Click Odoo in the connector store. Paste credentials when prompted.
- 3Mint an MCP API key and point your AI client at the generated MCP URL.
Guides for Odoo
Step-by-step setup for the most popular AI clients.
Setting up Odoo
From the connector definition itself: where to find the credentials, what they need to be allowed to do, and which API this adapter talks to.
Getting an API key
- In Odoo open your user menu → My Profile → Account Security and create a new API key. Odoo shows it once.
- Put it in
ODOO_API_KEY, your instance URL inODOO_URL(e.g.https://mycompany.odoo.com, no trailing slash) and the database name inODOO_DB. On Odoo Online the database name is usually the subdomain.
This adapter uses the JSON-2 API, which Odoo introduced in 19 and which is the only Odoo HTTP surface a generic REST engine can speak: POST {url}/json/2/{model}/{method} with the key as a bearer token and the database in an X-Odoo-Database header. On Odoo 18 and older that route does not exist: use the Odoo 14-18 (JSON-RPC) connector, which talks to the classic /jsonrpc endpoint.
Domains are Odoo's query language. A domain is a list of triples: [["state","=","sale"],["amount_total",">",1000]], implicitly AND-ed. | and ! prefix operators express OR and NOT. odoo_search_read takes one verbatim, which is what makes this connector able to answer questions the purpose-built tools do not cover.
Always pass fields. Odoo models have hundreds of columns and omitting fields returns all of them, which will exhaust the agent's context on a handful of rows. Start with odoo_fields_get to see what exists.
Totals and grouping: Odoo 19 has no public read_group (the JSON-2 API answers 404). Call formatted_read_group through odoo_call_method instead, with kwargs such as {"domain": [["state","=","posted"]], "groupby": ["company_id"], "aggregates": ["amount_total:sum", "__count"]}. Aggregates are field:function (sum, avg, min, max, count_distinct) plus __count.
Permissions follow the user. The API key inherits its owner's access rights and record rules. A restricted user sees fewer rows, not an error — so an agent reporting 'no open orders' may simply be looking through the wrong account.
Self-hosted, which is the thing to plan for.
- On AnythingMCP Cloud the instance must be reachable from the public internet on a real hostname with a valid TLS certificate. A self-signed certificate will fail: the connector offers no trust-anything switch.
- On an internal host (
odoo.intern,10.0.0.x), self-host AnythingMCP on the same network and add that host toSSRF_ALLOWED_HOSTS, or the outbound guard refuses the call before it is made.
Writes: odoo_create and odoo_write change the live database, and Odoo's automations (mail, stock moves, accounting entries) fire as if a person had done it.
Your AI is two clicks away from Odoo.
Install the connector, paste your credentials, ask your AI a question. 7-day free trial, no credit card.