An Odoo AI invoice assistant starts at overdue, not at post.
Receivables questions are the cleanest MCP demo: overdue, promised-to-pay, quiet customers. Posting and reconciliation stay human. The bot user should not have those rights.

Read tools only
search_invoices, search_payments (read), maybe invoice ageing as a dedicated tool. Not action_post, not write on amount_total, not unlink. Accounting already has posted-state locks — do not punch them with an agent. Restrict accounting users.
Gemini allowed_tools should match. Gemini. Default: read-only MCP.
Payroll and bank are not this assistant
Do not hang payslips or full IBANs off a sales/AR bot. Payroll · Security. Sales twin: sales assistant.
What AR actually asks
“What’s overdue over 60 days?” “Did they promise a date?” “Is there an open credit?” Those are reads. “Write off this balance” is not a chat command. Keep the tool list in that dialect.
If chatter holds the promise-to-pay, either expose a safe note search or keep that in Odoo. Do not dump full chatter to an LLM by default — it is a data-minimisation issue.
Month-end
Lock periods still apply. An agent that can post because someone reused the accountant user will post. Separate the AR-reader user from the poster. Calendar reminder at period close: confirm the bot still cannot post.
FAQ
Can it send dunning email?
Not as an unsupervised write. Draft a reminder for a human.
Can it post invoices?
No on the first tool list. Prefer never for a chat agent.
Keep going
Start read-only. Ask a real question.
Sandbox on sample Odoo 19 data, or we put MCP on your instance.