Intercom Automation via Rube MCP
Automate Intercom operations through Composio's Intercom toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/intercom
Prerequisites
-
Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
-
Active Intercom connection via RUBE_MANAGE_CONNECTIONS with toolkit intercom
-
Always call RUBE_SEARCH_TOOLS first to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
-
Verify Rube MCP is available by confirming RUBE_SEARCH_TOOLS responds
-
Call RUBE_MANAGE_CONNECTIONS with toolkit intercom
-
If connection is not ACTIVE, follow the returned auth link to complete Intercom OAuth
-
Confirm connection status shows ACTIVE before running any workflows
Core Workflows
- Manage Conversations
When to use: User wants to create, list, search, or manage support conversations
Tool sequence:
-
INTERCOM_LIST_ALL_ADMINS
-
Get admin IDs for assignment [Prerequisite]
-
INTERCOM_LIST_CONVERSATIONS
-
List all conversations [Optional]
-
INTERCOM_SEARCH_CONVERSATIONS
-
Search with filters [Optional]
-
INTERCOM_GET_CONVERSATION
-
Get conversation details [Optional]
-
INTERCOM_CREATE_CONVERSATION
-
Create a new conversation [Optional]
Key parameters:
-
from : Object with type ('user'/'lead') and id for conversation creator
-
body : Message body (HTML supported)
-
id : Conversation ID for retrieval
-
query : Search query object with field , operator , value
Pitfalls:
-
CREATE_CONVERSATION requires a contact (user/lead) as the from field, not an admin
-
Conversation bodies support HTML; plain text is auto-wrapped in <p> tags
-
Search query uses structured filter objects, not free-text search
-
Conversation IDs are numeric strings
- Reply and Manage Conversation State
When to use: User wants to reply to, close, reopen, or assign conversations
Tool sequence:
-
INTERCOM_GET_CONVERSATION
-
Get current state [Prerequisite]
-
INTERCOM_REPLY_TO_CONVERSATION
-
Add a reply [Optional]
-
INTERCOM_ASSIGN_CONVERSATION
-
Assign to admin/team [Optional]
-
INTERCOM_CLOSE_CONVERSATION
-
Close conversation [Optional]
-
INTERCOM_REOPEN_CONVERSATION
-
Reopen closed conversation [Optional]
Key parameters:
-
conversation_id / id : Conversation ID
-
body : Reply message body (HTML supported)
-
type : Reply type ('admin' or 'user')
-
admin_id : Admin ID for replies from admin, assignment, and close/reopen
-
assignee_id : Admin or team ID for assignment
-
message_type : 'comment' (default) or 'note' (internal)
Pitfalls:
-
admin_id is REQUIRED for admin replies, close, reopen, and assignment operations
-
Always fetch admin IDs first with LIST_ALL_ADMINS or IDENTIFY_AN_ADMIN
-
Duplicate sends can occur on retry; implement idempotency checks
-
Internal notes use message_type: 'note' ; visible only to workspace members
-
Closing requires an admin_id and optional body message
- Manage Contacts
When to use: User wants to search, view, or manage contacts (users and leads)
Tool sequence:
-
INTERCOM_SEARCH_CONTACTS
-
Search contacts with filters [Required]
-
INTERCOM_GET_A_CONTACT
-
Get specific contact [Optional]
-
INTERCOM_SHOW_CONTACT_BY_EXTERNAL_ID
-
Look up by external ID [Optional]
-
INTERCOM_LIST_CONTACTS
-
List all contacts [Optional]
-
INTERCOM_LIST_TAGS_ATTACHED_TO_A_CONTACT
-
Get contact tags [Optional]
-
INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_CONTACT
-
Get contact segments [Optional]
-
INTERCOM_DETACH_A_CONTACT
-
Remove contact from company [Optional]
Key parameters:
-
contact_id : Contact ID for retrieval
-
external_id : External system ID for lookup
-
query : Search filter object with field , operator , value
-
pagination : Object with per_page and starting_after cursor
Pitfalls:
-
SEARCH_CONTACTS uses structured query filters, not free-text; format: {field, operator, value}
-
Supported operators: = , != , > , < , ~ (contains), !~ (not contains), IN , NIN
-
Contact types are 'user' (identified) or 'lead' (anonymous)
-
LIST_CONTACTS returns paginated results; use starting_after cursor for pagination
-
External IDs are case-sensitive
- Manage Admins and Teams
When to use: User wants to list workspace admins or identify specific admins
Tool sequence:
-
INTERCOM_LIST_ALL_ADMINS
-
List all admins and teams [Required]
-
INTERCOM_IDENTIFY_AN_ADMIN
-
Get specific admin details [Optional]
Key parameters:
- admin_id : Admin ID for identification
Pitfalls:
-
LIST_ALL_ADMINS returns both admins and teams
-
Admin IDs are required for conversation replies, assignment, close, and reopen
-
Teams appear in the admins list with type: 'team'
- View Segments and Counts
When to use: User wants to view segments or get aggregate counts
Tool sequence:
-
INTERCOM_LIST_SEGMENTS
-
List all segments [Optional]
-
INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_CONTACT
-
Segments for a contact [Optional]
-
INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_COMPANIES
-
Segments for a company [Optional]
-
INTERCOM_GET_COUNTS
-
Get aggregate counts [Optional]
Key parameters:
-
contact_id : Contact ID for segment lookup
-
company_id : Company ID for segment lookup
-
type : Count type ('conversation', 'company', 'user', 'tag', 'segment')
-
count : Sub-count type
Pitfalls:
-
GET_COUNTS returns approximate counts, not exact numbers
-
Segment membership is computed; changes may not reflect immediately
- Manage Companies
When to use: User wants to list companies or manage company-contact relationships
Tool sequence:
-
INTERCOM_LIST_ALL_COMPANIES
-
List all companies [Required]
-
INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_COMPANIES
-
Get company segments [Optional]
-
INTERCOM_DETACH_A_CONTACT
-
Remove contact from company [Optional]
Key parameters:
-
company_id : Company ID
-
contact_id : Contact ID for detachment
-
page : Page number for pagination
-
per_page : Results per page
Pitfalls:
-
Company-contact relationships are managed through contact endpoints
-
DETACH_A_CONTACT removes the contact-company association, not the contact itself
Common Patterns
Search Query Filters
Single filter:
{ "field": "email", "operator": "=", "value": "user@example.com" }
Multiple filters (AND):
{ "operator": "AND", "value": [ {"field": "role", "operator": "=", "value": "user"}, {"field": "created_at", "operator": ">", "value": 1672531200} ] }
Supported fields for contacts: email, name, role, created_at, updated_at, signed_up_at, last_seen_at, external_id
Supported fields for conversations: created_at, updated_at, source.type, state, open, read
Pagination
-
Most list endpoints use cursor-based pagination
-
Check response for pages.next with starting_after cursor
-
Pass cursor in pagination.starting_after for next page
-
Continue until pages.next is null
Admin ID Resolution
- Call INTERCOM_LIST_ALL_ADMINS to get all admins
- Find the desired admin by name or email
- Use admin.id for replies, assignments, and state changes
Known Pitfalls
Admin ID Requirement:
-
Admin ID is required for: reply (as admin), assign, close, reopen
-
Always resolve admin IDs first with LIST_ALL_ADMINS
HTML Content:
-
Conversation bodies are HTML
-
Plain text is auto-wrapped in paragraph tags
-
Sanitize HTML input to prevent rendering issues
Idempotency:
-
Replies and conversation creation are not idempotent
-
Duplicate sends can occur on retry or timeout
-
Track message IDs to prevent duplicates
Rate Limits:
-
Default: ~1000 requests per minute (varies by plan)
-
429 responses include rate limit headers
-
Implement exponential backoff for retries
Quick Reference
Task Tool Slug Key Params
List conversations INTERCOM_LIST_CONVERSATIONS (pagination)
Search conversations INTERCOM_SEARCH_CONVERSATIONS query
Get conversation INTERCOM_GET_CONVERSATION id
Create conversation INTERCOM_CREATE_CONVERSATION from, body
Reply to conversation INTERCOM_REPLY_TO_CONVERSATION conversation_id, body, admin_id
Assign conversation INTERCOM_ASSIGN_CONVERSATION conversation_id, admin_id, assignee_id
Close conversation INTERCOM_CLOSE_CONVERSATION id, admin_id
Reopen conversation INTERCOM_REOPEN_CONVERSATION id, admin_id
Search contacts INTERCOM_SEARCH_CONTACTS query
Get contact INTERCOM_GET_A_CONTACT contact_id
Contact by external ID INTERCOM_SHOW_CONTACT_BY_EXTERNAL_ID external_id
List contacts INTERCOM_LIST_CONTACTS (pagination)
Contact tags INTERCOM_LIST_TAGS_ATTACHED_TO_A_CONTACT contact_id
Contact segments INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_CONTACT contact_id
Detach contact INTERCOM_DETACH_A_CONTACT contact_id, company_id
List admins INTERCOM_LIST_ALL_ADMINS (none)
Identify admin INTERCOM_IDENTIFY_AN_ADMIN admin_id
List segments INTERCOM_LIST_SEGMENTS (none)
Company segments INTERCOM_LIST_ATTACHED_SEGMENTS_FOR_COMPANIES company_id
Get counts INTERCOM_GET_COUNTS type, count
List companies INTERCOM_LIST_ALL_COMPANIES page, per_page
Powered by Composio