Odoo JSON-2 vs XML-RPC vs JSON-RPC.
Three names, one future. For new Odoo 19 work — including MCP — prefer JSON-2. The older external RPC APIs are on a removal clock.

If you are building an Odoo integration in 2026 you will hit three terms: XML-RPC, JSON-RPC and JSON-2. They are not equivalent for planning.
The short answer
For a new Odoo 19 integration, prefer JSON-2. Odoo introduced it in 19.0 and deprecated the older external RPC APIs in the External API reference.
Existing integrations do not have to vanish overnight. Removal of the older RPC services is currently documented for the Odoo 22 timeframe. Building a brand-new AI stack on a deprecated API is still a poor long-term bet.
JSON-2 vs XML-RPC vs JSON-RPC
| XML-RPC / JSON-RPC | JSON-2 | |
|---|---|---|
| Odoo 19 status | Deprecated | Current external API |
| Endpoint | /xmlrpc, /xmlrpc/2, /jsonrpc | /json/2/<model>/<method> |
| Auth | Login + password (object service) | Bearer API key |
| Arguments | Positional and/or keyword | Named JSON only |
| Removal | Documented for Odoo 22 (fall 2028) | The replacement |
| AI / MCP | Possible, not the future | The HTTP foundation |
This table is about the external RPC services. Internal @route(type='jsonrpc') controllers are a different notice in Odoo’s docs — do not mix them up.
JSON-2 and MCP
For AI applications: AI agent → MCP → JSON-2 → Odoo. That separates the AI protocol from the ERP API. Useful when the same MCP server should serve Claude, ChatGPT, Gemini and other MCP-compatible agents.
How-to: what JSON-2 is · the three-layer stack · what 19.4 added for MCP.
How to leave XML-RPC without a big-bang cutover
Inventory callers: nightly jobs, middleware, community MCP servers, custom scripts. Anything using execute_kw or /jsonrpc is on the deprecated path in Odoo 19.
For each caller, rewrite the transport to JSON-2 while keeping the same Odoo user. Permissions should not change; only the URL, headers and argument shape. Prove with one read method, then cut writes, then decommission the old endpoint.
Do not run both forever “for safety.” Dual APIs mean dual key handling and dual logging. Pick a date before Odoo 22. Official API reference: Odoo 19 External API documentation.
Most “Odoo MCP” repos are an RPC choice in disguise
Open the source. If you see XML-RPC endpoints and uid/password login, it is a 19.0-era mismatch even if the README says Odoo 19. Prefer JSON-2, or an in-Odoo module that never leaves the worker.
JSON-RPC (/jsonrpc) is not JSON-2. The names confuse reviewers. JSON-2 is /json/2/<model>/<method> with a bearer key. JSON-RPC is the older JSON wrapping of the same RPC idea, and it is on the deprecation list.
Stack if the caller is an AI client: MCP + JSON-2 for Odoo 19.
Official documentation
Endpoint names and language samples live on those pages. A 2026 documentation map (JSON-RPC ≠ JSON-2, Custom-plan gate, Odoo 22 clock): Odoo external API XML-RPC / JSON-RPC docs.
FAQ
Which Odoo API should I use in 2026?
For a new Odoo 19 integration, JSON-2. Existing XML-RPC/JSON-RPC clients can keep running until Odoo 22, but new AI work should not start there.
When do XML-RPC and JSON-RPC go away?
Odoo documents the /xmlrpc, /xmlrpc/2 and /jsonrpc endpoints as deprecated in 19 and scheduled for removal in Odoo 22 (fall 2028). External API.
Can MCP still use XML-RPC?
Some community servers still do. That is a maintenance risk. Target JSON-2, or run MCP inside Odoo against the ORM. MCP vs JSON-2.
Is JSON-RPC the same as JSON-2?
No. JSON-RPC is the older /jsonrpc service. JSON-2 is /json/2 with bearer keys and the model/method in the URL. Odoo 19 External API.
JSON-2, MCP and clients
Start read-only. Ask a real question.
Sandbox on sample data, or we put MCP on your instance.