atmon docs

REFERENCE/TOOLKITS/INTERCOM.MD

Intercom

Customer messaging. Handle chat conversations and tickets, look up and edit contacts and companies, and publish help articles.

PropertyValue
Slugintercom
Definition version0.1.0
Base URLhttps://api.intercom.io
Auth schemesoauth2, api_key
Action tools40
By class17 read, 19 write, 4 destructive
Triggers0
Provider rate limitnot declared, so outbound calls are unpaced

Measured routing accuracy

79 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 40 cases written by hand and 39 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-144/7955.7%
top-872/7991.1%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

oauth2

PropertyValue
Authorization URLhttps://app.intercom.com/oauth
Token URLhttps://api.intercom.io/auth/eagle/token
Default scopesdefault
Refresh tokensyes, the refresh daemon renews ahead of expiry

api_key

PropertyValue
Placementheader
NameAuthorization
Rendered asBearer {key}

Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.

Tools

40 action tools. The catalog-wide slug is intercom.<tool>, which is what search_tools returns and call_tool takes.

intercom.create_contact

Create a new Intercom contact: a user or lead who messages or uses your product. Use when the user wants to add a customer to Intercom's directory, not to a separate CRM's sales pipeline. Needs an email; phone, name, and role (user or lead) are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /contacts.

Arguments:

ArgumentTypeRequiredNotes
emailstringyesContact's email address, e.g. "jane@example.com".
external_idstringnoYour own system's unique id for this person.
namestringnoContact's full name.
phonestringnoContact's phone number, e.g. "+15551234567".
rolestringno"user" for a signed-up customer or "lead" for someone who has not signed up. Defaults to "lead".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
created_atinteger
emailstring
external_idstring
idstring
namestring
phonestring
rolestring
updated_atinteger

Also retrieved by: "add a new customer to intercom", "register this person in our customer directory", "put this lead into intercom", "start tracking this user in intercom".

intercom.get_contact

Get a single Intercom contact's full record by its contact id: email, phone, name, role, and timestamps. Use when the user names a specific contact; for looking someone up by email use search_contacts instead.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
created_atinteger
emailstring
external_idstring
idstring
last_seen_atinteger
namestring
phonestring
rolestring
updated_atinteger

Also retrieved by: "pull up this customer's intercom profile", "what does intercom have on file for this person", "show me this user's details in intercom", "check a customer's record in intercom".

intercom.update_contact

Update fields on an existing Intercom contact: email, phone, name, or role. Use when the user wants to edit or correct a customer's details in Intercom, not create a new contact.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id.
emailstringnoNew email address.
namestringnoNew full name.
phonestringnoNew phone number.
rolestringno"user" or "lead".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
emailstring
idstring
namestring
phonestring
rolestring
updated_atinteger

Also retrieved by: "fix this customer's phone number in intercom", "change someone's role from lead to user", "edit a customer's details in intercom", "correct info on a customer record".

intercom.delete_contact

Permanently delete a contact from Intercom, removing their conversation history and custom attributes. Use when the user wants to wipe, purge, or erase a customer record entirely, not merely unsubscribe or archive them. Cannot be undone.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /contacts/{{params.contact_id}}.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean
idstring

Also retrieved by: "wipe this customer from intercom for good", "purge someone's intercom record entirely", "erase a customer's history permanently", "get rid of this person's data in intercom".

intercom.search_contacts

Find Intercom contacts by an exact match on one field: email, phone, name, or external id. Use when the user describes a customer rather than naming a known contact id, for example finding someone by their email address.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /contacts/search.

Arguments:

ArgumentTypeRequiredNotes
fieldstringyesField to match: "email", "phone", "name", "external_id", or "role".
valuestringyesValue to match exactly against the chosen field.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].emailstring
data[].idstring
data[].namestring
data[].phonestring
data[].rolestring
total_countinteger

Also retrieved by: "find a customer by their email in intercom", "look up who this phone number belongs to", "hunt down someone's intercom profile", "locate a user by their external id".

intercom.list_contacts

List Intercom contacts a page at a time, newest first. Use when the user wants to browse or export the whole customer directory rather than find one specific person.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /contacts.

Arguments:

ArgumentTypeRequiredNotes
per_pageintegernoPage size, default 50.
starting_afterstringnoPagination cursor from a previous response's pages.next.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].emailstring
data[].idstring
data[].namestring
data[].rolestring
pagesobject
pages.nextobject
pages.next.starting_afterstring
total_countinteger

