Connection and discovery¶
Before operating against a new instance, identify its version, edition and deployment. The compatibility layer uses these details to resolve model and field names, so you almost never need to branch your queries by version.
1. Identify the environment¶
Call odoo_version. It returns:
version— major integer (10–19)raw_version— the full version string reported by Odooedition—community|enterprise|unknowndeployment—onprem|saastransport— the active transport (jsonrpcin auto, orxmlrpcafter a fallback)
2. Health check with /odoo-doctor¶
The /odoo-doctor command runs a full diagnostic, writing nothing:
- Calls
odoo_versionand reports version / edition / deployment / transport. - Calls
odoo_connectionsand lists the active sessions. - Does a scoped test read:
odoo_search_read { "model": "res.partner", "fields": ["name"], "limit": 1 }. - If any step fails, it shows the exact error and points you to
/odoo-tools:odoo-setup-mcp(orodoo-setup-cli).
3. Explore the schema¶
Every instance differs. Before querying fields you do not know:
odoo_list_models— lists the installed models, optionally filtering by a name fragment (like).odoo_fields_get— returns the field definitions of a model (cached). It accepts historical or modern names; the compatibility layer resolves to the correct one.odoo_module_info— installation status and metadata of a module by its technical name (useful to know whether an Enterprise module is present).
Example: discover the contact fields¶
4. Choose the right surface¶
- If
uvxor Python 3.11+ are available → MCP server (all the tools + compatibility). - If you only have Node → fallback CLI (see Fallback CLI).
Continue with the Tools reference.