Skip to content

Connect Intercom to Claude: Manage Articles and Help Centers

A complete engineering guide to connecting Intercom to Claude via MCP. Learn how to generate a managed server, handle Intercom's search DSL, and automate support triage.

Uday Gajavalli Uday Gajavalli · · 10 min read
Connect Intercom to Claude: Manage Articles and Help Centers

If you need to connect Intercom to Claude to automate customer support triage, update Help Center articles, or manage support tickets, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's tool calls and Intercom's REST APIs. You can either build, host, and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL. If your team uses ChatGPT, check out our guide on connecting Intercom to ChatGPT or explore our broader architectural overview on connecting Intercom to AI Agents.

Giving a Large Language Model (LLM) read and write access to a sprawling customer support platform like Intercom is a serious engineering challenge. You must handle OAuth 2.0 token lifecycles, map massive JSON schemas to MCP tool definitions, and deal with Intercom's specific pagination and search behaviors. Every time Intercom updates an endpoint or deprecates a field, you have to update your custom server code, redeploy, and test the integration.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Intercom, connect it natively to Claude, and execute complex support workflows using natural language.

The Engineering Reality of the Intercom API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover and invoke tools, the reality of implementing it against vendor-specific APIs is painful. You are not just integrating a generic database - you are integrating Intercom's highly specific data models.

If you decide to build a custom MCP server for Intercom, you own the entire API lifecycle. Here are the specific challenges you will face:

The Intercom Search DSL Intercom does not allow simple query parameter searches for most of its core resources. If you want to find a conversation or a contact, you cannot just send a GET request with ?email=test@example.com. Instead, you must issue a POST request to their search endpoints using a complex, nested JSON domain-specific language (DSL). This DSL requires defining operators, fields, and values, and limits you to a maximum of 2 nested filters and 15 filters per group. LLMs frequently hallucinate or malform this syntax if asked to construct it from scratch. A managed MCP server provides a standardized JSON schema that guides the LLM into formatting these nested queries correctly every single time.

Fragmented Pagination Models Intercom uses different pagination strategies depending on the endpoint and the volume of data. Standard list endpoints use cursor-based pagination. However, for large data extraction, Intercom provides a specific Scroll API that returns a scroll_param. This parameter expires after exactly one minute of inactivity. If you expose these raw parameters to Claude, the model will struggle with the expiration timeouts and token formats. Truto normalizes pagination across all Intercom endpoints into a standard limit and next_cursor schema, explicitly instructing the LLM to pass cursor values back unchanged.

Strict Rate Limits and Error Handling Intercom enforces strict rate limits to protect its infrastructure. A standard workspace might be limited to 1,000 requests per minute, but certain expensive operations have lower thresholds. If an LLM gets stuck in a loop summarizing thousands of tickets, it will hit a 429 Too Many Requests error.

It is critical to note how Truto handles this: Truto does not retry, throttle, or apply backoff on rate limit errors. If Intercom returns an HTTP 429, Truto passes that error directly back to the caller. However, Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller - whether that is your custom agent orchestrator or the LLM framework - is responsible for reading these headers and implementing appropriate retry and exponential backoff logic.

Instead of building all this boilerplate from scratch, Truto dynamically derives tool schemas directly from Intercom's API documentation and exposes them over a unified JSON-RPC 2.0 endpoint.

How to Generate an Intercom MCP Server

Truto creates MCP servers dynamically. They are scoped to a single integrated account (a connected instance of Intercom for a specific tenant) and authenticated via a secure, hashed token in the URL.

You can generate the MCP server URL in two ways: via the Truto dashboard, or programmatically via the API.

Method 1: Via the Truto UI

