Skip to content
Back to blog
integration-guide8 min

Odoo + MCP in 15 Minutes: Connect Your ERP to AI Agents

Connect your Odoo 16, 17, or 18 instance to AI agents in under 15 minutes. One JSON-RPC connector, zero code changes to Odoo. Your products, stock levels, and pricelists become discoverable and purchasable by Claude, GPT, and other AI agents via MCP.

Executive summary

Step-by-step integration guide for connecting Odoo 16/17/18 to AgenticMCPStores. Covers API key generation, connector setup, product sync, stock.quant inventory, pricelist resolution, and what AI agents can do with your Odoo data — all without modifying your Odoo instance.

Published

2026-04-06

8 min

Author

Integration Architecture Team

Implementation architects

The integration architecture team focuses on practical rollout patterns for stores adopting MCP-compatible commerce surfaces.

View profile

Category

integration-guide

odooMCPerpintegrationjson-rpcinventoryAI Agentsconnector

Odoo is the world's most-installed open-source ERP. But its product data — prices, stock levels, categories, pricelists — is locked inside JSON-RPC calls that AI agents can't discover or use. AgenticMCPStores bridges that gap. In this guide, you'll connect your Odoo instance to the platform in 15 minutes, making your entire catalog searchable, comparable, and purchasable by AI agents like Claude and GPT. No Odoo code changes. No plugins to install. Just an API key and a URL.

What You'll Need

  • 1
    An Odoo 16, 17, or 18 instance (Community or Enterprise) — SaaS, Odoo.sh, or self-hosted
  • 2
    Admin access to generate an API key (Settings > Technical > API Keys)
  • 3
    An AgenticMCPStores account (free during Beta) — sign up at agenticmcpstores.com/en/developers

Step 1: Generate an Odoo API Key

In your Odoo instance, navigate to Settings > Technical > API Keys. Click 'New API Key', give it a descriptive name (e.g. 'AgenticMCPStores Connector'), and copy the generated key. This key replaces password-based auth — it's the modern, secure way to access Odoo's JSON-RPC API. For SaaS instances (yourcompany.odoo.com): use your account email as the login. For self-hosted instances: use the admin username (typically 'admin' or your custom login). The connector uses a single endpoint (`POST /jsonrpc`) for all operations — there's no REST API dependency or Odoo module to install.

Step 2: Connect via the Dashboard

Log in to your AgenticMCPStores dashboard and navigate to Onboarding > Odoo. Fill in: 1. Odoo URL — Your instance URL (e.g. `https://mycompany.odoo.com`). SSRF protection blocks private/loopback addresses automatically. 2. API Key — The key you generated in Step 1 (minimum 10 characters). 3. Email / Login — Your Odoo account email (SaaS) or username (self-hosted). 4. Database — Auto-detected for SaaS. For self-hosted multi-database setups, enter the database name explicitly. The form validates your credentials by fetching one product (`getProducts(limit: 1)`). If validation passes, your store is created and the initial sync begins immediately.

Step 3: Initial Sync — What Gets Indexed

The connector syncs four data types from Odoo via JSON-RPC: Products (`product.template`) — All active, saleable products with title, description, price, images, weight, and write date. Products are filtered by `[['active', '=', true], ['sale_ok', '=', true]]` — draft or internal-use products are excluded. Variants (`product.product`) — Concrete SKUs with variant-specific prices and images. Capped at 50 variants per product template. Stock (`stock.quant`) — Real warehouse inventory from `stock.quant` model. Quantities are summed across all warehouse locations. If the Stock module isn't installed, the connector gracefully assumes products are available. Categories (`product.category`) — Full hierarchical category tree with parent-child relationships. Used for agent browsing and faceted search. Pricelists (`product.pricelist`) — Public pricelists with rule resolution by priority: variant-specific > product-specific > category > global. Date-bound rules are respected — expired pricing is excluded automatically.

How Pricing Works

The connector resolves Odoo's pricelist rules to a single effective price per product. Priority order: 1. Variant-level rules (`applied_on = '0_product_variant'`) — highest priority 2. Product-level rules (`applied_on = '1_product'`) 3. Category-level rules (`applied_on = '2_product_category'`) 4. Global rules (`applied_on = '3_global'`) — lowest priority Each rule can use `fixed_price` or `percent_price` (discount off list price). Date filters (`date_start`, `date_end`) and `min_quantity` thresholds are checked at resolution time. The result is a clean, agent-readable price that agents can compare across stores.

