Odoo

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 Cloud
Odoo · live via MCP
Share
Opus 4.7

Claude is AI and can make mistakes. Please double-check responses.

Setup in 2 minutes

  1. 1Start a free trial on cloud.anythingmcp.com.
  2. 2Click Odoo in the connector store. Paste credentials when prompted.
  3. 3Mint an MCP API key and point your AI client at the generated MCP URL.
Install Odoo now

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

  1. In Odoo open your user menu → My Profile → Account Security and create a new API key. Odoo shows it once.
  2. Put it in ODOO_API_KEY, your instance URL in ODOO_URL (e.g. https://mycompany.odoo.com, no trailing slash) and the database name in ODOO_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 to SSRF_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.