Odoo Claude MCP

180 tools. 85 can modify or destroy data without limits.

17 destructive tools with no built-in limits. Policy required.

Last updated:

85 can modify or destroy data
95 read-only
180 tools total

Community server · catalogue entry verified 11/06/2026

How to control Odoo Claude MCP ↓

What Odoo Claude MCP exposes to your agents

Read (95) Write / Execute (67) Destructive / Financial (17)
Critical Risk

The most dangerous Odoo Claude MCP tools

85 of Odoo Claude MCP's 180 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Odoo Claude MCP

PolicyLayer is an MCP gateway — it sits between your AI agents and Odoo Claude MCP, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "cf_dns_delete": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "memory_pull": {
    "limits": [
      {
        "counter": "memory_pull_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "ai_tokenize_record": {
    "limits": [
      {
        "counter": "ai_tokenize_record_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Odoo Claude MCP — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON ODOO CLAUDE →

Free to start. No card required.

All 180 Odoo Claude MCP tools

EXECUTE 37 tools
Execute ai_invoice_pipeline_run Execute the full registered step pipeline for one move+attachment. Execute ai_pipeline_run Execute an Odoo-defined pipeline (ai.pipeline.step records for the Execute ai_pipeline_step_execute Execute a single ai.pipeline.step by name via Odoo RPC. Execute ee_deploy Deploy EE from buffer to target (rsync). Buffered mode only. Execute git_remote Run git commands on a remote server via SSH. Execute oca_deploy Deploy OCA repos from buffer to target (rsync). Only in buffered mode. Execute odoo_execute Execute any model method via execute_kw. Execute ssh_execute Execute a command on a remote server via SSH. Execute ai_invoice_plugins_reload Reload plugin steps from the plugins directory (default Execute ai_tokenize_collection Tokenize ALL records of a model via the registry entry. Heavy operation — Execute ee_clone Clone Odoo Enterprise repository with GitHub token authentication. Execute github_api Call GitHub REST API directly. Uses the GitHub token from local_profile.json. Execute google_auth Authenticate with Google OAuth2 for Gmail and Calendar access. Execute oca_changelog Generate CHANGELOG from newsfragments using oca-towncrier. Execute oca_clone_all Clone all OCA repositories for a branch using oca-clone-everything. Execute oca_clone_repo Clone a specific OCA repository by name. Execute oca_fix_website Fix website URL in addon manifests using oca-fix-manifest-website. Execute oca_gen_icon Generate default OCA icon for addon(s) using oca-gen-addon-icon. Execute oca_gen_readme Generate README for an OCA addon using oca-gen-addon-readme. Execute oca_gen_requirements Generate requirements.txt from addon external_dependencies using oca-gen-external-dependencies. Execute odoo_stock_initial_opening_journal Book the opening-balance journal entry for a previous SQL-inserted initial stock Execute odoo_translate_context_aware Translate Odoo records using Claude with rich domain context for natural, Execute odoo_web_call Call any Odoo model method via web session (JSON-RPC /web/dataset/call_kw). Execute odoo_web_request Raw HTTP request to any Odoo controller URL via web session. Execute proxy_call Forward a tool call to an internal MCP sub-service. Execute proxy_refresh Re-discover tools from all internal MCP sub-services. Execute telegram_auth Authenticate with Telegram. Two-step process: Execute ee_link Create symlink for specific EE modules in the Odoo addons path (selective install). Execute ee_update Git pull Enterprise repository. Execute google_gmail_send Send an email or reply to an existing message. Execute oca_link Create symlink for OCA addon module in the Odoo addons path. Execute oca_migrate Migrate OCA repos to a new Odoo version branch using oca-migrate-branch. Execute oca_update Git pull all OCA repos in the working directory (recursive). Execute odoo_stock_initial_import Import opening stock balances (initial inventory) via direct SQL INSERT, bypassing Execute odoo_web_login Login to Odoo web interface with user/password. Creates a persistent Execute open_connection_manager Open the Connection Manager GUI (desktop app). Execute telegram_send_message Send a Telegram message. Chat can be @username, phone, or numeric ID.
WRITE 30 tools
Write memory_pull Pull shared memory file(s) into your personal storage. Write memory_share Share personal memory file(s) — copies to shared storage Write oca_gen_table Generate addons table in repo README.md using oca-gen-addons-table. Write odoo_cert_refresh Re-fetch the peer SSL certificate for a connection and overwrite Write odoo_stock_product_flip_to_storable Flip a product from consumable (is_storable=false) to storable (is_storable=true) Write odoo_translate_field Write translations for a simple translate=True field (Char/Text/Selection). Write odoo_translate_html Write/read translations for translate=html_translate / translate=xml_translate Write telegram_agent_enroll Enroll a Telegram chat for agentic handling with a scenario. Write cf_dns_create Create DNS record. ttl=1 means Auto. Write cf_dns_update Patch a DNS record. Pass any of: type, name, content, proxied, ttl. Write cf_tunnel_config_put Replace the full ingress config. Last entry must be {'service': 'http_status:404'}. Write cf_tunnel_route_add Add (or replace) one ingress rule + create CNAME record. Write google_calendar_create_event Create a new calendar event. Write google_calendar_update_event Update an existing calendar event. Only provided fields are changed. Write memory_write Write/update a memory file. Saves to personal storage by default. Write odoo_attachment_upload Upload a file as an ir.attachment on an Odoo record. Write odoo_connect Add/update an Odoo connection. Auth via password or API key. Write odoo_create Create one or more records. Returns list of new IDs. Write odoo_fp_configure Add or update a tax action map entry for a fiscal position (l10n_bg_tax_admin). Write odoo_message_post Post a message or internal note on any Odoo record (chatter). Write odoo_stock_close_unaccounted_value Create an Inventory Valuation journal entry (Dr stock valuation / Cr GRNI/stock-input) Write odoo_website_add_snippet Insert a snippet into a target HTML field. Fetches the snippet template Write odoo_website_update_snippet Update an existing snippet on a target HTML field. Locates the snippet Write odoo_write Update existing records. Write s3_bucket_create Create a new bucket on the configured S3 endpoint. Write telegram_agent_create_quote Create a DRAFT sale.order in the scenario Write telegram_agent_set_scenario Replace the scenario for an enrolled chat. Write telegram_configure Set Telegram API credentials (api_id and api_hash from my.telegram.org). Write user_connection_activate Activate one of your personal connections as the working connection. Write user_connection_add Add/update a personal Odoo connection (saved per-user).
READ 95 tools
Read ai_tokenize_record Tokenize a single Odoo record: build composite document, embed via Read ai_collection_info Return info about the per-database Qdrant collection: vector size, Read ai_invoice_extract Extract structured invoice data from an Odoo attachment via Anthropic Read ai_invoice_pipeline_steps List currently registered pipeline steps with sequence, description, Read ai_invoice_pipeline_summary Dashboard aggregation: counts of vendor bill moves by next_step Read ai_invoice_scan_pending List vendor-bill drafts that have an attachment and no successful Read ai_invoice_stack_inspect Cross-layer snapshot for a single account.move: Odoo state + Read ai_list_documents List ai.composite.document records (tokenized records tracked by Odoo). Read ai_pipeline_steps_list List ai.pipeline.step records in Odoo for a given pipeline name. Read ai_search_similar Semantic search across tokenized Odoo records. Embeds the query with the Read ai_usage_budget_status Current month Read ai_usage_log_query Query the AI usage billing ledger. Filter by tenant, state, source, Read ai_usage_log_stats Dashboard KPIs for the billing ledger: totals, per-model breakdown, Read cf_dns_list List DNS records in a zone. Read cf_tunnel_config_get Get the current ingress/config of a tunnel. Read cf_tunnel_list List cloudflared tunnels in an account. Read cf_zones_list List zones (optional filter by name). Read contabo_account_info Return the authenticated customer's profile (name, contact, address, tenants). Read contabo_instances_list List VPS instances on the account (name, IP, status, plan). Read contabo_object_storage_get Get one Object Storage instance in full detail. Read contabo_object_storage_stats Get usage stats (GB used, object count, etc) for an Object Storage instance. Read contabo_object_storages_list List Object Storage instances (subscriptions) on the account. Read ee_depends Show full dependency tree of an EE module (CE + EE deps). Read ee_license_status Read Enterprise license status from an Odoo instance (expiration, code, reason). Read ee_modules List all Enterprise modules with category, license, depends. Filter by category, country, or keyword. Read ee_oca_conflicts Detect conflicts between Enterprise and OCA modules: name collisions, model overlaps. Read ee_oca_recommend For a module that exists in both EE and OCA — compare and recommend which to use. Read ee_search Search Enterprise modules by name, summary, or dependency. Read ee_token_check Validate GitHub token — check access to odoo/enterprise private repo. Read google_auth_status Check Google authentication status. Read google_calendar_events List upcoming calendar events. Supports time range and text search. Read google_calendar_list List all available Google calendars. Read google_gmail_labels List all Gmail labels (folders). Read google_gmail_read Read a specific Gmail message by ID. Returns full body, headers, and labels. Read google_gmail_search Search Gmail messages. Uses Gmail search syntax Read identify Identify yourself to load your personal settings and connections. Read mcp_terminal_get_config Generate a password-protected ZIP archive with the Claude Read memory_list List memory files. Shows personal files (for current user) and shared files. Read memory_read Read a memory file by filename. Searches personal first, then shared. Read oca_search Search for a module across all cloned OCA repos by name or keyword. Read oca_status Show git status of all OCA repos (branch, clean, behind, modules count). Read odoo_attachment_download Download an ir.attachment from Odoo by ID. Read odoo_cert_info Return the pinned SSL certificate details (issuer, subject, Read odoo_connections List all configured Odoo connections. Read odoo_fields_get Get field definitions for an Odoo model. Returns field names, types, labels, and attributes. Read odoo_fp_details Get detailed fiscal position with all tax action map entries (l10n_bg_tax_admin). Read odoo_fp_list List fiscal positions with tax action map summary (l10n_bg_tax_admin). Read odoo_fp_types Get available selection values for fiscal position configuration (l10n_bg_tax_admin). Read odoo_get_field_translations Read current translations for a translatable field on a record. Read odoo_list_models List available Odoo models (ir.model). Optionally filter by name pattern. Read odoo_list_translatable_fields List all translatable fields on an Odoo model. Returns per-field: Read odoo_module_info Get detailed information about an Odoo module: Odoo RPC state + Read odoo_read Read specific records by IDs. Read odoo_record_backup Read full field snapshot of one or more records (any model) and return as a JSON Read odoo_report Generate a PDF report for records. Returns base64-encoded PDF. Read odoo_search Search for record IDs matching a domain filter. Read odoo_search_count Count records matching a domain. Read odoo_search_read Search and read records in one call. Most common operation. Read odoo_version Get Odoo server version info. Read odoo_web_read Search and read records via web session (frontend web_search_read format). Read odoo_web_report Download PDF report via web session. Returns base64-encoded PDF. Read odoo_website_list_page_snippets List snippets currently embedded in a target HTML field. Target can be Read odoo_website_list_snippets List available Odoo website snippet templates (ir.ui.view records with Read proxy_discover List available tools on an internal MCP sub-service. Read public_access_barcode Generate barcode image via /report/barcode/{type}/{value}. Read public_access_download Download attachment/binary content by ID via /web/content/{id}. Public route. Read public_access_image Download image field from record via /web/image/{model}/{id}/{field}. Read public_access_portal_home Get portal home page content via web session (/my/home). Read public_access_portal_invoices Get list of portal invoices (/my/invoices). Returns HTML page content. Read public_access_portal_orders Get list of portal sale orders (/my/orders). Returns HTML page content. Read public_access_portal_purchases Get list of portal purchase orders (/my/purchase). Read public_access_portal_tickets Get list of portal helpdesk tickets (/my/tickets). Read public_access_report_html Render report as HTML via web session. Read public_access_report_pdf Download PDF report via web session. Route: /report/pdf/{report_name}/{doc_ids}. Read public_access_report_xlsx Download XLSX report via OCA reporting-engine (/report/xlsx/{name}/{ids}). Read public_access_shop Get website shop product listing (/shop). Returns HTML. Read public_access_sitemap Download sitemap.xml from Odoo website. Read s3_bucket_stats Return object_count + total_bytes + oldest/newest object key for a bucket. Read s3_buckets_list List all S3 buckets for the configured account on the target endpoint. Read s3_object_get Download an object (text). Binary or >max_bytes objects return metadata only. Read s3_objects_list List objects in a bucket (prefix-filtered, page size-capped). Read telegram_agent_get_scenario Get the full scenario for an enrolled chat. Read telegram_agent_list List enrolled chats with their mode/persona/skills. Read telegram_agent_product_lookup Search products for an enrolled chat, returning ONLY the scenario Read telegram_agent_route Classify the conversation direction for an enrolled chat and return the Read telegram_auth_status Check Telegram authentication status. Read telegram_get_dialogs List recent Telegram chats (users, groups, channels). Read telegram_get_messages Read messages from a Telegram chat. Chat can be @username, phone, or numeric ID. Read telegram_search_contacts Search Telegram contacts by name or username. Read user_connection_list List your personal connections. Read who_am_i Show current user identity and active connection. Read ai_usage_log_export Export billing ledger rows as CSV for a tenant + date range. Read odoo_web_export Export records to structured data via web session (Odoo export_data). Read public_access_export_csv Export Odoo list data as CSV via web session. Read public_access_export_xlsx Export Odoo list data as XLSX file via web session. Returns base64.

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Odoo Claude MCP

Can an AI agent delete data through the Odoo Claude MCP server? +

Yes. The Odoo Claude MCP server exposes 17 destructive tools including cf_dns_delete, cf_tunnel_route_remove, ee_unlink. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Odoo Claude MCP? +

The Odoo Claude MCP server has 30 write tools including memory_pull, memory_share, oca_gen_table. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Odoo Claude MCP.

How many tools does the Odoo Claude MCP server expose? +

180 tools across 4 categories: Destructive, Execute, Read, Write. 95 are read-only. 85 can modify, create, or delete data.

How do I enforce a policy on Odoo Claude MCP? +

Register the Odoo Claude MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Odoo Claude MCP tool call.

Deterministic rules across all 180 Odoo Claude MCP tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Free to start. No card required.

180 Odoo Claude MCP tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.