What AI Agents Can Do With Your Odoo Data

Once synced, your Odoo products are available through all standard MCP tools — no Odoo-specific tools needed. The connector implements the same `ICommerceAdapter` interface as Shopify and WooCommerce: • `search_products` — Full-text search across your Odoo catalog with trust-weighted ranking • `get_product_details` — Complete product info including variants, stock status, Schema.org JSON-LD • `browse_categories` — Hierarchical category navigation from Odoo's `product.category` tree • `get_merchant_profile` — Your store profile with trust score, policies, and protocol capabilities • `create_cart` → `preview_checkout` → `complete_checkout` — Full checkout flow with pricelist-aware pricing Agents see your Odoo store exactly like a Shopify or WooCommerce store — same schema, same tools, same trust signals.

Rate Limits and SaaS Handling

The connector includes built-in rate limit handling with exponential backoff: | Hosting Type | Rate Limit | Backoff Behavior | |---|---|---| | SaaS (*.odoo.com) | ~60 req/min | Auto-retry with 1s → 2s → 4s backoff + 20% jitter | | Odoo.sh | ~25 req/min | Same backoff, lower threshold | | Self-hosted | None | No rate limit enforcement | Backoff uses ±20% jitter to prevent thundering herd when multiple syncs run concurrently. Maximum 3 retries (4 total attempts) before the request fails. Each request has a 10-second timeout via AbortController.

Security Model

  • 1
    SSRF protection: private IPs (127.x, 10.x, 192.168.x, 172.16-31.x) blocked at both client construction and Zod schema validation
  • 2
    Credentials encrypted at rest with AES-256-GCM in the Store.platformCredentials field
  • 3
    API key auth instead of password — Odoo's recommended approach since v14
  • 4
    No Odoo modules installed, no webhooks required — read-only JSON-RPC access
  • 5
    Version auto-detected via common.version() RPC — no manual configuration needed

Troubleshooting

'Authentication failed' on SaaS: Make sure the Login field contains your account email, not 'admin'. SaaS instances require the actual user email for JSON-RPC authentication. 'Invalid field' errors during sync: If your Odoo instance doesn't have the Website or eCommerce module, certain fields (`tag_ids`, `website_published`) aren't available. The connector already excludes these — if you see this error on an older version, update your AgenticMCPStores dashboard. All products show 'out of stock': If you don't have the Inventory/Stock module installed, the connector falls back to assuming all products are available. If you do have Stock installed but quantities are wrong, check that `stock.quant` records exist for your products. Pricelist prices not matching: Verify that your pricelist is marked as 'selectable' and 'active' in Odoo. Check date ranges on pricelist items — expired rules are excluded.

Frequently asked questions

Do I need to install any Odoo module or plugin?

No. The connector uses Odoo's built-in JSON-RPC API, which is available on all Odoo 16/17/18 installations without any additional modules. You only need to generate an API key in Settings > Technical > API Keys.

Which Odoo modules are required?

Only the base `product` module (always installed). The connector gracefully handles missing optional modules: without Stock/Inventory, it assumes products are available. Without Website/eCommerce, it skips web-specific fields. Without Pricelists, it uses the product's list_price.

How often does the catalog sync?

The initial sync happens immediately after connecting. Subsequent syncs run on the platform's standard schedule (configurable, typically every 2-6 hours). You can trigger a manual sync from the merchant dashboard at any time.

Can I connect multiple Odoo databases?

Yes. Each Odoo database is treated as a separate store in AgenticMCPStores. Connect each one through the onboarding flow with its own URL, API key, and database name.

Does the connector support Odoo 19?

Odoo 19 introduces a new JSON-2 API. Migration is planned for Q4 2026. Currently supported versions are 16, 17, and 18 (both Community and Enterprise editions).

Sources and references

Related articles

Connect Odoo to AI Agents via MCP | Integration Guide for Odoo 16/17/18 | AgenticMCPStores