7.8 KiB
name, description
| name | description |
|---|---|
| odoo | Access MPM's Odoo ERP system (mpmedia.odoo.com). Use for any question or task involving: products, product catalog, stock levels, inventory; knowledge base articles; contacts, customers, vendors; sales orders, quotes; CRM leads and opportunities; projects and tasks; helpdesk tickets; purchase orders; employees and departments; bulk record updates; archiving records; counting records; cancelling quotations. Triggers on: "in Odoo", "our products", "the knowledge base", "find a contact", "sales order", "opportunity", "project tasks", "helpdesk ticket", "purchase order", "stock", "inventory", "employee", "what stage is", "create a task", "update the ticket", "cancel quotation", "cancel quote", "archive", "mark lost", "bulk update", "how many records", "count of", "stage id for", "resolve stage", "search with filters", "filter by", "lost reasons". |
Odoo MPM Skill
You have direct access to MPM's Odoo instance at mpmedia.odoo.com via the odoo-mpm MCP server.
First-Time Setup (required once per Mac)
Each team member connects using their own personal Odoo credentials. Credentials are stored securely in the macOS Keychain — never in a file on disk.
Step 1 — Generate your Odoo API key
- Open mpmedia.odoo.com and log in with your account
- Click your avatar (top-right corner) → My Profile
- Go to the Account Security tab
- Under API Keys, click New API Key
- Enter a label such as
Claude Cowork - Set the Expiration to No Limit (indefinite — the key should not expire)
- Click Generate Key and copy it immediately — Odoo only displays it once
Step 2 — Store your credentials
Run the setup_odoo_credentials tool:
username: your Odoo login email (e.g.you@mpmedia.tv)api_key: the key you just copied
The tool will save your credentials to the macOS Keychain and immediately verify the connection. You will not need to do this again unless you rotate your key or get a new Mac.
Troubleshooting auth issues: run clear_odoo_credentials then setup_odoo_credentials again with a freshly generated key.
Connection Details
- Instance: mpmedia.odoo.com
- Database: mpmedia-odoo-sh-main-13285275
- User context: your personal Odoo account
Available Modules & Tools
Credentials (setup_odoo_credentials, clear_odoo_credentials)
One-time setup to store your personal API key in the macOS Keychain. Use clear_odoo_credentials when rotating your key or offboarding.
Products (search_products, get_product, get_product_stock)
Search the product catalog, retrieve product details including pricing and descriptions, and check stock levels across warehouse locations.
Knowledge (search_knowledge_articles, get_knowledge_article, create_knowledge_article, update_knowledge_article)
Read, search, create, and update internal Knowledge base articles. Body content is HTML. All three tools support an icon field — pass a Unicode emoji (e.g. ⚙️, 🔌, 🖥️) to set the article's icon in the KB tree. Browse icons at https://emojipedia.org.
Knowledge Templates (search_knowledge_templates, get_knowledge_template, list_knowledge_template_categories)
Browse built-in Odoo Knowledge article templates by name or category. Use get_knowledge_template to retrieve the full template body for use as a starting point when creating articles.
Contacts (search_contacts, get_contact, create_contact)
Search customers, vendors, and individuals. Use is_company=true to filter to companies.
Sales (search_sales_orders, get_sales_order, create_sales_order, cancel_sale_orders, cancel_and_archive_quotations)
Look up quotes and sales orders by name (e.g. S00901) or customer. get_sales_order includes line items.
Important: cancel_sale_orders and cancel_and_archive_quotations ONLY operate on orders in Quotation (draft) or Quotation Sent (sent) state. Both tools will refuse and raise an error if any provided IDs are in any other state (confirmed Sale Order, Locked, Cancelled, etc.). This is an intentional safety constraint — confirmed orders cannot be cancelled via Claude.
CRM (search_crm_leads, get_crm_lead, create_crm_lead, update_crm_lead, list_crm_stages, mark_crm_lead_lost, list_crm_lost_reasons)
Manage opportunities in the sales pipeline. Use list_crm_stages to get valid stage IDs before updating. Use list_crm_lost_reasons then mark_crm_lead_lost to record a loss with a reason.
Project (list_projects, get_project, search_tasks, get_task, create_task, update_task, list_task_stages)
Browse projects, search and update tasks. Use list_task_stages with a project_id to get valid stage IDs.
Helpdesk (search_helpdesk_tickets, get_helpdesk_ticket, create_helpdesk_ticket, update_helpdesk_ticket, list_helpdesk_teams)
Manage support tickets across helpdesk teams.
Purchase (search_purchase_orders, get_purchase_order)
Look up purchase orders by name (e.g. P00195) or vendor. get_purchase_order includes line items.
Inventory (search_inventory, get_stock_moves, list_internal_locations)
Check current stock levels and recent stock movements by product.
Employees (search_employees, get_employee, list_departments)
Look up employee information and department structure.
Utilities — Generic (odoo_search, odoo_get_record, odoo_search_read, get_record_count, bulk_update_records, archive_records, get_stage_ids, call_odoo_method)
Advanced tools for any Odoo model:
odoo_search_read— preferred for efficient queries: search with domain + return only specified fields. Use this instead ofodoo_search+odoo_get_recordto avoid token bloat.get_record_count— count records matching a domain without fetching data. Use before bulk operations.bulk_update_records— set one or more field values on a list of record IDs in a single API call. Works for stage changes, custom Studio fields (x_studio_*), status flags, etc.archive_records— soft-delete records by settingactive=False. Forsale.order, cancel first withcancel_sale_orders.get_stage_ids— resolve stage names to IDs with case-insensitive exact matching. Supportscrm.stage,project.task.type, andhelpdesk.stage.call_odoo_method— escape hatch for any model method not covered by other tools (workflow transitions, report actions, custom methods). Use sparingly.odoo_search/odoo_get_record— legacy generic lookup tools; preferodoo_search_readfor new usage.
Workflow Guidelines
- When looking up items by number (e.g. "S00901", "P00195"), use
search_sales_ordersorsearch_purchase_orderswith that as the query. - Before updating a task or ticket stage, call
list_task_stagesorget_stage_ids('helpdesk.stage', ['Stage Name'])to confirm valid stage IDs. - Use
get_stage_idsinstead ofodoo_searchfor stage lookups — it handles case-insensitive matching correctly. - Knowledge article bodies are stored as HTML — when creating or updating articles, use basic HTML formatting.
- IDs returned from search tools can be passed directly to
get_*tools for full details. - When the user asks about "our products" without specifying, use
search_productswith no query and limit=20 to show a broad overview. - Use
odoo_search_readfor any query where you only need specific fields — it is more efficient thanodoo_get_recordand avoids large responses. - Before calling
cancel_sale_ordersorcancel_and_archive_quotations, usesearch_sales_ordersto verify the orders are indraftorsentstate. Both tools will refuse if any order is in another state. - Before calling
mark_crm_lead_lost, calllist_crm_lost_reasonsto show the user available reasons so they can choose one by name.