For internal workflows, one-off tasks, or testing, the dashboard is the fastest route.

  1. Navigate to the Integrated Accounts page in your Truto dashboard.
  2. Select the connected Intercom account you want to use.
  3. Click the MCP Servers tab.
  4. Click Create MCP Server.
  5. Configure the server (e.g., assign a name, set method filters to "read" only, or restrict access using tags).
  6. Copy the generated MCP server URL (e.g., https://api.truto.one/mcp/a1b2c3d4e5f6...).

Method 2: Via the Truto API

For production use cases where you are provisioning AI agents for your end-users, you should generate MCP servers programmatically.

Make a POST request to /integrated-account/:id/mcp with your desired configuration. Truto will validate the requested filters, generate a secure token, store it in its distributed KV storage, and return the ready-to-use URL.

const response = await fetch('https://api.truto.one/integrated-account/YOUR_ACCOUNT_ID/mcp', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer YOUR_TRUTO_API_KEY`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: "Intercom Helpdesk Assistant",
    config: {
      methods: ["read", "write"], // Optional: restrict to specific operations
      tags: ["support", "knowledge_base"] // Optional: restrict to specific tool groups
    },
    // Optional: Auto-expire the server after 24 hours
    expires_at: new Date(Date.now() + 86400000).toISOString() 
  })
});
 
const data = await response.json();
console.log(data.url); // The secure MCP endpoint to pass to Claude

This generated URL is fully self-contained. It encodes the account context and the authorized toolset. No further OAuth configuration is required on the client side.

Connecting the MCP Server to Claude

Once you have your Truto MCP URL, you can connect it to Claude. All communication happens over HTTP POST with JSON-RPC 2.0 messages. You can establish this connection either through the application UI or via a manual configuration file.

Method A: Via the Claude UI

If you are using Anthropic's web interface or a supported desktop client that features visual connector management:

  1. Open your Claude settings.
  2. Navigate to Integrations or Connectors (depending on your specific client version and tier).
  3. Click Add MCP Server or Add custom connector.
  4. Paste the Truto MCP URL generated in the previous step.
  5. Click Add.

Claude will immediately ping the endpoint, execute the initialization handshake, and request the list of available tools.

Method B: Via Manual Configuration File

If you are using Claude Desktop or a headless agent framework, you connect via the configuration file using a Server-Sent Events (SSE) transport wrapper.

Open your claude_desktop_config.json file (typically located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows) and add the following configuration:

{
  "mcpServers": {
    "intercom-truto": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/YOUR_SECURE_TOKEN_HERE"
      ]
    }
  }
}

Restart Claude Desktop. The server-sse proxy will translate Claude's local standard I/O communication into HTTP requests against your Truto MCP URL.

Hero Tools for Intercom

Truto dynamically derives tools from Intercom's resource definitions and schemas. While dozens of endpoints are exposed, the following "hero tools" represent the highest-leverage operations for AI agents managing support and Help Center workflows. If you're building cross-platform support agents, you may also want to connect Zendesk to Claude using the same MCP architecture.

Search Intercom Conversations

Tool Name: list_all_intercom_search_conversations

This tool allows Claude to query Intercom's conversation database using specific filters (e.g., finding all open tickets assigned to a specific team or searching for conversations containing specific keywords). Because Truto provides the JSON schema for the Intercom search DSL, Claude knows exactly how to format the nested query object.

"Find all open conversations created in the last 24 hours that are currently unassigned. Return their conversation IDs and current states."

Get Single Conversation Details

Tool Name: get_single_intercom_conversation_by_id

Once Claude identifies a target conversation, it needs the full context. This tool retrieves the complete conversation model, including the source message, priority, tags, custom attributes, and up to 500 of the most recent conversation parts (the actual back-and-forth messages).

"Retrieve the full details and message history for conversation ID 104857392."

Reply to a Conversation

Tool Name: intercom_conversations_reply

This is a write operation that enables Claude to draft and post replies directly into an Intercom thread. The agent can construct a response based on its context window and inject it into the conversation flow as a specific admin.

"Post a reply to conversation ID 104857392 letting the customer know their refund has been processed. Use admin ID 149302."

Search Help Center Articles

Tool Name: list_all_intercom_articles_search

To provide accurate support, an AI agent needs to access ground-truth documentation. This tool allows Claude to search Intercom's Help Center articles by phrase, state (published/draft), and Help Center ID. Claude can use this to extract policy details before formulating a reply.

"Search our Intercom Help Center for published articles containing the phrase 'SSO configuration' and summarize the steps."

Search Contacts

Tool Name: list_all_intercom_search_contacts

Support workflows often require verifying user identity or checking account tiers. This tool allows Claude to execute complex queries against the contacts database to retrieve details like email addresses, custom attributes, and creation dates.

"Search for the contact with the email address 'ceo@example.com' and tell me what their current subscription tier is based on their custom attributes."

Update an Intercom Ticket

Tool Name: update_a_intercom_ticket_by_id

Beyond standard conversations, Intercom utilizes distinct Ticket objects for complex resolutions. This tool allows Claude to update a ticket's state, reassign it, or modify ticket-specific custom attributes based on new information. For teams working with Slack-first support, you can also connect Pylon to Claude to manage similar ticketing workflows.

"Update ticket ID 84930. Change its status to 'In Progress' and assign it to admin ID 149302."

For the complete inventory of available Intercom tools, including detailed request schemas and response shapes, visit the Intercom integration page.

Workflows in Action

Exposing individual tools to Claude is useful, but the real power of MCP emerges when an LLM orchestrates multi-step workflows. Here are two real-world examples of how Claude can use these Intercom tools in sequence.

Workflow 1: AI-Driven Support Triage and Resolution

Instead of a human agent reading every inbound ticket, Claude can identify common questions, look up the answer, and reply autonomously.

"Check for any new, unassigned conversations about 'password reset'. If you find any, look up our standard password reset instructions in the Help Center, and reply to the user with the steps."

Step-by-step execution:

  1. Claude calls list_all_intercom_search_conversations, passing a query object that filters for state = open, assignee = null, and searches the body for "password reset".
  2. Claude receives an array of conversation objects. For the first conversation, it extracts the user's specific context using get_single_intercom_conversation_by_id.
  3. Claude calls list_all_intercom_articles_search with the phrase "password reset" to retrieve the most up-to-date, approved steps from the company's knowledge base.
  4. Claude synthesizes the article content into a friendly message.
  5. Claude calls intercom_conversations_reply to post the response to the user.

Result: The customer gets an immediate, accurate response based on official documentation, and the conversation is handled without human intervention.

Workflow 2: Escalation and Context Gathering

When a customer issue exceeds AI resolution capabilities, Claude can prepare the ticket for a human engineer by gathering all necessary context.

"Find the open ticket for user 'enterprise-admin@bigcorp.com'. Summarize their past 3 conversations, update the ticket description with that summary, and change the ticket state to 'Escalated'."

Step-by-step execution:

  1. Claude calls list_all_intercom_search_contacts to find the specific contact ID for the provided email.
  2. Claude calls list_all_intercom_search_conversations filtered by that contact ID to pull their recent history.
  3. Claude calls get_single_intercom_conversation_by_id iteratively to read the content of those recent conversations, summarizing the ongoing friction points.
  4. Claude calls update_a_intercom_ticket_by_id, injecting the generated summary into the ticket attributes and updating the state.

Result: The human support engineer inherits a ticket that already contains a concise summary of the customer's historical issues, drastically reducing time-to-resolution.

Security and Access Control

Giving an AI model direct access to your customer support platform requires strict guardrails. Truto provides four mechanisms to lock down your Intercom MCP servers:

  • Method Filtering: You can restrict a server to specific operation types by passing config.methods: ["read"] during creation. This ensures the LLM can search Help Centers and read conversations, but cannot accidentally delete contacts or send replies.
  • Tag Filtering: Intercom resources are grouped by tags. By passing config.tags: ["knowledge_base"], you can create a highly scoped server that only exposes article and collection endpoints, completely blocking access to PII in the contacts database.
  • Expiration Policies: You can provide an expires_at ISO datetime when creating the server. Once the timestamp passes, Truto automatically deletes the token and tears down the access, which is perfect for temporary contractor access or ephemeral agent tasks.
  • Require API Token Auth: By setting require_api_token_auth: true, the MCP URL itself is no longer sufficient for access. The connecting client must also pass a valid Truto API token in the Authorization header. This prevents unauthorized execution if the MCP URL is inadvertently exposed in logs or configuration files.

Moving Forward with Intercom and Claude

Building a reliable AI agent integration for Intercom requires solving two hard problems: standardizing the integration infrastructure and mapping complex vendor schemas into LLM-friendly tools.

By utilizing a managed MCP server, you eliminate the need to write custom pagination handlers, maintain search DSL schemas, or manage OAuth token lifecycles. Truto handles the protocol translation, exposes secure endpoints, and ensures rate limit headers are passed through accurately. This allows your engineering team to focus entirely on prompt engineering and workflow orchestration, rather than chasing API deprecations.

FAQ

How do I give Claude access to Intercom articles and conversations?
You can connect Claude to Intercom using a Model Context Protocol (MCP) server. Truto generates a managed MCP server URL from your authenticated Intercom account, which you can paste directly into Claude's connector settings.
Does Truto handle Intercom's API rate limits automatically?
No. Truto passes HTTP 429 rate limit errors directly back to the caller. However, Truto normalizes the rate limit data into IETF standard headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). Your application or agent framework is responsible for implementing retry and backoff logic based on these headers.
Can I restrict which Intercom data the Claude MCP server can access?
Yes. When generating the MCP server in Truto, you can apply method filtering (e.g., read-only access) and tag filtering to restrict the exposed tools to specific resources like just Help Center articles or just Support Tickets.

More from our Blog