Also retrieved by: "show me every customer in intercom", "browse the whole customer directory", "export all our intercom contacts", "see everyone we've ever messaged".

intercom.merge_contacts

Merge a duplicate Intercom contact into a primary one, folding the duplicate's conversation history into the survivor and deleting the duplicate. Use when the user says two contacts are the same person. Irreversible.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /contacts/merge.

Arguments:

ArgumentTypeRequiredNotes
duplicate_contact_idstringyesContact id to merge away and delete.
primary_contact_idstringyesContact id to keep.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
emailstring
idstring
namestring

Also retrieved by: "combine two duplicate customers into one", "fold this duplicate profile into the main one", "treat these two intercom entries as the same person", "collapse two customer records together".

intercom.create_or_update_company

Create a new company in Intercom, or update it if a company with the same company id already exists. Use to record the organization a contact belongs to, alongside its plan, size, or website, not to add an individual person (use create_contact for that).

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /companies.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesYour own system's unique id for this company.
industrystringnoCompany's industry.
namestringyesCompany name.
sizeintegernoNumber of employees.
websitestringnoCompany website URL.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
company_idstring
created_atinteger
idstring
industrystring
namestring
sizeinteger
updated_atinteger
websitestring

Also retrieved by: "add the customer's organization to intercom", "record what company this user works for", "set up an account record for this business", "log this organization in intercom".

intercom.get_company

Get a single Intercom company's record by its company id: name, website, industry, size, and timestamps. Use when the user names a specific company rather than asking to browse all of them.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /companies/{{params.company_id}}.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesIntercom company id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
company_idstring
created_atinteger
idstring
industrystring
namestring
sizeinteger
updated_atinteger
websitestring

Also retrieved by: "pull up this organization's intercom record", "what plan is this account on", "show me a company's details in intercom", "check an organization's profile".

intercom.list_companies

List every company in Intercom's directory a page at a time. Use when the user wants to browse or export all customer organizations rather than look up one company by name or id.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /companies.

Arguments:

ArgumentTypeRequiredNotes
per_pageintegernoPage size, default 50.
starting_afterstringnoPagination cursor from a previous response's pages.next.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].company_idstring
data[].idstring
data[].namestring
data[].websitestring
pagesobject
pages.nextobject
pages.next.starting_afterstring
total_countinteger

Also retrieved by: "show me every account in intercom", "browse all the organizations we track", "export the company directory", "see every business linked to our customers".

intercom.delete_company

Permanently delete a company from Intercom. Its contacts are not deleted, only detached from it. Use when the user wants to remove an organization from the directory entirely. Cannot be undone.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /companies/{{params.company_id}}.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesIntercom company id to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean
idstring

Also retrieved by: "remove this organization from intercom entirely", "wipe out a company record for good", "purge an account from our directory".

intercom.attach_contact_to_company

Attach an existing Intercom contact to a company, linking the person to the organization they belong to. Use when the user wants to associate a customer with a company record, not to create either one.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /contacts/{{params.contact_id}}/companies.

Arguments:

ArgumentTypeRequiredNotes
company_idstringyesIntercom company id to attach.
contact_idstringyesIntercom contact id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
company_idstring
idstring
namestring

Also retrieved by: "link this customer to their employer", "associate a user with their organization", "connect a contact to their company account".

intercom.list_conversations

List Intercom conversations from the support inbox a page at a time, newest first. Use to browse recent chats rather than look up one conversation by id or search for one by state.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /conversations.

Arguments:

ArgumentTypeRequiredNotes
per_pageintegernoPage size, default 20.
starting_afterstringnoPagination cursor from a previous response's pages.next.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
conversationsarray of object
conversations[].created_atinteger
conversations[].idstring
conversations[].openboolean
conversations[].statestring
conversations[].updated_atinteger
pagesobject
pages.nextobject
pages.next.starting_afterstring
total_countinteger

Also retrieved by: "show me recent chats in the inbox", "what's come into the support inbox lately", "browse the latest customer conversations", "pull up the chat queue".

intercom.get_conversation

Get a single Intercom conversation by its id: its state, priority, assignee, tags, and the full back-and-forth of messages. Use when the user names a specific chat or support thread.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /conversations/{{params.conversation_id}}.

Arguments:

ArgumentTypeRequiredNotes
conversation_idstringyesIntercom conversation id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
admin_assignee_idstring
contactsobject
contacts.dataarray of object
contacts.data[].idstring
created_atinteger
idstring
openboolean
prioritystring
sourceobject
source.bodystring
source.typestring
statestring
tagsobject
tags.dataarray of object
tags.data[].idstring
tags.data[].namestring
team_assignee_idstring
updated_atinteger

