odoo_server_info
Get Odoo server version and connection status.
Get Odoo server version and connection status.
64 tools exposed over one MCP endpoint. Every tool is callable by Claude or any MCP-compatible client to read, write, automate and analyse your Odoo ERP in natural language — no custom glue code required.
Get Odoo server version and connection status.
Get Odoo server version and connection status.
List all Odoo models. Use 'filter' to narrow by keyword (e.g. 'sale', 'hr').
List all Odoo models. Use 'filter' to narrow by keyword (e.g. 'sale', 'hr').
Get all fields of a specific Odoo model.
Get all fields of a specific Odoo model.
Search records in any Odoo model with optional domain filter.
Search records in any Odoo model with optional domain filter.
Get a single record by ID.
Get a single record by ID.
Create a new record in any Odoo model.
Create a new record in any Odoo model.
Update existing records for normal text, number, date, relation, and status fields. NEVER use this tool for product image fields such as image_1920…
Update existing records for normal text, number, date, relation, and status fields. NEVER use this tool for product image fields such as image_1920, image_1024, image_512, image_256, or image_128. For product images call odoo_set_product_image instead; it performs search, download, Base64 conversion, and upload server-side without a large tool payload.
Delete records. Use with caution.
Delete records. Use with caution.
Execute any Odoo method (action_confirm, action_validate, etc.).
Execute any Odoo method (action_confirm, action_validate, etc.).
Count records matching a domain filter.
Count records matching a domain filter.
Aggregate Odoo records using read_group — group by fields, sum totals, count rows. Great for reports and dashboards.
Aggregate Odoo records using read_group — group by fields, sum totals, count rows. Great for reports and dashboards.
Post a message or note to the chatter of any Odoo record.
Post a message or note to the chatter of any Odoo record.
Automatically find a matching product image on the internet, download and validate it, convert it to Base64, and save it to Odoo image_1920. Use this…
Automatically find a matching product image on the internet, download and validate it, convert it to Base64, and save it to Odoo image_1920. Use this whenever a user asks to find, add, set, or replace a product image. The user does not need to provide an image URL.
Find Odoo products with no image, match each product name to an internet image, and automatically save the image in image_1920. Use this when the…
Find Odoo products with no image, match each product name to an internet image, and automatically save the image in image_1920. Use this when the user asks to set images for all products that do not have one. If the result has repeat_needed=true, call this tool again until remaining_missing is zero.
Fuzzy/keyword search across a model without knowing exact field names. Searches every text field (or the ones you pass in 'fields') with OR logic and…
Fuzzy/keyword search across a model without knowing exact field names. Searches every text field (or the ones you pass in 'fields') with OR logic and supports extra domain filters. Use this instead of hand-building domains when the user types a free-text query like 'Dubois facture mars'.
Run a workflow/state-transition method on records (action_confirm, action_post, button_validate, action_approve...). Validates the button is…
Run a workflow/state-transition method on records (action_confirm, action_post, button_validate, action_approve...). Validates the button is available for the record's current state first, then reports the state before and after. Use dry_run=true to check feasibility without executing.
Batched create / update / unlink / archive / unarchive / duplicate on many records at once, with per-batch error reporting. Use for imports and mass…
Batched create / update / unlink / archive / unarchive / duplicate on many records at once, with per-batch error reporting. Use for imports and mass maintenance instead of looping single-record tools. Hard cap: 500 records per call.
Compute KPI/dashboard numbers in one call: counts, sums and averages per model, optionally grouped and filtered by period. Pass 'metrics' for a…
Compute KPI/dashboard numbers in one call: counts, sums and averages per model, optionally grouped and filtered by period. Pass 'metrics' for a custom dashboard or omit them for a generic business overview.
Build a tabular report (JSON rows and/or CSV text) from any model with domain, field list, ordering and optional grouping. Use for exports the user…
Build a tabular report (JSON rows and/or CSV text) from any model with domain, field list, ordering and optional grouping. Use for exports the user will paste into a spreadsheet or hand to a client.
Explore everything linked to one record: many2one targets with their display name, and one2many/many2many collections with counts and samples. Use…
Explore everything linked to one record: many2one targets with their display name, and one2many/many2many collections with counts and samples. Use before deleting a record to see what depends on it.
List, create (Base64), fetch or delete ir.attachment files on a record. Large files are returned as metadata only unless include_data=true. Pass…
List, create (Base64), fetch or delete ir.attachment files on a record. Large files are returned as metadata only unless include_data=true. Pass dry_run=true to preview a create/delete without applying it.
Discover the workflow of a model: available states (with labels and record counts) plus the object buttons that move records between them. Call this…
Discover the workflow of a model: available states (with labels and record counts) plus the object buttons that move records between them. Call this before odoo_execute_workflow so you use a method that really exists.
Report what the connected Odoo user is allowed to do on a model: read/write/create/unlink rights, record rules, ACL entries and group memberships…
Report what the connected Odoo user is allowed to do on a model: read/write/create/unlink rights, record rules, ACL entries and group memberships. Use to explain 'Access Denied' errors or to verify permissions before a batch job.
Field-level change history of a record from the chatter: who changed which field, old value vs new value, with timestamps. Use for 'who changed this…
Field-level change history of a record from the chatter: who changed which field, old value vs new value, with timestamps. Use for 'who changed this and when'.
Create, list, reschedule, complete or delete scheduled activities (mail.activity) such as calls, emails and to-dos attached to records. Pass…
Create, list, reschedule, complete or delete scheduled activities (mail.activity) such as calls, emails and to-dos attached to records. Pass dry_run=true to preview a change without applying it.
Check stock availability for products: on-hand, reserved, free-to-use and forecasted quantities, optionally broken down per location. Resolves…
Check stock availability for products: on-hand, reserved, free-to-use and forecasted quantities, optionally broken down per location. Resolves products by id, internal reference or barcode.
Match open invoices/bills against unreconciled payments for a partner and reconcile them. By default it executes the reconciliation. Pass…
Match open invoices/bills against unreconciled payments for a partner and reconcile them. By default it executes the reconciliation. Pass dry_run=true when the user only wants to preview the suggested pairs. Reconciliation cannot be undone easily, so always report which pairs were actually reconciled.
Inspect installed/available Odoo modules, or install / upgrade / uninstall them. Install/upgrade/uninstall execute by default; pass dry_run=true to…
Inspect installed/available Odoo modules, or install / upgrade / uninstall them. Install/upgrade/uninstall execute by default; pass dry_run=true to preview. These operations restart the Odoo registry and may interrupt other users. Uninstalling a module deletes its data permanently, so uninstall additionally requires confirm=true.
One-shot health check of the Odoo instance: version/auth mode, response latency, failed and pending cron jobs, module upgrade backlog, active users…
One-shot health check of the Odoo instance: version/auth mode, response latency, failed and pending cron jobs, module upgrade backlog, active users and attachment storage. Use for 'is the server healthy?' questions and before heavy operations.
List scheduled actions (ir.cron), trigger one immediately, or enable/disable them. Use for 'why did the nightly job not run?' investigations. Pass…
List scheduled actions (ir.cron), trigger one immediately, or enable/disable them. Use for 'why did the nightly job not run?' investigations. Pass dry_run=true to preview run/enable/disable.
Use the configured LLM to analyse live Odoo aggregates and answer a business question (trends, anomalies, recommendations) in natural language. The…
Use the configured LLM to analyse live Odoo aggregates and answer a business question (trends, anomalies, recommendations) in natural language. The numbers are computed by Odoo first, so the model reasons over real data, not guesses.
Field-by-field diff of two records of the same model — shows only what differs. Use for 'is this a duplicate?', version checks or before/after audits.
Field-by-field diff of two records of the same model — shows only what differs. Use for 'is this a duplicate?', version checks or before/after audits.
Manage Odoo's own webhook records (webhook.webhook): list, create or delete outgoing HTTP hooks fired on record creation/update/deletion. Requires…
Manage Odoo's own webhook records (webhook.webhook): list, create or delete outgoing HTTP hooks fired on record creation/update/deletion. Requires the 'webhook' module to be installed in Odoo. Pass dry_run=true to preview.
Deep structural view of a model: every field with type/relation/required/store/index flags, SQL constraints, inheritance chain and access-rule…
Deep structural view of a model: every field with type/relation/required/store/index flags, SQL constraints, inheritance chain and access-rule summary. Use when you must understand a custom model before designing a query.
Translate a natural-language request into an Odoo domain using the configured LLM, then run it. Example: 'invoices over 5000 euro from Noumea…
Translate a natural-language request into an Odoo domain using the configured LLM, then run it. Example: 'invoices over 5000 euro from Noumea customers still unpaid'. Returns the interpreted domain so the result stays auditable; falls back to keyword search when no AI provider is configured.
Simulate a workflow transition WITHOUT changing anything: checks the button is valid for the current state, that required fields are filled, and that…
Simulate a workflow transition WITHOUT changing anything: checks the button is valid for the current state, that required fields are filled, and that the user has write access. Returns per-record verdicts plus the blockers. Always safe to call.
Find probable duplicate records by comparing one or more fields (case/punctuation insensitive). Works well for partners by name/vat/email, products…
Find probable duplicate records by comparing one or more fields (case/punctuation insensitive). Works well for partners by name/vat/email, products by barcode, and leads by phone. Read-only.
Work with multi-company setups: list companies, show the connected user's allowed companies, or run a query scoped to a specific company…
Work with multi-company setups: list companies, show the connected user's allowed companies, or run a query scoped to a specific company (allowed_company_ids context). Use when records seem to be missing because of company filtering.
Low-level escape hatch equivalent to Odoo's JSON-2 /web/dataset/call_kw endpoint: call ANY model method with explicit args, kwargs and context…
Low-level escape hatch equivalent to Odoo's JSON-2 /web/dataset/call_kw endpoint: call ANY model method with explicit args, kwargs and context. Prefer the typed tools; use this only for methods they do not cover. Arguments are passed through unchanged.
Turn a business goal into an executable plan over this MCP server's own tools. The planner reads the live tool catalog, returns an ordered plan (tool…
Turn a business goal into an executable plan over this MCP server's own tools. The planner reads the live tool catalog, returns an ordered plan (tool name, JSON arguments, purpose), and can execute it. Read-only steps run by default; steps that write require allow_writes=true. Use for multi-step requests such as 'close the month', 'chase every overdue invoice', 'prepare a QBR for our top 10 customers' or 'find and fix products without images'.
Find statistical outliers in any Odoo model: unusual invoice amounts, abnormal stock movements, odd timesheets, suspicious payments. Groups by an…
Find statistical outliers in any Odoo model: unusual invoice amounts, abnormal stock movements, odd timesheets, suspicious payments. Groups by an optional field and scores each record with z-score, robust MAD or IQR fences, then explains likely causes with the configured LLM. Read-only and deterministic — the AI never invents the anomalies.
Forecast a metric into the future from live Odoo history: revenue, order volume, units sold, expenses, stock consumption. Buckets records by…
Forecast a metric into the future from live Odoo history: revenue, order volume, units sold, expenses, stock consumption. Buckets records by day/week/month/quarter, fits a trend + optional seasonality, returns history, forecast points with confidence bands, backtest accuracy (R², MAPE) and an AI commentary. Pure-Python statistics, no extra deps.
Extract structured data from a supplier invoice, purchase order, quotation, delivery note, bank statement or contract and match it against Odoo…
Extract structured data from a supplier invoice, purchase order, quotation, delivery note, bank statement or contract and match it against Odoo. Accepts raw text, base64 content, an ir.attachment id or a URL. Returns normalised fields and order lines, the matched partner/products and validation warnings. Set create_record=true to also create the draft Odoo record (invoice/bill, RFQ or quotation).
Ask a question in plain English/French and get live Odoo records back. Detects the right model when you do not name one, translates the question into…
Ask a question in plain English/French and get live Odoo records back. Detects the right model when you do not name one, translates the question into a validated Odoo domain, executes it, and summarises the rows. Invalid field names are corrected or neutralised instead of crashing. Example: 'unpaid invoices over 5000 from Noumea customers this quarter'.
One-call 360° view of a customer: profile, revenue and order history, invoices and overdue balance, payments, open opportunities, support tickets…
One-call 360° view of a customer: profile, revenue and order history, invoices and overdue balance, payments, open opportunities, support tickets, activities, top products and recency. Computes churn risk, engagement and value scores, then writes an executive summary with next best actions. Identify the customer by id, name, email or VAT.
Product recommendations grounded in this customer's real purchase history: cross-sell (bought together by similar customers), reorder timing (next…
Product recommendations grounded in this customer's real purchase history: cross-sell (bought together by similar customers), reorder timing (next purchase due), upsell (higher-tier alternatives) and best sellers. Every recommendation carries its evidence (support, confidence, lift, dates) and an AI talk-track when a provider is configured.
Search this platform's knowledge base together with Odoo documents (Knowledge articles, attachments, product descriptions, notes, tasks, tickets…
Search this platform's knowledge base together with Odoo documents (Knowledge articles, attachments, product descriptions, notes, tasks, tickets, chatter) and return ranked snippets with citations. With an AI provider configured it also synthesises a direct answer that cites the sources. Use for 'how do I…', policy, product or procedure questions.
Build a complete customer quotation from products and quantities: resolves the customer and products by id/name/reference/barcode, applies the…
Build a complete customer quotation from products and quantities: resolves the customer and products by id/name/reference/barcode, applies the pricelist, taxes and discounts, previews line and order totals, then creates the draft sale order and optionally confirms it and emails the quotation. Use for 'quote 10 units of X for Acme' requests.
Automate the invoice lifecycle: generate customer invoices from sales orders (wizard + manual fallback), create invoices from lines, post them, email…
Automate the invoice lifecycle: generate customer invoices from sales orders (wizard + manual fallback), create invoices from lines, post them, email them, chase overdue invoices with reminders/activities, or batch-post every draft invoice in a period. Every branch reports per-record success/failure and honours dry_run.
Replenishment planning: analyse stock coverage against reorder rules and recent demand, rank products by stockout risk, suggest quantities rounded to…
Replenishment planning: analyse stock coverage against reorder rules and recent demand, rank products by stockout risk, suggest quantities rounded to the order multiple, match suppliers and prices, then create grouped RFQs or write reorder points. Works with both stock.warehouse.orderpoint rules and product-level min/max.
Trace stock movements for a product, lot or location over a period: every in/out/internal move with date, reference and picking, totals by…
Trace stock movements for a product, lot or location over a period: every in/out/internal move with date, reference and picking, totals by type/location/day, current on-hand quants and optional stock-valuation layers. Use for 'where did the stock go?' and traceability.
Assess customer credit risk from live receivables: credit limit utilisation, ageing buckets (current/1-30/31-60/61-90/90+), overdue invoices, revenue…
Assess customer credit risk from live receivables: credit limit utilisation, ageing buckets (current/1-30/31-60/61-90/90+), overdue invoices, revenue and DSO, a 0-100 risk score, a recommended credit limit and an AI narrative. Pass a customer for a deep dive or omit it for a ranked portfolio of every customer with an open balance.
Forecast the sales pipeline: weighted value by stage/owner/month, commit-best-worst scenarios, unweighted pipeline, booked revenue for the period…
Forecast the sales pipeline: weighted value by stage/owner/month, commit-best-worst scenarios, unweighted pipeline, booked revenue for the period, gap to target and an AI review. Filters by sales team, salesperson and period.
Manage recurring revenue: list subscriptions, compute MRR/ARR, new vs churned, retention and revenue by plan; flag renewals at risk…
Manage recurring revenue: list subscriptions, compute MRR/ARR, new vs churned, retention and revenue by plan; flag renewals at risk; pause/resume/renew subscriptions; and create a new subscription with its lines. Requires the Odoo Subscriptions app.
Multi-step approval engine for any Odoo record: configure rules by model and amount threshold, submit a record for approval, approve/refuse with…
Multi-step approval engine for any Odoo record: configure rules by model and amount threshold, submit a record for approval, approve/refuse with notes, track pending items, and optionally execute the configured Odoo method automatically once the required number of distinct approvers has approved. Also lists pending requests from Odoo's Approvals app when it is installed.
Run many MCP tool calls in one request, sequentially or with bounded concurrency. Each call gets its own status, timing and error capture, so one…
Run many MCP tool calls in one request, sequentially or with bounded concurrency. Each call gets its own status, timing and error capture, so one failure never hides the other results. Later calls can reference earlier results with {"$ref": "0.created_id"} or "${0.result.0.id}". Use async_mode=true for long batches and poll with action='status'. Also lists and cancels jobs.
Discover which MCP tools can do something. Searches the live catalog by intent (name + description), shows category, read-only flag, required…
Discover which MCP tools can do something. Searches the live catalog by intent (name + description), shows category, read-only flag, required parameters and the JSON schema on demand. Use before planning so you never invent a tool or argument name.
Browse Odoo as MCP resources. List resource templates, then read addresses such as odoo://models, odoo://model/sale.order/schema…
Browse Odoo as MCP resources. List resource templates, then read addresses such as odoo://models, odoo://model/sale.order/schema, odoo://model/sale.order/records?limit=5, odoo://record/sale.order/12, odoo://views/sale.order, odoo://reports, odoo://attachments/34 or odoo://tools. Also searches models, reports and tools by keyword.
Ready-made, Odoo-aware prompt templates exposed like MCP prompts: list, get, render, save and delete. Templates cover month-end close, overdue…
Ready-made, Odoo-aware prompt templates exposed like MCP prompts: list, get, render, save and delete. Templates cover month-end close, overdue chasing, reorder planning, customer QBR, pipeline review, quotation follow-up, anomaly triage, data-quality audit and more. Render fills variables with live context (today, company) and reports which tools the prompt expects.
Durable event bus for agent-to-agent coordination. Every MCP tool call already emits tool.success / tool.error events; publish custom events too…
Durable event bus for agent-to-agent coordination. Every MCP tool call already emits tool.success / tool.error events; publish custom events too. Actions: publish, list (cursor pagination), poll (long-poll up to 25s for new events), stats, clear and info. Use it to hand work between agents or to watch a long batch.
Schedule any MCP tool to run later or repeatedly: once, every N minutes, daily, weekly or monthly (timezone-aware). The scheduler tick runs inside…
Schedule any MCP tool to run later or repeatedly: once, every N minutes, daily, weekly or monthly (timezone-aware). The scheduler tick runs inside the MCP server, records each run in the execution history and emits scheduler events. Also run a task now, run all due tasks, pause/resume, inspect history and delete. Use for recurring reports, reminders and nightly checks.
Audit every tool run this server has performed: filter by tool, status, source or time, fetch one run by id, and compute reliability stats (error…
Audit every tool run this server has performed: filter by tool, status, source or time, fetch one run by id, and compute reliability stats (error rate, p50/p95 latency, slowest and most failing tools). Includes calls made by the planner, batch executor and scheduler. Use it to debug agents and to prove what changed.
Make multi-step Odoo changes reversible. Records a compensation journal while executing create/update/delete/call steps, then either commits or rolls…
Make multi-step Odoo changes reversible. Records a compensation journal while executing create/update/delete/call steps, then either commits or rolls back (updating old values, deleting created rows, recreating deleted rows). Use it for multi-record automations where Odoo's one-commit-per-RPC-call model would otherwise leave partial data behind. Supports dry-run planning and per-step rollback reports.
Build and run a query from business context instead of raw domains: customer name, salesperson, warehouse, pricelist, company, period and language…
Build and run a query from business context instead of raw domains: customer name, salesperson, warehouse, pricelist, company, period and language are resolved to real Odoo ids/values, sensible per-model defaults are applied, and date keywords become proper ranges. Returns the exact domain, context and trace so the query is auditable. Supports group-by aggregation.