In these docs

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.

Technical alpha · Odoo 19 Updated 2 August 2026

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.move is not “the invoices.” It is customer invoices, vendor bills, refunds, and journal entries all at once. A customer invoice requires move_type = out_invoice; a vendor bill requires move_type = in_invoice.
  • Financial impact requires state = posted. Counting draft moves as real revenue is a common, plausible mistake.
  • amount_total is not a universal revenue metric. Different document types and definitions make “just sum amount_total” wrong more often than right.
  • The salesperson who owns an invoice is invoice_user_id, not a guessed user_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:

  1. Wrong interpretation. A plausible-looking field can be the wrong business field, and a valid relational path can still produce the wrong metric.
  2. Rediscovery, every time. Large prompts and the same discovery work repeated on every question, in every tool, in every session. Nothing learned is kept.
  3. 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.