Integrate Intercom MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with Intercom
Create a new contact, or update an existing one if a contact with the same Email already exists — Email is the match key for this upsert (any other props you set only apply to the created/updated record, they do not affect matching). Example: set Email to [email protected], Name to Jane Doe, and Custom Attributes to {"plan": "pro"} to create Jane's contact, or update her name/plan if a contact with that email already exists. Returns the full contact object, including its Intercom id. See the documentation.
Sends an outbound message from an admin to a contact in Intercom (POST /messages). Set Message Type to in_app for an in-app message or email for an email — email messages require Subject and support Template (plain or personal). Use List Admin ID Options to find a valid From ID and Search Contacts to find a valid To ID. Example: set Message Type to email, Subject to Welcome!, Template to personal, From ID to 25, To Type to user, and To ID to 536e564f316c83104c000020 to send a personal welcome email to that contact. See the documentation.
Creates a new inbound conversation in Intercom on behalf of a contact (POST /conversations). The action first fetches the contact's role via GET /contacts/{id} to set the correct message sender type — this counts as an additional API call. Use Search Contacts to find valid contact IDs before calling this action. Example: set User to 63a07ddf05a32042dffac965 and Body to Hi, I need help with my order to open a new conversation from that contact. Returns the new conversation object including id. See the documentation
Search Intercom contacts by a query string (POST /contacts/search). Returns a bounded page of matching contacts, each including id, email, and external_id so you can copy the appropriate value into Reply To Conversation's Intercom User ID, Email, or User ID prop. If pages.next.starting_after is present in the response, call this action again with that cursor in Starting After to retrieve the next page. Pass Fields (e.g. ["id", "email", "external_id"]) to limit each returned contact to only those keys. Example: set Query to acme to find all contacts whose email contains acme. See the documentation.
Fetches a single Intercom conversation by ID and returns the full conversation object, including id, title, state, created_at, conversation_parts (the message thread), and assignee information. Use this to inspect conversation history or verify state before calling Manage A Conversation or Reply To Conversation. Example: set Conversation ID to 123456789 to retrieve that conversation. Pass Fields (e.g. ["id", "state", "assignee", "created_at"]) to limit the returned object to only those keys. See the documentation.
Reply to an existing Intercom conversation as an admin or on behalf of a contact (POST /conversations/{conversation_id}/reply). Use List Admin ID Options to find a valid Admin ID, and Search Contacts to find a contact's Intercom user ID, email, or external user ID. Example: set Conversation ID to 192783634529321, Reply Type to admin, Message Type to comment, Body to Thanks for reaching out!, and Admin ID to 25 to post that comment as an admin reply. See the documentation.
Close, snooze, open, or assign a conversation by its ID. Which of the optional props apply depends on Message Type: close uses Body, snoozed uses Snoozed Until, assignment uses Type together with Assignee ID or Team Assignee ID, and open uses none of them. Example: set Conversation ID to 192783634529321, Message Type to close, and Body to Issue resolved to close that conversation with a closing comment. See the documentation.
Retrieves all teams in your Intercom workspace and returns their IDs and names. Call this action before Manage A Conversation to discover valid team IDs for conversation assignment. Example: returns [{ label: "Support", value: "334" }, ...]. Use 0 to represent Unassigned. See the documentation.
Retrieves all tags in your Intercom workspace and returns their IDs and names. Call this action before Add Tag To Contact to discover valid tag IDs. Example: returns [{ label: "VIP", value: "7522907" }, ...]. See the documentation.
Lists conversations in your Intercom workspace, most recently updated first (GET /conversations). Use this to discover a conversation's ID before calling Reply To Conversation, Manage A Conversation, or Retrieve Conversation — there is no other way to look one up. Returns a bounded page of conversations, each including id, state, created_at, and the latest message part. If pages.next.starting_after is present in the response, call this action again with that cursor in Starting After to retrieve the next page. Pass Fields (e.g. ["id", "state", "created_at"]) to limit each returned conversation to only those keys. Example: leave all props empty to fetch the 20 most recently updated conversations. See the documentation.
Retrieves all admins in your Intercom workspace and returns their IDs and names. Call this action before any action that requires an Admin ID — such as Manage A Conversation, Reply To Conversation, or Send Message To Contact — to discover valid values. Example: returns [{ label: "Jane Doe", value: "25" }, ...]. See the documentation.
Creates a note on a contact's record in Intercom. The note is automatically attributed to the currently authenticated admin — no Admin ID prop is required. Use Search Contacts to find the contact's ID before calling this action. Example: set User to 63a07ddf05a32042dffac965 and Body to Followed up via email on 2024-01-15 to log a note on that contact. Returns the new note object including id, body, and author. See the documentation
Adds a specific tag to a contact in Intercom. Use Search Contacts to find the contact's ID and List Tag ID Options to find valid tag IDs before calling this action. Example: set Contact ID to 63a07ddf05a32042dffac965 and Tag ID to 7522907 to tag that contact. Returns the updated tag object on success. See the documentation.