Also retrieved by: "open up this support thread", "show me the full back and forth on this chat", "pull up a specific conversation by id".

intercom.search_conversations

Find Intercom conversations by an exact match on one field, such as state (open, closed, snoozed) or the assigned admin. Use when the user wants conversations matching a condition rather than one specific conversation by id.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /conversations/search.

Arguments:

ArgumentTypeRequiredNotes
fieldstringyesField to match, e.g. "state", "admin_assignee_id", "team_assignee_id", or "priority".
valuestringyesValue to match exactly against the chosen field.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
conversationsarray of object
conversations[].idstring
conversations[].openboolean
conversations[].prioritystring
conversations[].statestring
total_countinteger

Also retrieved by: "find every open conversation", "show me chats assigned to a particular teammate", "filter conversations by their status", "which threads are still snoozed".

intercom.create_conversation

Start a new Intercom conversation from a contact, posting their first message into the support inbox. Use when the user wants to open a new chat or support thread on behalf of a customer, not reply inside an existing one.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations.

Arguments:

ArgumentTypeRequiredNotes
bodystringyesThe opening message text.
contact_idstringyesIntercom contact id the conversation starts from.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
created_atinteger
idstring
openboolean
statestring

Also retrieved by: "start a new chat with this customer", "open a support thread on this user's behalf", "kick off a conversation from a contact".

intercom.reply_to_conversation

Send an admin's reply into an existing Intercom conversation. Use when the user wants to answer, respond to, or follow up in a chat or support thread that is already open, not start a new one.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations/{{params.conversation_id}}/reply.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringyesIntercom admin id the reply is sent as.
bodystringyesReply message text.
conversation_idstringyesIntercom conversation id to reply in.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
statestring
updated_atinteger

Also retrieved by: "answer this customer in the chat", "send a response in this support thread", "follow up on an open conversation", "write back to the customer".

intercom.close_conversation

Close an open Intercom conversation, marking the support thread resolved. Use when the user wants to mark a chat done or resolved, not delete it; a closed conversation can be reopened later.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations/{{params.conversation_id}}/parts.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringyesIntercom admin id closing the conversation.
conversation_idstringyesIntercom conversation id to close.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
openboolean
statestring

Also retrieved by: "mark this chat resolved", "wrap up a support conversation", "close out this customer's thread".

intercom.snooze_conversation

Snooze an Intercom conversation until a later time, hiding it from the open inbox until then. Use when the user wants to come back to a chat later rather than close or reply to it now.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations/{{params.conversation_id}}/parts.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringyesIntercom admin id snoozing the conversation.
conversation_idstringyesIntercom conversation id to snooze.
snoozed_untilintegeryesUnix timestamp (seconds) to reopen the conversation.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
snoozed_untilinteger
statestring

Also retrieved by: "come back to this chat later", "put this conversation on hold for a while", "remind me about this thread tomorrow".

intercom.assign_conversation

Assign an Intercom conversation to an admin or a team. Use when the user wants to hand a chat off to a specific teammate or team, not reply to it themselves.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations/{{params.conversation_id}}/parts.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringyesIntercom admin id performing the assignment.
assignee_idstringyesAdmin id or team id to assign the conversation to.
conversation_idstringyesIntercom conversation id to assign.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
admin_assignee_idstring
idstring
team_assignee_idstring

Also retrieved by: "hand this chat off to a teammate", "route this conversation to the right team", "give this thread to someone else to handle".

intercom.add_conversation_tag

Apply an existing tag to an Intercom conversation, for filtering or reporting. Use when the user wants to label or categorize a chat, not a contact or a company (use tag_contact for a customer record).

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /conversations/{{params.conversation_id}}/tags.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringnoIntercom admin id applying the tag.
conversation_idstringyesIntercom conversation id.
tag_idstringyesIntercom tag id to apply.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring

Also retrieved by: "label this chat for reporting", "flag this conversation with a category", "mark this thread as a bug report".

intercom.create_ticket

Open a new Intercom ticket for a customer issue: a structured help-desk record with a title, description, and status, separate from a free-form chat conversation. Use when the user wants to file or log a support ticket, not start a chat.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /tickets.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id the ticket is opened for.
descriptionstringyesTicket description.
ticket_type_idstringyesIntercom ticket type id, e.g. the default customer ticket type.
titlestringyesTicket title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
created_atinteger
idstring
ticket_idstring
ticket_statestring

