DocsTools

Odoo

Sales orders, invoices, customers and stock.

Category
Accounting
How you connect
API key or token. You paste a key or token from the tool. Homla stores it encrypted and never shows it again.
Time to set up
About 6 minutes
Actions
23 read, 5 write

Connect it#

In Homla, open Connectors, then Odoo. The Setup guide button walks you through the same steps, with fields to paste into.

Who can do it. An Odoo Administrator creates the wedge-bot user and its rights; the API key is then created by wedge-bot itself (each user mints keys only for their own account). Homla acts with that user's access rights.

Recommended. Create an internal user such as [email protected] and mint the key from it, so every write Homla makes is attributed to it in the chatter and can be revoked without touching a person's access. It is a paid seat on Odoo's per-user pricing; a Portal user will not work (no backend access).

  1. Check that your Odoo plan allows the APIOn Odoo Online the external API is only available on the Custom plan (not One App Free or Standard). Odoo.sh and self-hosted Odoo always allow it. You need an Odoo Administrator (Settings > Users & Companies) for the next steps. Open it.
  2. Create a dedicated wedge-bot userSigned in as an administrator, open Users and click New. Name it Homla bot, login [email protected], type Internal User, and save. Every record Homla creates or edits then shows this user in the chatter, and you can cut it off without touching anyone's access. An internal user is a paid seat on Odoo's per-user pricing.
  3. Give it only the rights the tools needOn the user's Access Rights tab, pick the lowest level per app from the list below: reading reports needs only the User level of Sales, Invoicing/Accounting (Read-only where offered), Inventory, CRM and Point of Sale. Leave Administration empty. If the company wants Homla read-only, keep these read levels and do not grant Homla the create, write, unlink, execute_kw or jsonrpc tools: Odoo will refuse any write with an Access Error anyway where the user lacks the right.
  4. Sign in as wedge-bot and open My PreferencesSet a password for wedge-bot (Odoo Online: the invitation email, or Action > Change Password as admin), sign in with it, then open your avatar, top right > My Preferences (the link below opens it directly) and go to the Account Security tab (Security on the newest Odoo).
  5. Create the API key and copy itClick New API Key, confirm the password, name it Homla, and if Odoo asks for a duration or expiry, pick the longest your policy allows (Odoo 19 caps keys at three months). If a Scope is offered, leave it on the generic RPC scope, not MCP. Click Generate Key and copy it.

    Odoo shows the key only once. Paste it straight into Homla; if you lose it, delete it and create a new one.

  6. Find the database nameOn Odoo Online it is the subdomain (mycompany for mycompany.odoo.com). On Odoo.sh it is the database of the branch, shown in the Odoo.sh project. Self-hosted: ask whoever runs the server, or open the database manager at /web/database/manager if it is enabled.
  7. Paste the four values into HomlaIn Homla: Connectors > Odoo > Connect. Odoo URL: the address you open Odoo at, with https:// and no path (custom domains work). Database name: from the previous step. Login email: wedge-bot's login. API key: the key you copied. Save. Open it.
  8. Check the connectionAsk your assistant to run odoo_capabilities. It lists the Odoo version and the installed apps. An authentication error means one of URL, database, login or key is wrong; an Access Error on a report means wedge-bot lacks that app's User right.

What your AI can do#

These are the actions Homla gives your AI. Your role decides which ones you get. Write actions are a dry run until confirmed, see Approvals and dry runs.

Read#

Looks things up, never changes anything.

ActionWhat it does
odoo_capabilitiesWhich Odoo apps are installed and populated, plus the version.
odoo_model_schemafields_get plus the connector's annotations (purpose, key fields, analyses, caveats).
odoo_model_explainCurated notes on an annotated model; no upstream call.
odoo_search_readSearch + read with a domain.
odoo_readRead records by id.
odoo_search_countCount records for a domain.
odoo_read_groupGrouped aggregation, version aware (read_group <= v18, formatted_read_group v19+).
odoo_name_searchResolve a record id from a name.
odoo_fields_getRaw field definitions.
odoo_revenue_reportBooked revenue trend from confirmed sale.order.
odoo_invoiced_revenue_reportRecognised revenue from posted customer invoices.
odoo_aov_reportAverage order value trend.
odoo_top_products_reportBest sellers by revenue (sale.order.line).
odoo_top_customers_reportTop customers by booked revenue.
odoo_ar_aging_reportOpen receivables by customer (amount_residual).
odoo_pipeline_reportCRM pipeline value by stage.
odoo_sales_orders_listRecent sales orders.
odoo_invoices_listCustomer invoices.
odoo_customers_listCustomers (customer_rank > 0), optional name filter.
odoo_products_listSellable product templates.
odoo_inventory_levels_listOn-hand stock in internal locations.
odoo_playbook_getGoal -> ordered list of tools; no upstream call.
odoo_health_reportOne-call digest: revenue, top products, open receivables.

Write#

Creates or changes things, as the account owner.

ActionWhat it does
odoo_createCreate one record from vals.
odoo_writeUpdate records with the same vals.
odoo_unlinkDelete records by id.
odoo_execute_kwEscape hatch 1: any model.method.
odoo_jsonrpcEscape hatch 2: raw service.method on /jsonrpc.

Disconnect it#

In Homla, open the account menu on the tool's page and choose Disconnect. Anyone it was shared with loses access at once. To cut it off on the tool's side too:

Signed in as wedge-bot, open My Preferences > Account Security and delete the Homla key: Homla stops at once. To cut everything, an administrator archives the wedge-bot user from Users. To rotate (required at least every three months on Odoo 19), create a new key the same way and paste it into the same Homla form, then delete the old one.

Generated from the product code. Action names are what the CLI and the API use.