Odoo MCP Pro
Connect AI to Odoo ERP 14-20: search, create, update and manage records in natural language.
Connector by pantalytics · GitHub account verified by the MCP Registry
Install
Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/pantalytics-odoo-mcp-pro
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.pantalytics.com/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: finance-accounting, workflow-automation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 5 read · 13 write · 2 delete
- Secrets
- None asked for
- Install scripts
- Nothing to install (hosted)
- Runs as
- Hosted (remote endpoint)
Tools by what they do 20
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
model_listresource_template_listserver_info_getskill_findskill_get
Write 13 · Create, change, send or run things.
binary_field_setmessage_postmethod_executepayment_registerrecord_aggregaterecord_createrecord_exportrecord_getrecord_importrecord_searchrecord_updaterecords_create
Show 1 more tools
records_update
Delete 2 · Delete, drop, revoke or wipe things.
record_deleterecords_delete
Network hosts it talks to 6
github.com· found in codeglama.ai· found in codemcp.pantalytics.com· found in remote endpoint, install command, codemycompany.odoo.com· found in codeodoo.com· found in codepantalytics.com· found in code
Files it touches
- Any path the agent passes to its tools
Tools (20)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
binary_field_setSet Binary Field (Upload Image/File to a Record Field)Upload bytes into a Binary or Image field on an existing record. Use this for: avatar/logo on res.partner, product images on product.template, company logo, attachment bytes on custom Binary fields. IMPORTANT — bytes must NOT pass through the model. `source` must be an http(s) URL; the server fetches the bytes from that URL directly and streams them to Odoo. Do NOT base64-encode a local file and paste it into this call — LLMs are for reasoning, not binary transport. If the user has a local file without a URL, direct them to upload it somewhere reachable first: a Google Drive share link (dir…
message_postPost Chatter Message (Send Message / Log Note)Post a message in the chatter of any thread-enabled Odoo record. Equivalent to clicking 'Send Message' (subtype=mt_comment, default) or 'Log Note' (subtype=mt_note) in the Odoo UI. Sends synchronously within the same request — no waiting on the email queue cron. Args: model: Odoo model with chatter enabled — 'res.partner', 'crm.lead', 'sale.order', 'account.move', 'helpdesk.ticket', etc. record_id: ID of the record to post on. body: HTML body of the message. Pass real markup ('<p>Hi</p>'), not escaped markup ('<p>Hi</p>'): the body is sent with …
method_executeExecute Odoo Method (call a standard Odoo action)Call a public method on an Odoo model or recordset. This is the standard Odoo way to trigger an action that is not plain create/read/update/delete: confirming a sales order, posting an invoice, marking a CRM lead lost, validating a delivery, and so on. It runs Odoo's own method unchanged. Some methods return a wizard instead of completing (e.g. validating a delivery that is short on stock asks whether to create a backorder). For known wizards this tool finishes them with Odoo's own wizard when you pass the answer in `decision`. If you call without a decision, the wizard's question is put to …
model_listList ModelsList all models enabled for MCP access with their allowed operations. Args: connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: List of models with their technical names, display names, and allowed operations (read, write, create, unlink).
payment_registerRegister Payment (form)Register a payment on posted invoices or bills, through a form. Runs Odoo's own register-payment wizard (`account.move. action_register_payment`). Prefer this over `method_execute` for payments: in a client that supports MCP Apps the user gets a form with journal, amount, date and memo right in the chat and submits it there; the result comes back to you as usual. Elsewhere it behaves exactly like `method_execute`: call without `decision` to see the wizard's fields (`followup`), or pass `decision={}` to accept Odoo's defaults (full residual, today, default journal). Args: model: 'account.…
record_aggregateAggregate Records (grouped totals)Group records and compute totals in Odoo (read_group). Use this for reports instead of paging through records: revenue per product per month, quantity per location, invoice count per customer. Odoo does the math; you get one compact row per group. Args: model: The Odoo model name, e.g. 'account.move.line'. groupby: Up to 3 fields to group by. Use 'field:granularity' for dates (day, week, month, quarter, year), e.g. ['product_id', 'date:month']. Omit for one grand-total row. aggregates: Totals per group as 'field:function', e.g. ['price_subtotal:sum', 'quan…
record_createCreate RecordCreate a new record in an Odoo model. Args: model: The Odoo model name (e.g., 'res.partner') values: Field values for the new record connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: Created record details with ID, URL, and confirmation.
record_deleteDelete RecordDelete a record. Args: model: The Odoo model name (e.g., 'res.partner') record_id: The record ID to delete connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: Deletion confirmation with the deleted record's name and ID.
record_exportExport Records (compact CSV)Export many records as compact CSV text (Odoo's Export feature). Use this for a large list of rows (thousands of order lines, journal items, stock quants) that the user wants in a spreadsheet or file, or that you must check row by row. The header comes once, so each row is much smaller than in record_search. For totals per group, use record_aggregate instead. Write the csv text to a file when the user wants a file. Args: model: The Odoo model name, e.g. 'sale.order.line'. fields: Columns to export. Use '/' to follow a relation, as in Odoo's Export dialog: ['order_id/name', 'p…
record_getGet RecordGet a specific record by ID with smart field selection. This tool supports selective field retrieval to optimize performance and response size. By default, returns a smart selection of commonly-used fields based on the model's field metadata. Args: model: The Odoo model name (e.g., 'res.partner') record_id: The record ID fields: Field selection options: - None (default): Returns smart selection of common fields - ["field1", "field2", ...]: Returns only specified fields - ["__all__"]: Returns ALL fields (warning: can be very large) Workflow for field disco…
record_importImport Records (Upsert with External IDs)Import records using Odoo's native load() method with external ID support. This is the recommended way to import data. It supports idempotent upsert: if a record with the given external ID already exists, it will be updated instead of duplicated. Running the same import twice produces the same result. Uses the same mechanism as Odoo's built-in CSV import. Args: model: The Odoo model name (e.g., 'res.partner') fields: List of field names matching the data columns. Use 'id' for the external ID column (e.g., '__import__.partner_acme'). Use 'field_name/id' to reference r…
record_searchSearch RecordsSearch for records in an Odoo model. Args: model: The Odoo model name (e.g., 'res.partner') domain: Odoo domain filter - can be: - A list: [['is_company', '=', True]] - A JSON string: "[['is_company', '=', true]]" - None: returns all records (default) fields: Field selection options - can be: - None (default): Returns smart selection of common fields - A list: ["field1", "field2", ...] - Returns only specified fields - A JSON string: '["field1", "field2"]' - Parsed to list - ["__all__"] or '["__all__"]': Returns ALL fields (w…
record_updateUpdate RecordUpdate an existing record. Args: model: The Odoo model name (e.g., 'res.partner') record_id: The record ID to update values: Field values to update connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: Updated record details with confirmation.
records_createCreate Records (Bulk)Create multiple records in a single operation (max 1000). Much faster than calling record_create repeatedly. Use this when importing data, creating batches of records, or any scenario with more than a few records. Args: model: The Odoo model name (e.g., 'res.partner') vals_list: List of dicts, each containing field values for one record. Example: [{"name": "Alice"}, {"name": "Bob"}] connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connec…
records_deleteDelete Records (Bulk)Delete multiple records in a single operation (max 1000). Args: model: The Odoo model name (e.g., 'res.partner') record_ids: List of record IDs to delete connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: List of deleted record IDs with count and confirmation.
Show 5 more tools
records_updateUpdate Records (Bulk)Update multiple records with the same values in a single operation (max 1000). Use this for mass updates like tagging contacts, changing statuses, or applying the same change to many records at once. Args: model: The Odoo model name (e.g., 'res.partner') record_ids: List of record IDs to update values: Field values to apply to all specified records connection: Optional. Target a specific Odoo connection by the id from server_info_get's `connections` list. Hosted multi-tenant only; ignored when self-hosting a single connection. Returns: List of updated rec…
resource_template_listList Resource TemplatesList available resource URI templates. Since MCP resources with parameters are registered as templates, they don't appear in the standard resource list. This tool provides information about available resource patterns you can use. Returns: Resource template definitions with examples and enabled models.
server_info_getServer InfoGet MCP server version and connection status. Returns: Server version, git commit, API version, and Odoo connection status.
skill_findFind Relevant Odoo SkillReturn the Odoo skill most relevant to a question, with its content. Prefer this tool — it picks the right skill by keyword match and returns its full markdown guide in one call. Use when you're about to execute a domain workflow (selling, buying, inventory, etc.) and want the reference material first. If `skill_find` returns nothing, fall back to `skill_get(name)` with a guessed name. Args: question: The user's question or task description, any language. Returns: {name, description, content} of the best match, or an empty dict if nothing matched. If multiple skills matched, …
skill_getGet Odoo SkillRead an Odoo workflow skill by name. Returns the full SKILL.md content — load this as context before executing a multi-step workflow in that domain. Args: name: Skill name as returned by `skill_find` (e.g. "selling"). Returns: The markdown body of the SKILL.md file. Empty string if the skill name is not known.
Signals
- Stars
- 88
- Forks
- 44
- Open issues
- 15
- Contributors
- 6
- Last commit
- Oct 23, 2026 (5 days ago)
- Last release
- Oct 23, 2026 (5 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.pantalytics/odoo-mcp-pro- Version
- 4.1.0
- Auth
- Auth not stated
- License
- License unknown
- Repository
- github.com/pantalytics/odoo-mcp-pro
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Odoo MCP Pro. Agent Mart. https://agentmart.dev/connectors/pantalytics-odoo-mcp-pro (last updated 2026-10-24)