Also retrieved by: "file a support ticket for this issue", "open a help desk case for the customer", "log a formal ticket, not just a chat".

intercom.get_ticket

Get a single Intercom ticket by its id: its state, type, and assignee. Use when the user names a specific support ticket rather than asking to search or list tickets.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /tickets/{{params.ticket_id}}.

Arguments:

ArgumentTypeRequiredNotes
ticket_idstringyesIntercom ticket id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
admin_assignee_idstring
created_atinteger
idstring
openboolean
team_assignee_idstring
ticket_idstring
ticket_statestring
ticket_type_idstring
updated_atinteger

Also retrieved by: "check the status of this support ticket", "pull up a specific help desk case", "what's the state of this ticket".

intercom.update_ticket

Update an Intercom ticket's state, title, or description. Use when the user wants to change a support ticket's status (for example to "in progress" or "resolved") or edit its details.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /tickets/{{params.ticket_id}}.

Arguments:

ArgumentTypeRequiredNotes
descriptionstringnoNew ticket description.
ticket_idstringyesIntercom ticket id to update.
ticket_statestringnoNew state, e.g. "in_progress" or "resolved".
titlestringnoNew ticket title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
ticket_statestring
updated_atinteger

Also retrieved by: "mark this ticket resolved", "change the status on a support case", "edit the title on a help desk ticket".

intercom.search_tickets

Find Intercom tickets by an exact match on one field, such as state or ticket type. Use when the user wants tickets matching a condition, for example all open tickets, rather than one specific ticket by id.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /tickets/search.

Arguments:

ArgumentTypeRequiredNotes
fieldstringyesField to match, e.g. "ticket_state", "ticket_type_id", or "admin_assignee_id".
valuestringyesValue to match exactly against the chosen field.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
ticketsarray of object
tickets[].idstring
tickets[].ticket_statestring
tickets[].ticket_type_idstring
total_countinteger

Also retrieved by: "show me every open ticket", "find tickets assigned to a given agent", "filter the help desk queue by status".

intercom.reply_to_ticket

Send an admin's reply on an Intercom ticket. Use when the user wants to respond to or follow up on a support ticket, distinct from replying inside a chat conversation.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /tickets/{{params.ticket_id}}/reply.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringyesIntercom admin id the reply is sent as.
bodystringyesReply message text.
ticket_idstringyesIntercom ticket id to reply on.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
ticket_statestring
updated_atinteger

Also retrieved by: "respond to this support ticket", "send an update on a help desk case", "write back on an open ticket".

intercom.create_article

Publish a new help center article in Intercom, with a title, body, and author. Use when the user wants to write or add a knowledge-base or FAQ article, not send a message to a customer.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /articles.

Arguments:

ArgumentTypeRequiredNotes
author_idstringyesIntercom admin id credited as the article's author.
bodystringyesArticle body, as HTML.
statestringno"published" or "draft". Defaults to "draft".
titlestringyesArticle title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
created_atinteger
idstring
statestring
titlestring
urlstring

Also retrieved by: "write a new help center article", "publish a knowledge base page", "add an faq entry to the help center".

intercom.get_article

Get a single Intercom help center article by its id: title, body, state, and public url. Use when the user names a specific article rather than asking to browse the whole help center.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /articles/{{params.article_id}}.

Arguments:

ArgumentTypeRequiredNotes
article_idstringyesIntercom article id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
author_idstring
bodystring
created_atinteger
idstring
statestring
titlestring
updated_atinteger
urlstring

Also retrieved by: "pull up this help center page", "show me a specific knowledge base article", "what does our faq say about this".

intercom.update_article

Update an existing Intercom help center article's title, body, or publish state. Use when the user wants to edit or revise a knowledge-base article, not write a new one.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /articles/{{params.article_id}}.

Arguments:

ArgumentTypeRequiredNotes
article_idstringyesIntercom article id to update.
bodystringnoNew body, as HTML.
statestringno"published" or "draft".
titlestringnoNew title.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
statestring
titlestring
updated_atinteger

Also retrieved by: "revise this help center page", "fix a typo in the knowledge base", "edit an existing faq article".

intercom.delete_article

Permanently delete a help center article from Intercom, taking it off the public help center. Use when the user wants to remove an article entirely, not merely unpublish or draft it. Cannot be undone.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /articles/{{params.article_id}}.

Arguments:

ArgumentTypeRequiredNotes
article_idstringyesIntercom article id to delete.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
deletedboolean
idstring

