Skip to content
Agentmart
Submit a tool

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

IndexedLicense unknownRemote (HTTP)★ 88
Write a review

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/mcp Remote (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.

We use your email only for this newsletter. Privacy

About

Connect AI to Odoo ERP 14-20: search, create, update and manage records in natural language.

Use cases: finance-accounting, workflow-automation

No 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_list
  • resource_template_list
  • server_info_get
  • skill_find
  • skill_get

Write 13 · Create, change, send or run things.

  • binary_field_set
  • message_post
  • method_execute
  • payment_register
  • record_aggregate
  • record_create
  • record_export
  • record_get
  • record_import
  • record_search
  • record_update
  • records_create
Show 1 more tools
  • records_update

Delete 2 · Delete, drop, revoke or wipe things.

  • record_delete
  • records_delete

Network hosts it talks to 6

  • github.com · found in code
  • glama.ai · found in code
  • mcp.pantalytics.com · found in remote endpoint, install command, code
  • mycompany.odoo.com · found in code
  • odoo.com · found in code
  • pantalytics.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 ('&lt;p&gt;Hi&lt;/p&gt;'): 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 Models

    List 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 Record

    Create 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 Record

    Delete 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 Record

    Get 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 Records

    Search 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 Record

    Update 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 Templates

    List 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 Info

    Get MCP server version and connection status. Returns: Server version, git commit, API version, and Odoo connection status.

  • skill_findFind Relevant Odoo Skill

    Return 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 Skill

    Read 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
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)