Context Layer for Odoo
Why a context layer.
Why raw Odoo schema is not enough for AI, made concrete on account.move. The three costs of handing an AI raw schema and records, and why a connector alone moves data but does not supply meaning.
Schema is not meaning
Odoo exposes technical structure. Technical structure lists the tables and fields; it does not encode what they mean for the business. That gap is invisible until an AI falls into it, and then the answer looks right and is wrong.
Take one table, account.move. Its schema shows fields like move_type, state,
amount_total, and invoice_user_id. What the schema does not say:
account.moveis not “the invoices.” It is customer invoices, vendor bills, refunds, and journal entries all at once. A customer invoice requiresmove_type = out_invoice; a vendor bill requiresmove_type = in_invoice.- Financial impact requires
state = posted. Counting draft moves as real revenue is a common, plausible mistake. amount_totalis not a universal revenue metric. Different document types and definitions make “just sumamount_total” wrong more often than right.- The salesperson who owns an invoice is
invoice_user_id, not a guesseduser_id.
Every one of those is a business fact the schema cannot tell you. An AI with only the schema guesses, and its guess is confident whether or not it is correct.
The three costs of raw schema
Hand an AI raw schema and records and you pay three costs, every day:
- Wrong interpretation. A plausible-looking field can be the wrong business field, and a valid relational path can still produce the wrong metric.
- Rediscovery, every time. Large prompts and the same discovery work repeated on every question, in every tool, in every session. Nothing learned is kept.
- Unsafe actions that validate. A write can be semantically wrong and still technically valid. State, company, currency, and record rules change what an action means.
The state of a record, the company, the currency, and the record rules all change what the answer should be. None of that lives in the schema.
A connector is not enough
Transport is not interpretation
A connector, including an MCP server, answers how an AI can read or write Odoo records. It is transport. It does not answer what those records mean, which of them count, or how they combine into a correct answer. That is interpretation, and it is a different job.
Connectors are necessary and good at their job. But a connector that faithfully returns
account.move rows has done nothing to stop the AI from summing the wrong ones. The context layer
is the missing half: it supplies the verified meaning the connector never carried, so the same
model, on the same connector, answers with fewer unsupported assumptions.
That is the whole thesis. A connector moves data; the context layer supplies meaning; the AI reasons. Next: Core concepts.