Also retrieved by: "take this article off the help center", "remove a knowledge base page for good", "delete an faq entry permanently".

intercom.list_articles

List every article in Intercom's help center a page at a time. Use when the user wants to browse or export the whole knowledge base rather than look up one article by title or id.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /articles.

Arguments:

ArgumentTypeRequiredNotes
per_pageintegernoPage size, default 50.
starting_afterstringnoPagination cursor from a previous response's pages.next.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].idstring
data[].statestring
data[].titlestring
data[].urlstring
pagesobject
pages.nextobject
pages.next.starting_afterstring
total_countinteger

Also retrieved by: "show me every help center article", "browse the whole knowledge base", "export our published faqs".

intercom.create_tag

Create a new tag in the Intercom workspace, for labeling conversations, contacts, or companies. Use when the user wants a new tag to exist, not apply an existing one (use add_conversation_tag or tag_contact for that).

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /tags.

Arguments:

ArgumentTypeRequiredNotes
namestringyesTag name.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring

Also retrieved by: "set up a new label for the workspace", "define a new tag we can apply later", "add a category option to intercom".

intercom.list_tags

List every tag defined in the Intercom workspace. Use when the user wants to see what tags exist or pick one to apply, not to tag a specific conversation, contact, or company.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /tags.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].idstring
data[].namestring

Also retrieved by: "what tags exist in our workspace", "show me every label we can apply", "browse the available categories".

intercom.tag_contact

Apply an existing tag to an Intercom contact, for segmenting or filtering the customer directory. Use when the user wants to label a customer record, not a conversation (use add_conversation_tag for that).

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /contacts/{{params.contact_id}}/tags.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id.
tag_idstringyesIntercom tag id to apply.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
idstring
namestring

Also retrieved by: "label this customer's profile", "flag a contact with a category", "mark this user as vip".

intercom.create_contact_note

Add an internal note to an Intercom contact, visible only to your team, not the customer. Use when the user wants to jot down context about a customer, not send them a message.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /contacts/{{params.contact_id}}/notes.

Arguments:

ArgumentTypeRequiredNotes
admin_idstringnoIntercom admin id credited as the note's author.
bodystringyesNote text.
contact_idstringyesIntercom contact id to note.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
bodystring
created_atinteger
idstring

Also retrieved by: "jot down a note about this customer", "leave an internal comment on their profile", "log some context about this user for the team".

intercom.list_contact_notes

List the internal notes your team has written on an Intercom contact. Use when the user wants the history of notes about a customer, not the conversation history with them.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /contacts/{{params.contact_id}}/notes.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
dataarray of object
data[].bodystring
data[].created_atinteger
data[].idstring

Also retrieved by: "show me the notes we've written about this customer", "pull up the internal history on this person", "what has the team said about this user".

intercom.list_admins

List the teammates (admins) in the Intercom workspace, for picking one to assign a conversation or ticket to. Use when the user asks who is on the support team, not who is a customer.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /admins.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
adminsarray of object
admins[].away_mode_enabledboolean
admins[].emailstring
admins[].idstring
admins[].namestring

Also retrieved by: "who's on the support team", "show me every teammate in the workspace", "list the agents who can be assigned chats".

intercom.list_teams

List the teams in the Intercom workspace, for picking one to assign a conversation or ticket to. Use when the user asks about a support team as a group rather than an individual teammate.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /teams.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
teamsarray of object
teams[].admin_idsarray of string
teams[].idstring
teams[].namestring

Also retrieved by: "what teams exist in our workspace", "show me the support groups we can route to", "list every team available for assignment".

intercom.list_segments

List the customer segments Intercom has computed, such as "active" or "churned" groups of contacts. Use when the user asks about a predefined audience segment, not a single contact search.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /segments.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
segmentsarray of object
segments[].idstring
segments[].namestring
segments[].person_typestring

Also retrieved by: "what customer segments do we have", "show me the audience groups intercom computed", "list the predefined customer cohorts".

intercom.track_event

Record a custom data event against an Intercom contact, such as "completed onboarding" or "upgraded plan", for behavioral targeting and reporting. Use when the user wants to log a customer action, not send them a message.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /events.

Arguments:

ArgumentTypeRequiredNotes
contact_idstringyesIntercom contact id the event happened to.
created_atintegernoUnix timestamp (seconds) the event occurred. Defaults to now.
event_namestringyesEvent name, e.g. "invited_teammate".

Also retrieved by: "log that this customer did something", "record a behavioral event for this user", "track that someone completed onboarding".