Communication Tools
Odoo AI MCP Server

Communication Tools

odoo_communication and odoo_email — chatter notes, activities, subscriptions, and outbound email

Communication Tools

Two tools handle all messaging and communication: odoo_communication for chatter/activities, and odoo_email for outbound email.

[!NOTE] All communication sub-actions map to the write policy action. The target model must have can_write: True in its Model Access Rule.


odoo_communication

Category: Communication | Policy: write on target model

Handles all record-level communication via sub_action. The tool calls mail APIs on the browsed record (env[model].browse(res_id)).

Chatter Sub-Actions

sub_actionORM MethodDescription
post_notemessage_post(subtype='note')Post an internal log note — not visible to external partners
post_messagemessage_post(subtype='comment')Post a message that notifies followers
add_followersmessage_subscribe(partner_ids)Subscribe partners to receive notifications
remove_followersmessage_unsubscribe(partner_ids)Unsubscribe partners
get_messagesmessage_ids.read()Read the chatter message history

Activity Sub-Actions

sub_actionDescription
schedule_activityCreate a new activity on a record (type, deadline, note, assigned user)
update_activityUpdate an existing activity
complete_activityMark an activity as done (with optional feedback)

Post a Chatter Note

{
  "name": "odoo_communication",
  "arguments": {
    "model": "sale.order",
    "res_id": 42,
    "sub_action": "post_note",
    "body": "Order confirmed by AI assistant. Customer was contacted via phone.",
    "user_prompt": "Post a note that the order was confirmed"
  }
}

Schedule an Activity

{
  "name": "odoo_communication",
  "arguments": {
    "model": "sale.order",
    "res_id": 42,
    "sub_action": "schedule_activity",
    "activity_type": "mail.activity.data.call",
    "summary": "Follow up with customer",
    "deadline": "2026-08-15",
    "note": "Customer requested a call to discuss delivery timeline"
  }
}

Add Followers

{
  "name": "odoo_communication",
  "arguments": {
    "model": "sale.order",
    "res_id": 42,
    "sub_action": "add_followers",
    "partner_ids": [7, 12]
  }
}

Read Chatter History

{
  "name": "odoo_communication",
  "arguments": {
    "model": "sale.order",
    "res_id": 42,
    "sub_action": "get_messages",
    "limit": 20
  }
}

odoo_email

Category: Communication | Policy: write on mail.mail / mail.template / record model

Handles outbound email: composing freeform emails, rendering and sending mail templates, and listing available templates.

Sub-Actions

sub_actionDescription
send_emailCompose and send a freeform email
send_templateRender a mail.template on a specific record and send it
list_templatesList available email templates, optionally filtered by model

Send a Freeform Email

{
  "name": "odoo_email",
  "arguments": {
    "sub_action": "send_email",
    "model": "sale.order",
    "res_id": 42,
    "email_to": ["[email protected]"],
    "subject": "Your order SO/2026/001 has shipped",
    "body_html": "<p>Hello,</p><p>Your order has been dispatched.</p>"
  }
}

[!NOTE] The email_to list is capped at the Max Email Recipients setting (default: 20).

Send Using a Template

{
  "name": "odoo_email",
  "arguments": {
    "sub_action": "send_template",
    "model": "sale.order",
    "res_id": 42,
    "template_id": 15
  }
}

List Available Templates

{
  "name": "odoo_email",
  "arguments": {
    "sub_action": "list_templates",
    "model": "sale.order"
  }
}

Returns a list of {id, name, subject, model} for all mail.template records applicable to the given model (or all templates if model is omitted).