Intercom
Manage Intercom contacts, companies, conversations, tickets, tags and Help Center articles, and reply to and route conversations. Connects with OAuth.
- rest
https://api.superagnt.com/v1/connections/intercomplus the vendor's own path, with your superagnt_ API key asAuthorization: Bearer.- mcp
- Tools named
connection_intercom_*onhttps://mcp.superagnt.com/mcp, served once the account is connected. - billing
- Intercom bills your own account. Calls cost no superagnt_ data credits.
- rate limit
- 10 requests a second, 600 a minute: the vendor's ceiling as the registry records it, for sizing bursts. Your plan's own limit is on Connections.
The Intercom connection lets an agent run support in your Intercom workspace: manage contacts (users and leads) and companies, search, reply to, assign, snooze and close conversations, open and update tickets, tag records, and write Help Center articles and collections. It also reads teammates, teams, segments, data attributes and ticket types.
01
Setup
- Start the install. In the superagnt app open Integrations, pick Intercom and click Connect with Intercom.
- Approve it in Intercom. In the window Intercom opens, approve access for the Intercom workspace your agents should work in. There are no scopes to pick: the permissions are set on superagnt_'s Intercom app.
- Call Intercom. Intercom moves to Enabled: its REST route answers and its tools appear on your MCP server.
Intercom tokens do not expire. If access is removed on Intercom's side, calls fail until you reconnect.
02
Things to know
- superagnt_ sends
Intercom-Version: 2.11on every call. - Most lists return
{ type, data, pages, total_count }. Contacts and conversations page withper_page(up to 150) andstarting_after, frompages.next.starting_after; companies and articles page withper_pageandpage. - Search on contacts, conversations and tickets takes a nested
query: a{ field, operator, value }filter, or{ operator: "AND", value: [...] }(or"OR") around several. Operators are=,!=,IN,NIN,<,>,~(contains),^(starts with) and$(ends with). Search pages withpagination: { per_page, starting_after }in the body. - A reply as a teammate (
typeadmin) and every call to manage a conversation need anadmin_id:connection_intercom_admins_readactionmereturns the teammate the connection acts as. - By default a superagnt_ agent runs reads and searches without asking and asks before every write, replies included. Deleting, archiving or unarchiving a contact, and deleting a company, tag, article or collection, always ask a person first (Permissions).
03
Examples
Reply to a conversation
curl -X POST "https://api.superagnt.com/v1/connections/intercom/conversations/$CONVERSATION_ID/reply" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message_type":"comment","type":"admin","admin_id":"'"$ADMIN_ID"'","body":"Thanks for reaching out. Taking a look now."}'A comment reaches the contact. Send "message_type":"note" for an internal note only teammates see.
Assign a conversation
curl -X POST "https://api.superagnt.com/v1/connections/intercom/conversations/$CONVERSATION_ID/parts" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message_type":"assignment","admin_id":"'"$ADMIN_ID"'","assignee_id":"'"$ASSIGNEE_ID"'"}'The same call opens, closes or snoozes a conversation (message_type open, close or snoozed with snoozed_until).
Create a contact
curl -X POST "https://api.superagnt.com/v1/connections/intercom/contacts" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"role":"user","email":"jane@example.com","name":"Jane Doe"}'Find a contact by email
curl -X POST "https://api.superagnt.com/v1/connections/intercom/contacts/search" \
-H "Authorization: Bearer $AGNTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"field":"email","operator":"=","value":"jane@example.com"}}'28 tools, one per resource and risk
MCP servers and agents on the grouped surface list Intercom as these tools. Each takes an action, and the ones that work across record types an object. Every operation also keeps its own per-operation name, in the next table, which works on every server. How grouping works: Grouped tools.
| Tool | Risk | Actions |
|---|---|---|
connection_intercom_contacts_readRead Intercom contacts List, get or search contacts (users and leads), or list a contact's notes. Search matches are case-sensitive and emails are stored lowercased, so lowercase an email before searching for it. | read | listgetsearchlist_notes |
connection_intercom_contacts_writeCreate and update Intercom contacts Create, update or unarchive a contact (a user or a lead), add a note to it, or attach it to a company. Custom attributes must exist first (connection_intercom_data_attributes_write). | write | createupdateunarchiveadd_noteattach_company |
connection_intercom_contacts_deleteDelete, archive and merge Intercom contacts Permanently delete a contact, archive one, merge a lead into a user, or detach a contact from a company. Deletes and merges cannot be undone. | destructive | deletearchivemerge_leaddetach_company |
connection_intercom_companies_readRead Intercom companies List or get companies, or list a company's contacts. | read | listgetlist_contacts |
connection_intercom_companies_writeCreate and update Intercom companies Create or update a company keyed by your own company_id. | write | upsert |
connection_intercom_companies_deleteDelete an Intercom company Permanently delete a company by its Intercom id (not your company_id). | destructive | delete |
connection_intercom_conversations_readRead Intercom conversations List, get or search conversations; a conversation comes with its message parts. | read | listgetsearch |
connection_intercom_conversations_sendReply in Intercom conversations Reply in a conversation as a teammate (message_type comment, which the contact receives) or as the contact, or leave an internal note (message_type note) that only teammates see. Admin ids come from connection_intercom_admins_read. | write | reply |
connection_intercom_conversations_writeStart and route Intercom conversations Start a conversation from a contact, assign, open, close or snooze a conversation, add a participant, or run the assignment rules. A body given with manage (on close or assignment) is posted in the conversation, where the contact sees it. Replies and internal notes: connection_intercom_conversations_send. Admin and team ids come from connection_intercom_admins_read and connection_intercom_teams_read. | write | createmanageadd_participantrun_assignment_rules |
connection_intercom_conversations_deleteRemove an Intercom conversation participant Remove a contact from a conversation. | destructive | remove_participant |
connection_intercom_tickets_readRead Intercom tickets Get a ticket, or search tickets. | read | getsearch |
connection_intercom_tickets_writeCreate and update Intercom tickets Create a ticket of a ticket type (connection_intercom_ticket_types_read lists them) for one or more contacts, or update a ticket's state, assignee or attributes. | write | createupdate |
connection_intercom_ticket_types_readList Intercom ticket types List the ticket types a ticket can be created as. | read | list |
connection_intercom_admins_readRead Intercom teammates Get the teammate the connection acts as (me), or list and get teammates (admins). Replies, assignments and notes take their ids. | read | melistget |
connection_intercom_teams_readList Intercom teams List the teams of the workspace; assignments take their ids. | read | list |
connection_intercom_segments_readRead Intercom segments List or get segments of contacts. | read | listget |
connection_intercom_tags_readRead Intercom tags List or get tags; tagging takes their ids. | read | listget |
connection_intercom_tags_writeCreate tags and tag Intercom records Create a tag (or rename one by its id), or apply a tag to a contact, company or conversation. | write | upserttag_contacttag_companytag_conversation |
connection_intercom_tags_deleteDelete and remove Intercom tags Permanently delete a tag, or remove a tag from a contact, company or conversation. | destructive | deleteuntag_contactuntag_companyuntag_conversation |
connection_intercom_data_attributes_readList Intercom data attributes List the data attributes of contacts, companies or conversations, optionally of one model. | read | list |
connection_intercom_data_attributes_writeDefine Intercom data attributes Create a custom data attribute on contacts, companies or conversations, or update its description, options or archived flag. | write | createupdate |
connection_intercom_articles_readRead Intercom Help Center articles List or get Help Center articles, or search published articles by phrase (drafts are not searchable). | read | listgetsearch |
connection_intercom_articles_writeWrite Intercom Help Center articles Create or update a Help Center article (draft or published, placed in a collection). A new article needs a title and a real teammate's admin id as author_id, and an Intercom plan with Articles. | write | createupdate |
connection_intercom_articles_deleteDelete an Intercom Help Center article Permanently delete an article. | destructive | delete |
connection_intercom_collections_readRead Intercom Help Center collections List or get Help Center collections. | read | listget |
connection_intercom_collections_writeWrite Intercom Help Center collections Create or update a Help Center collection; a new collection needs a name. | write | createupdate |
connection_intercom_collections_deleteDelete an Intercom Help Center collection Permanently delete a collection. | destructive | delete |
connection_intercom_help_centers_readRead Intercom help centers List or get the help centers of the workspace. | read | listget |
All 64 operations
Each operation is a REST path under https://api.superagnt.com/v1/connections/intercom and an MCP tool. The per-operation tool name is the one permissions, approvals and usage records use.
| Operation | MCP tool |
|---|---|
GET /contactsList contacts | connection_intercom_list_contactsgrouped: connection_intercom_contacts_read, action list |
POST /contactsCreate a contact | connection_intercom_create_contactgrouped: connection_intercom_contacts_write, action create |
GET /contacts/{id}Get a contact | connection_intercom_get_contactgrouped: connection_intercom_contacts_read, action get |
PUT /contacts/{id}Update a contact | connection_intercom_update_contactgrouped: connection_intercom_contacts_write, action update |
DELETE /contacts/{id}Delete a contact | connection_intercom_delete_contactgrouped: connection_intercom_contacts_delete, action delete |
POST /contacts/searchSearch contacts | connection_intercom_search_contactsgrouped: connection_intercom_contacts_read, action search |
POST /contacts/mergeMerge a lead into a user | connection_intercom_merge_contactgrouped: connection_intercom_contacts_delete, action merge_lead |
POST /contacts/{id}/archiveArchive a contact | connection_intercom_archive_contactgrouped: connection_intercom_contacts_delete, action archive |
POST /contacts/{id}/unarchiveUnarchive a contact | connection_intercom_unarchive_contactgrouped: connection_intercom_contacts_write, action unarchive |
GET /contacts/{id}/notesList a contact's notes | connection_intercom_list_contact_notesgrouped: connection_intercom_contacts_read, action list_notes |
POST /contacts/{id}/notesCreate a note on a contact | connection_intercom_create_contact_notegrouped: connection_intercom_contacts_write, action add_note |
GET /companiesList companies | connection_intercom_list_companiesgrouped: connection_intercom_companies_read, action list |
POST /companiesCreate or update a company | connection_intercom_upsert_companygrouped: connection_intercom_companies_write, action upsert |
GET /companies/{id}Get a company | connection_intercom_get_companygrouped: connection_intercom_companies_read, action get |
DELETE /companies/{id}Delete a company | connection_intercom_delete_companygrouped: connection_intercom_companies_delete, action delete |
GET /companies/{id}/contactsList a company's contacts | connection_intercom_list_company_contactsgrouped: connection_intercom_companies_read, action list_contacts |
GET /conversationsList conversations | connection_intercom_list_conversationsgrouped: connection_intercom_conversations_read, action list |
POST /conversationsCreate a conversation | connection_intercom_create_conversationgrouped: connection_intercom_conversations_write, action create |
GET /conversations/{id}Get a conversation | connection_intercom_get_conversationgrouped: connection_intercom_conversations_read, action get |
POST /conversations/{id}/replyReply to a conversation | connection_intercom_reply_conversationgrouped: connection_intercom_conversations_send, action reply |
POST /conversations/{id}/partsManage a conversation | connection_intercom_manage_conversationgrouped: connection_intercom_conversations_write, action manage |
POST /conversations/searchSearch conversations | connection_intercom_search_conversationsgrouped: connection_intercom_conversations_read, action search |
POST /conversations/{id}/customersAttach a contact to a conversation | connection_intercom_attach_contact_convogrouped: connection_intercom_conversations_write, action add_participant |
DELETE /conversations/{id}/customers/{contact_id}Detach a contact from a conversation | connection_intercom_detach_contact_convogrouped: connection_intercom_conversations_delete, action remove_participant |
POST /conversations/{id}/run_assignment_rulesRun assignment rules on a conversation | connection_intercom_run_assignment_rulesgrouped: connection_intercom_conversations_write, action run_assignment_rules |
POST /ticketsCreate a ticket | connection_intercom_create_ticketgrouped: connection_intercom_tickets_write, action create |
GET /tickets/{id}Get a ticket | connection_intercom_get_ticketgrouped: connection_intercom_tickets_read, action get |
PUT /tickets/{id}Update a ticket | connection_intercom_update_ticketgrouped: connection_intercom_tickets_write, action update |
POST /tickets/searchSearch tickets | connection_intercom_search_ticketsgrouped: connection_intercom_tickets_read, action search |
GET /tagsList tags | connection_intercom_list_tagsgrouped: connection_intercom_tags_read, action list |
POST /tagsCreate or update a tag | connection_intercom_upsert_taggrouped: connection_intercom_tags_write, action upsert |
GET /tags/{id}Get a tag | connection_intercom_get_taggrouped: connection_intercom_tags_read, action get |
DELETE /tags/{id}Delete a tag | connection_intercom_delete_taggrouped: connection_intercom_tags_delete, action delete |
GET /adminsList admins | connection_intercom_list_adminsgrouped: connection_intercom_admins_read, action list |
GET /admins/{id}Get an admin | connection_intercom_get_admingrouped: connection_intercom_admins_read, action get |
GET /meGet the current admin | connection_intercom_get_current_admingrouped: connection_intercom_admins_read, action me |
GET /data_attributesList data attributes | connection_intercom_list_data_attributesgrouped: connection_intercom_data_attributes_read, action list |
POST /data_attributesCreate a data attribute | connection_intercom_create_data_attributegrouped: connection_intercom_data_attributes_write, action create |
PUT /data_attributes/{id}Update a data attribute | connection_intercom_update_data_attributegrouped: connection_intercom_data_attributes_write, action update |
GET /segmentsList segments | connection_intercom_list_segmentsgrouped: connection_intercom_segments_read, action list |
GET /segments/{id}Get a segment | connection_intercom_get_segmentgrouped: connection_intercom_segments_read, action get |
GET /articlesList articles | connection_intercom_list_articlesgrouped: connection_intercom_articles_read, action list |
POST /articlesCreate an article | connection_intercom_create_articlegrouped: connection_intercom_articles_write, action create |
GET /articles/{id}Get an article | connection_intercom_get_articlegrouped: connection_intercom_articles_read, action get |
PUT /articles/{id}Update an article | connection_intercom_update_articlegrouped: connection_intercom_articles_write, action update |
DELETE /articles/{id}Delete an article | connection_intercom_delete_articlegrouped: connection_intercom_articles_delete, action delete |
GET /articles/searchSearch articles | connection_intercom_search_articlesgrouped: connection_intercom_articles_read, action search |
POST /contacts/{contact_id}/companiesAttach a contact to a company | connection_intercom_attach_contact_companygrouped: connection_intercom_contacts_write, action attach_company |
DELETE /contacts/{contact_id}/companies/{company_id}Detach a contact from a company | connection_intercom_detach_contact_companygrouped: connection_intercom_contacts_delete, action detach_company |
GET /help_center/collectionsList collections | connection_intercom_list_collectionsgrouped: connection_intercom_collections_read, action list |
POST /help_center/collectionsCreate a collection | connection_intercom_create_collectiongrouped: connection_intercom_collections_write, action create |
GET /help_center/collections/{id}Get a collection | connection_intercom_get_collectiongrouped: connection_intercom_collections_read, action get |
PUT /help_center/collections/{id}Update a collection | connection_intercom_update_collectiongrouped: connection_intercom_collections_write, action update |
DELETE /help_center/collections/{id}Delete a collection | connection_intercom_delete_collectiongrouped: connection_intercom_collections_delete, action delete |
GET /help_center/help_centersList help centers | connection_intercom_list_help_centersgrouped: connection_intercom_help_centers_read, action list |
GET /help_center/help_centers/{id}Get a help center | connection_intercom_get_help_centergrouped: connection_intercom_help_centers_read, action get |
POST /contacts/{contact_id}/tagsTag a contact | connection_intercom_tag_contactgrouped: connection_intercom_tags_write, action tag_contact |
POST /companies/{company_id}/tagsTag a company | connection_intercom_tag_companygrouped: connection_intercom_tags_write, action tag_company |
POST /conversations/{conversation_id}/tagsTag a conversation | connection_intercom_tag_conversationgrouped: connection_intercom_tags_write, action tag_conversation |
GET /ticket_typesList ticket types | connection_intercom_list_ticket_typesgrouped: connection_intercom_ticket_types_read, action list |
GET /teamsList teams | connection_intercom_list_teamsgrouped: connection_intercom_teams_read, action list |
DELETE /contacts/{contact_id}/tags/{tag_id}Untag a contact | connection_intercom_untag_contactgrouped: connection_intercom_tags_delete, action untag_contact |
DELETE /companies/{company_id}/tags/{tag_id}Untag a company | connection_intercom_untag_companygrouped: connection_intercom_tags_delete, action untag_company |
DELETE /conversations/{conversation_id}/tags/{tag_id}Untag a conversation | connection_intercom_untag_conversationgrouped: connection_intercom_tags_delete, action untag_conversation |