Can an AI agent use Intercom?

As of 15 Oct 2026, an AI agent can't reliably get into Intercom on its own, but once it is in it does 60% of the core work.

Level 1 · Needs a personAgents can't get in on their own.
  • Find: Docs for agents: llms.txt, an OpenAPI and an MCP server; a docs page for each core task.
  • Access: Signs up sometimes.
  • Use: 60% of the work.
  • Pay: Reaches the checkout: Stopped at the $39 a month charge.
  • Leave: Nothing to cancel: Deletes its data, but the login stays.

To reach L3 · Does the work: let an agent get in on its own in every drive.

With an account set up by a person: not measured yet.

Got in on 1 of 3 drives: the bot check let it through in some and not in others.

What the levels mean

Driven 15 Oct 2026Same level in 3 drives in a rowRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverCan't get in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 15 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Intercom.

On its own

  • Reply to, tag, assign, and close customer conversations
  • Create and resolve support tickets, including custom ticket types
  • Add knowledge articles and collections that the AI agent and the human-assist tool can draw answers from
2 more
  • Manage contacts, companies, and tags
  • Read conversations and add internal notes through Intercom's newer AI-assistant connection

What it can't, and why

  • Have the AI agent answer and resolve customer questions through the APIIntercom requires a manual request to turn this on, even on the trial
  • Get an API key without using a web browserkeys are only issued through a web dashboard page
  • Buy a paid plan on its owncheckout ends at a card-entry form; the agent had no card
On its own, in a browser

Can an AI agent sign up for Intercom on its own?

It signs up on its own (in a browser), but can't get in on its own: a later step stopped it. Web form at www.intercom.com/signup/email (email, name + password, company, company size) with an invisible reCAPTCHA that let our agent's browser through; starts a 14-day Advanced trial without a card. No sign-up API. The developer sign-up link in the API auth docs (app.intercom.com/admins/sign_up/developer) showed an AWS WAF 'Let's confirm you are human' page instead.

Every way in it offers, as our agent tried them

Ways in
Way inWhat happened
Email and passwordGot in, 9 min
Sign‑in for apps (OAuth, MCP)Got in, 4 min
Official server · 4 of 5 calls worked

Does Intercom have an MCP server, and can an agent connect to it?

Yes. Intercom has an official MCP server. The server lists 15 tools.

A new agent can't reliably get in on its own (drive of 15 Oct 2026). Through the MCP server, 4 of our agent's 5 attempts worked.

What the drive found

APIOpenAPIMCP · official–CLISDKllms.txtWebhooks–Sandbox
On its own, in a browser

How does an AI agent get an Intercom API key?

In the drive of 15 Oct 2026, our agent got its Intercom API key in a browser, without a person. Access token only from the web: Developer Hub > New app > Configure > Authentication (masked, eye button). No API or CLI to create, scope or revoke a token. MCP: OAuth with DCR and two consent pages.

The login stays

Can an AI agent delete its Intercom account?

Not all of it: it deletes its data, but the login stays. Settings > Workspace > General > Delete workspace (type your full name, then the workspace name). The page says deletion completes within 14 days; the REST token then answered 401 token_suspended and the MCP token 401. The teammate login still signs in, to a 'Create a new workspace' page; no control to delete the login itself was found.

Reaches the checkout

Can an AI agent pay for Intercom?

Reaches the checkout: stopped at the $39 a month charge.

Reached the card form and stopped: Essential, $39 a month.

Checkout: a Stripe card formAn invisible bot check loaded at checkoutWallets: Google Pay

Ways to pay found: Card checkout (Stripe Elements).

No card needed to start.

What would let agents pay on their own
  1. Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.Step-by-step guide
  2. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).Step-by-step guide

No 402, x402, MPP or billing API. In-app 'Buy Intercom' opens teams-checkout: Monthly Essential $39/seat/mo, Continue to payment shows a Stripe Elements card form (Google Pay, Stripe invisible hCaptcha), optional Tax ID, last button 'Pay now'. Stopped there: no card.

Ways to pay checked 15 Oct 2026.

For the team behind Intercom.

Where agents stop in Intercom today, and the fixes that get them further, highest impact first.

In; 60% of the work done

The fixes, highest impact first

  1. Open the Fin Agent API to trial workspacesStep-by-step guide
  2. Add a token API or device login
  3. Fix MCP token revocationStep-by-step guide
3 more fixes
  1. Support MCP (the 28 Jul 2026 spec) server/discover
  2. Let agents pay without a card form Step-by-step guide
  3. Add a reply tool to the MCP server
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L1 · Needs a person badge

Behind the level.

The part scores and the measures behind them.

Part scores and the measures · the docs · level history · paid plans

Part scores

  • Holds up: 74 of 100, fair

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: found
  • CLI: not found

Not measured in this drive: Docs match (part of an Audit).

Security: reported privately to the owner

The measures

  1. Work done60
  2. Reliability83
  3. Crash test65

The docs

600 of 13,299 pages read. Complete.

  • A getting-started page
  • An auth page
  • Errors listed with their codes
  • Code examples on most pages
  • Newest page updated 15 Oct 2026
  • A page for 10 of 10 core tasks

Read on 15 Oct 2026.

Tried as documented

3 of 7 documented ways to do the core work worked when tried.

Tried as documented
What happenedWays
Worked when tried3
Documented, didn't work4
Not tried (a paid plan, or no way to reach it)0
Worked, but not in the docs1

Level history

  1. 1 Oct 2026L4Runs on its own
  2. 1 Oct 2026sign-up variesL1Needs a person
  3. 6 Oct 2026L1Needs a person
  4. 15 Oct 2026L1Needs a person

Needs a paid plan

Not counted in the level. Our drive used no-card trial (14-day Advanced trial).

Needs a paid plan
CapabilityPlan
Fin Insights (Pro add-on)Pro add-on $100/mo
Auto-translateCopilot add-on
How Intercom handles an agent's mistakes · 9 probes · core run 3×

Malformed requests, a retry, a wrong key and a short burst of reads on our agent's own account, and how Intercom answered.

  1. Clear errors79
  2. Recovery67
  3. Safe retries50
  • Vaguebad enum message_typeReply to a customer conversation from a shared team inbox400 {"type": "error.list", "request_id": "000f4pfed3qi6icp4i50", "errors": [{"code": "parameter_invalid", "message": "Unsupported message type"}]}
  • Vaguemissing admin_idReply to a customer conversation from a shared team inbox400 {"type": "error.list", "request_id": "000fgliqo89jmp9it090", "errors": [{"code": "parameter_invalid", "message": "ID is required"}]}
  • Clearmissing ticket_type_idCreate and track a support ticket through to resolution400 {"type": "error.list", "request_id": "000d6m474iobqnikb70g", "errors": [{"code": "parameter_not_found", "message": "ticket_type_id is a required parameter"}]}
  • Clearnonexistent ticket idCreate and track a support ticket through to resolution404 {"type": "error.list", "request_id": "0000vd2nqqcpjfs7shkg", "errors": [{"code": "not_found", "message": "Resource Not Found"}]}
  • Clearreply to deleted conversationReply to a customer conversation from a shared team inbox404 {"type": "error.list", "request_id": "000g11c8orhegb4j86l0", "errors": [{"code": "not_found", "message": "Resource Not Found"}]}
  • Clearduplicate ticket type nameDefine custom ticket types and attributes400 {"type": "error.list", "request_id": "000g85q6fmmcstrdo2t0", "errors": [{"code": "parameter_invalid", "message": "A ticket type with [redacted] Bug already exists"}]}
  • Clearwrong tokenReply to a customer conversation from a shared team inbox{"type":"error.list","request_id":"000ceqjvbc35i80fa9dg","errors":[{"code":"unauthorized","message":"Access Token Invalid"}]} 401
  • Clearburst 15 x GET /tagsTag a conversation or contactcodes ['200', '200', '200', '200', '200', '200', '200', '200', '200', '200', '200', '200', '200', '200', '200']; last headers: x-ratelimit-limit: 1667; x-ratelimit-reset: 1792046104; x-ratelimit-remai
  • Clearsame create twiceCreate and track a support ticket through to resolution200 id 215476403737233 / 200 id 215476403737396

For agents and builders.

The drive as data, every checkpoint and all 105 attempts.

How an agent connects · 6 tips
  • Send Intercom-Version: 2.16; errors come as error.list with a code and message, not problem+json.
  • Ticket list attributes take list_items as a comma string; a list_options object gets a vague 400.
  • A contact's company link can read empty right after attaching; read again a moment later.
  • There is no idempotency key: a repeated POST /tickets makes a second ticket.
  • MCP update_article wants the id as a string.
  • The sign-up wizard keeps its state in the page: do it in one browser session.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessdevelopers.intercom.com/llms.txt and .md pages, 2.16 API reference with a downloadable OpenAPI 3.0.1 (266 operations), MCP guide.
  2. Sign upIn a browserWeb form at www.intercom.com/signup/email (email, name + password, company, company size) with an invisible reCAPTCHA that let our agent's browser through; starts a 14-day Advanced trial without a card. No sign-up API. The developer sign-up link in the API auth docs (app.intercom.com/admins/sign_up/developer) showed an AWS WAF 'Let's confirm you are human' page instead.
  3. VerifyIn a browserVerification mail from team@intercom.io arrived within a minute; the link logged the browser in.
  4. KeyIn a browserAccess token only from the web: Developer Hub > New app > Configure > Authentication (masked, eye button). No API or CLI to create, scope or revoke a token. MCP: OAuth with DCR and two consent pages.
  5. First callHeadlessGET https://api.intercom.io/me with the token, Intercom-Version 2.16: 200.
  6. First actionHeadlessPOST /contacts and POST /conversations created a contact and a customer conversation, read back with GET.
  7. PayIn a browserNo 402, x402, MPP or billing API. In-app 'Buy Intercom' opens teams-checkout: Monthly Essential $39/seat/mo, Continue to payment shows a Stripe Elements card form (Google Pay, Stripe invisible hCaptcha), optional Tax ID, last button 'Pay now'. Stopped there: no card.
  8. CancelNot neededNothing to cancel: our agent started no paid plan.
  9. DeleteIn a browserSettings > Workspace > General > Delete workspace (type your full name, then the workspace name). The page says deletion completes within 14 days; the REST token then answered 401 token_suspended and the MCP token 401. The teammate login still signs in, to a 'Create a new workspace' page; no control to delete the login itself was found.
The attempt log · 105 attempts
Attempt log
CapabilityRouteResultEvidence
MCP discovery: POST server/discover to https://mcp.intercom.com/mcpmcpdone ✓HTTP 401 WWW-Authenticate Bearer resource_metadata=https://mcp.intercom.com/.well-known/oauth-protected-resource/mcp scope="mcp operator"; auth required before any protocol answer
OAuth metadata: PRM + AS metadataapidone ✓PRM 200 resource https://mcp.intercom.com/mcp; AS metadata has registration_endpoint /register (DCR), no client_id_metadata_document_supported, no device endpoint, PKCE S256
sign up: Sign up at www.intercom.com/signup/email (email, name+password, company, size)browserdone ✓POST app.intercom.com/ember/signups 201, workspace id hcvs1aup; invisible reCAPTCHA scripts loaded on the form, no challenge shown. Note: app.intercom.com/admins/sign_up/developer (linked from the API auth docs) showed an AWS WAF "Let's confirm you are human" page (Begin button) instead of a form; not attempted further
verify email: Open verification link from team@intercom.iobrowserdone ✓mail arrived within a minute; link opened app.intercom.com/a/apps/hcvs1aup/hello
session: Logged-in session after verifybrowserdone ✓verify link logged the browser in to workspace hcvs1aup
API access token: Create a private app in Developer Hub, read its access tokenbrowserdone ✓Developer Hub > New app > Create app (app package 212692); Configure > Authentication shows the access token masked, revealed with the eye button; token works on GET /me
scoped API key headless: Look for a documented API/CLI route to create or revoke an access tokennoneblockedSearched the 2.16 OpenAPI (266 operations) and the Authentication docs: tokens come only from the Developer Hub web UI (app package Authentication page) or OAuth app install; no token-create endpoint, no CLI
first API call: GET https://api.intercom.io/me with Bearer tokenapidone ✓200 admin 11897874 the agent's inbox, app hcvs1aup region US; Intercom-Version 2.16 accepted
first real action: Create a contact (POST /contacts) and a contact-initiated conversation (POST /conversations)apidone ✓contact 6ad071732abfff1e5ffa3cd2 and conversation 215476403673018 created; GET /conversations/{id} 200 state open
Reply to a customer conversation: Create a customer conversation to reply to (POST /conversations from our test contact)apidone ✓200 user_message conversation_id 215476403673018
Reply to a customer conversation: GET /conversations/{id}apidone ✓200 state open, source.body matches
Reply to a customer conversation: POST /conversations/{id}/reply as admin (message_type comment)apidone ✓200, conversation part author admin 11897874 with our body; read back via GET shows the admin part
Reply to a customer conversation: Close the conversation (POST /conversations/{id}/parts message_type close)apidone ✓200 state closed
Reply to a customer conversation: DELETE /conversations/{id}, then GETapidone ✓DELETE 200 {deleted:true}; GET 404 not_found
Reply to a customer conversation: Fresh conversation, admin reply, read back, deleteapidone ✓conv 215476403675063 reply 200 readback 1 delete 200
Reply to a customer conversation: Fresh conversation, admin reply, read back, deleteapidone ✓conv 215476403675521 reply 200 readback 1 delete 200
Create and track a ticket: POST /tickets with our ticket type and test contactapidone ✓200 ticket 215476403678298 state submitted, attributes as sent
Create and track a ticket: GET /tickets/{id} and POST /tickets/searchapidone ✓GET 200 attributes match; search by ticket_type_id total_count 1
Create and track a ticket: PUT /tickets/{id} state in_progress + Severity Low, read backapidone ✓200; GET shows Severity Low, state in_progress
Create and track a ticket: Admin reply on ticket, then resolve (state resolved, open false)apidone ✓reply 200; PUT 200; GET state resolved open false
Create and track a ticket: DELETE /tickets/{id}, GETapidone ✓DELETE 200 deleted true; GET 404
Define ticket types and attributes: POST /ticket_types, POST /ticket_types/{id}/attributes (list)apidone ✓type 4623009 created with 4 states; attribute Severity 14524731 created. First try with input_options.list_options got 400 parameter_invalid "Data type is list but no list options were given"; the spec field is list_items (comma string)
Define ticket types and attributes: GET /ticket_types and /ticket_types/{id}apidone ✓type listed; attributes _default_title_, _default_description_, Severity
Define ticket types and attributes: PUT /ticket_types/{id} description; PUT attribute description; read backapidone ✓both 200; GET shows updated descriptions
Define ticket types and attributes: Create a ticket of the new type with the Severity attributeapidone ✓ticket 215476403678298 accepted Severity High and later Low
Create and track a ticket: create, resolve, read back, deleteapidone ✓ticket 215476403680924 update 200 state resolved delete 200
Create and track a ticket: create, resolve, read back, deleteapidone ✓ticket 215476403681379 update 200 state resolved delete 200
Define ticket types and attributes: new type + attribute, read back, archiveapidone ✓type 4623010 attr 200 readback 1 archive 200
Define ticket types and attributes: new type + attribute, read back, archiveapidone ✓type 4623011 attr 200 readback 1 archive 200
Define ticket types and attributes: Remove the ticket type: no DELETE documented, archive with PUT archived=true, read backapidone ✓PUT 200; GET archived true. API offers archive only, no hard delete
Fin Agent API: POST /fin/ask on our workspaceapifailed403 api_plan_restricted "Fin Agent API is not enabled for your app." Docs: access is requested at Settings > Integrations > Fin Agent API by telling Intercom the use case (manual grant), even on the Advanced trial
Fin Agent API: POST /fin/procedures/{id}/run on our workspaceapifailed403 api_plan_restricted "Fin Agent API is not enabled for your app." Docs: access is requested at Settings > Integrations > Fin Agent API by telling Intercom the use case (manual grant), even on the Advanced trial
Fin Agent API: POST /fin/escalate on our workspaceapifailed403 api_plan_restricted "Fin Agent API is not enabled for your app." Docs: access is requested at Settings > Integrations > Fin Agent API by telling Intercom the use case (manual grant), even on the Advanced trial
Create and update a contact with custom attributes: Create and update a contact with custom attributesapidone ✓POST /data_attributes 200; PUT /contacts 200; GET custom_attributes={'ad_plan': 'pro'}
Group contacts into a company record: Group contacts into a company recordapifailedPOST /companies 200 id 6ad0723733dd506ea14a35be; attach 200; GET /companies/{id}/contacts 200 has contact=False
Segment contacts (list segments, contact segments): Segment contacts (list segments, contact segments)apidone ✓GET /segments 200 ['Active', 'New', 'Slipping Away']; GET /contacts/{id}/segments 200; API is read-only for segments (create in UI)
Log a custom event for a user: Log a custom event for a userapidone ✓POST /events 202; GET /events?type=user&user_id 200 found=True {'type': 'event.list', 'events': [{'type': 'event', 'id': '[id]', 'created_at': 1792045627, 'event_name': 'ad-test-eve
Tag a contact: Tag a contactapidone ✓POST /tags 200 id 16537211; tag contact 200; GET contact tags found=True
Organize teammates into Teams (list teams): Organize teammates into Teams (list teams)apidone ✓GET /teams 200 {'type': 'team.list', 'teams': []}; API is read-only for teams (no create documented)
Add an internal note to a conversation: Add an internal note to a conversationapidone ✓conv 215476403696106; reply type note 200; GET shows note part=True
Assign a conversation to a teammate: Assign a conversation to a teammateapidone ✓POST /conversations/{id}/parts assignment 200; GET admin_assignee_id=11897874
Tag a conversation: Tag a conversationapidone ✓POST /conversations/{id}/tags 200; GET tags found=True
Group contacts into a company record (read back after delay): Group contacts into a company record (read back after delay)apidone ✓GET /contacts/{id}/companies 200 has company=True; GET /companies/{id}/contacts 200 total 1 (first read right after attach was empty: eventual consistency)
Organize help center content into collections: Organize help center content into collectionsapidone ✓POST collections 200 id 19783425; GET 200 name [redacted] Collection
Publish and manage a help center article: Publish and manage a help center articleapidone ✓POST /articles 200 id 17608840; PUT publish 200; GET title=AgentDrives test article (updated) state=published
Manage AI content sources for Fin (content import source + external page): Manage AI content sources for Fin (content import source + external page)apifailedPOST /ai/content_import_sources 200 {'id': 162262, 'type': 'content_import_source', 'last_synced_at': 1792045688, 'status': 'active', 'url': 'https://www.agentdrives.com/', 'sync_behavior': 'api',; POST /ai/external_pages 400 {'type': 'error.list', 'request_id': '000ejanhp263gsvn5qr0', 'errors': [{'code': 'parameter_not_found', 'message': 'locale is a required parameter'}]}; GET 0
Create a News Item (draft, not published to anyone): Create a News Item (draft, not published to anyone)apidone ✓POST 200 id 160314; PUT 200; GET title AgentDrives test news (updated) state draft
Send an outbound in-app message to our own test contact: Send an outbound in-app message to our own test contactapifailedPOST /messages inapp to our contact 200 {'type': 'admin_message', 'id': '259069283', 'created_at': 1792045694, 'subject': 'AgentDrives test in-app message', 'body': 'AgentDrives test in-app message', 'message_type': 'inapp', 'owner': {'type; GET conversation 0
Side conversations: API lists them; no create endpoint documented: Side conversations: API lists them; no create endpoint documentedapipartialGET /conversations/{id}/side_conversations 200 {'type': 'side_conversation.list', 'side_conversations': [], 'total_count': 0, 'pages': {'type': 'pages', 'next': None, 'page': 1, 'per_page': 25, 'to; starting a side conversation is not in the 2.16 API (UI only); not created
Data Connectors: list: Data Connectors: listapidone ✓GET /data_connectors 200 {'type': 'list', 'data': [], 'pages': {'type': 'pages', 'per_page': 20}}
Reporting data export: list datasets: Reporting data export: list datasetsapidone ✓GET /export/reporting_data/get_datasets 200 {'type': 'list', 'data': [{'id': 'conversation', 'name': 'Conversation', 'description': 'Conversation-level details: status, channel, assignee.', 'default_time_attribute_id': 'conversation.conversatio
Export conversation data (content export job): Export conversation data (content export job)apidone ✓POST /export/content/data 200 job la1mprbxvey2j81i; GET status 200 in_progress
Phone calls: list calls via API: Phone calls: list calls via APIapipartialGET /calls 200 {'type': 'list', 'data': [], 'total_count': 0, 'pages': {'type': 'pages', 'page': 1, 'per_page': 25, 'total_pages': 0}}; API is read-only for calls; placing a call needs a phone number in the Inbox
Manage AI content sources for Fin: Create content import source + external page with locale and availability, read backapidone ✓POST /ai/content_import_sources 200 id 162263; POST /ai/external_pages 200 id 239848625 fin_availability true; GET 200. (The first try without locale/availability fields failed.)
Send an outbound message: POST /messages in-app from our admin to our own test contact; read backapipartialPOST /messages 200 admin_message id 259069283; no conversation_id returned and /conversations/search for the contact finds none (in-app message waits until the contact opens the Messenger); /messages/status needs a ruleset_id, which this response does not give: no documented read-back for a one-off message
Fin answers a customer question: Fin AI Agent > Test (batch test): add question "How do I reset the widget?" and run as Preview userbrowserdone ✓testing/41598: Fin answered "You can reset the widget in Settings..." citing Content (1), the external page we created via POST /ai/external_pages; answer shown in the run with rating controls
AI content powers Fin answers: Check Fin uses the API-created external pagebrowserdone ✓Fin batch test answer used Content (1) and repeated the page text
Fin answers a customer question: Create a Fin batch test group with one questionbrowserdone ✓group 41598 created via Add manually > Save
Fin answers a customer question: Open the test group and read Fin answerbrowserdone ✓testing/41598 shows the question and Fin answer
Fin answers a customer question: Rate Fin answer Good, read backbrowserdone ✓after rating, reload shows no Unrated label
Fin answers a customer question: Manage > Delete group, reopen URLbrowserdone ✓redirected to testing list; testing/41598 no longer shows the question
Docs claim: Reply to a customer conversation from a shared team inbox: POST /conversations/{id}/replyapidone ✓admin reply landed, read back
Docs claim: Let Fin AI Agent answer a customer question automatically: POST /fin/askapifailed403 api_plan_restricted: Fin Agent API is not enabled for your app (access granted on request)
Docs claim: Run a Fin Procedure (deterministic multi-step workflow) for a user: POST /fin/procedures/{procedure_id}/runapifailed403 api_plan_restricted
Docs claim: Escalate a Fin conversation to a human teammate: POST /fin/escalateapifailed403 api_plan_restricted
Docs claim: Create and track a support ticket through to resolution: POST /ticketsapidone ✓created, read back, deleted
Docs claim: Define custom ticket types and attributes: POST /ticket_types, POST /ticket_types/{id}/attributesapidone ✓both created; list attribute takes list_items
Docs claim: Make and receive phone support calls inside the inbox: POST /calls (Calls)apifailedthe 2.16 spec has GET /calls, GET /calls/{id}, recording, transcript and POST /calls/search only: no operation places or answers a call
Fin answers a customer question: New batch test group, one new question, read answer, delete groupbrowserdone ✓testing/41599 Fin answered from Content (1): reset under Settings; group deleted
Fin answers a customer question: New batch test group, one new question, read answer, delete groupbrowserdone ✓testing/415910 Fin answered from Content (1): reset under Settings; group deleted
MCP version: server/discover with token, then initializemcpdone ✓server/discover -> HTTP 400 JSON-RPC -32000 "Unsupported protocol version: 2026-07-28 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)" (not -32022); initialize offering 2026-07-28 answered protocolVersion 2025-11-25, serverInfo Intercom 0.3.0, SSE reply; tools/list 15 tools (docs say 14)
MCP OAuth sign-in: DCR register client, PKCE authorize with our account, token exchangebrowserdone ✓POST /register 201-style client mZAVbcZiAEv0hhob (DCR, no CIMD); two consent pages (mcp.intercom.com Allow, then app.intercom.com Authorize access); token exchange headless, expires_in 3600, refresh token; callback carried no iss parameter (RFC 9207)
Add an internal note via MCP: MCP add_internal_note, read back with get_conversationmcpdone ✓note_added true id 56127735616; get_conversation shows the note text
Help center article via MCP: MCP create_article draft, update_article title, read back via REST, delete via RESTmcpdone ✓create_article draft -> id; update_article with id as a string renamed it (a numeric id gets -32602 'expected string'); GET /articles/17609180 title 'MCP test article 2 (updated)'; deleted via REST
Docs claim: Reply to a customer conversation from a shared team inbox: add_internal_note (no reply tool)mcppartial ✓MCP can read conversations and add internal notes, but has no tool to send a reply to the customer
Build an automated Workflow: Workflows > New workflow > Create from scratch, trigger: customer sends first messagebrowserdone ✓draft workflow 71535825 opened in the visual builder
Build an automated Workflow: Add step Let Fin answer, Save, reloadbrowserdone ✓after reload the workflow shows trigger + Let Fin handle step (Service)
Build an automated Workflow: Reload the workflow editorbrowserdone ✓state persisted (Draft)
Build an automated Workflow: Set the workflow live / Preview itbrowserfailedSet live is held: banner "Install the Messenger first to set this workflow live"; the Preview button did not respond to a click in our agent's browser (timeout), so the workflow never ran
Chat live through the Messenger widget: Load the Messenger snippet (app_id hcvs1aup) on our own test page (agentdrives.com path served by our agent's browser) and open a chatbrowserfailedwidget.intercom.io/widget/hcvs1aup answered 200 but no launcher frame or further Messenger requests followed in 12 s; the workspace had is_web_messenger_disabled true at signup and the Messenger was not installed. Cause not pinned down: could be the workspace setting or our test-page setup; not a confirmed product fault
Copilot drafting in the inbox: Open a customer conversation, ask Copilot how to answerbrowserdone ✓Copilot answered "instruct them to reset the widget under Settings" citing 1 source (AgentDrives FAQ, our API-made external page)
Copilot drafting in the inbox: Add to composer, Send; read back via GET /conversations/{id}browserdone ✓admin reply with the Copilot text appears in the thread and in the API conversation parts
walk to last click: Buy Intercom > teams-checkout: Monthly, Essential, 1 seat, Continue to paymentbrowserdone ✓app.intercom.com/a/apps/hcvs1aup/teams-checkout?plan_id=54: Essential $39/seat/mo monthly ($29 annual); Continue to payment opens Stripe Elements payment form (Google Pay frame, Stripe invisible hCaptcha frame, no 3DS frame seen), optional Tax ID field, no phone field; last button "Pay now" ("Today your trial will end and you will be charged $39"). Stopped there: no card
Continue with Google: pw sso googlebrowserskippedpw sso google: refused-ours, this drive has no Google account
sign-up call: look for a sign-up API or /auth.mdnoneskippedno sign-up API in the 2.16 OpenAPI; /auth.md 404; no agent_auth block in the MCP AS metadata (door_probe)
Build a Series campaign: Outbound > Series > New Series, read back in the listbrowserdone ✓series 517681 opened in edit mode; Series list shows 1 series, Untitled, Draft, created by [redacted] (not set live: no messages sent)
Run an in-app Survey: Outbound > New message > SurveybrowserfailedNew message panel lists Survey templates (Measure NPS); clicking the Survey entry did not open an editor in our agent's browser (URL stayed /outbound/all). The checkout page lists Surveys under the Proactive Support Plus add-on ($99/mo) on paid plans
Create a Product Tour: Outbound > New message > Product TourbrowserfailedProduct Tour templates listed in the New message panel; our scripted click loop stopped after the Survey entry did not open an editor, so no tour was created. Checkout lists Product tours under Proactive Support Plus ($99/mo add-on)
Send an onboarding Checklist: Outbound > New message > ChecklistbrowserfailedSeries templates include "Activate new users with a checklist"; the checklist editor was not reached in our click loop. Checkout lists Checklists under Proactive Support Plus ($99/mo add-on)
A/B test message variants: Check where A/B testing livesbrowserfailedCheckout page lists A/B testing under the Proactive Support Plus add-on; not reached in the message editor (no message editor opened); no API surface
Fin Insights (Pro add-on): Look for it in the appbrowserplan_gatedcheckout page: Pro add-on $100/mo includes Operator, CX Score, AI Topics, Trends, AI Recommendations; the inbox showed CX Score fields empty on our trial
Test Fin with simulations: Fin AI Agent > Testbrowserpartial ✓Test section offers Batch test (questions answered by Fin, rated) which we ran 3 times; no separate end-to-end Simulations entry seen on the Test page
Auto-translate conversations: Check inbox translationbrowserplan_gatedcheckout page: Copilot add-on ($29-35/seat/mo) "Translate multilingual chats"; not exercised
SSO: docs checknoneskippedweb UI only (Settings > Security), no API in 2.16 spec; not configured: needs an identity provider we do not run
teammate permissions: docs checknoneskippedSettings > Teammates permissions, UI only; no admin-permissions write endpoint in the 2.16 spec (GET /admins only)
multiple brands: GET /brandsapidone ✓GET /brands 200 lists the default brand AgentDrives (also shown on the conversation as Brand AgentDrives); creating brands is UI only
third-party integrations: docs checknoneskippedApp Store / Settings > Integrations, UI only; MCP and Data Connectors documented; not connected (no third-party accounts)
HIPAA: docs checknoneskippedExpert plan setting, UI only; needs a BAA, not something a account can sign
Fin Procedure: Fin AI Agent > Train > Procedures > New procedurebrowserpartialprocedure 2158282 opened as Untitled Draft with When to trigger / Guidance / Instructions and a Preview + Simulations panel; Save stayed disabled with empty instructions and the run (preview) did not finish loading in our agent's browser, so no procedure ran
Fin Simulations: find SimulationsbrowserpartialSimulations tab exists in the procedure editor preview panel; not run
Escalate Fin conversation to a human: Escalation via UIbrowserfailedFin escalation needs Fin live on a customer channel; Fin could not go live because the Messenger was not installed (workflow Set live held), and the Fin Agent API escalate call is 403 api_plan_restricted. Train > Escalation settings exist but no conversation reached Fin
revoke MCP token: POST revocation_endpoint from AS metadata (https://mcp.intercom.com/token) with tokenapifailed400 unsupported_grant_type "Grant type not supported"; token still answers tools/list 200: the advertised revocation_endpoint is the token endpoint and does not revoke
revoke access token: No API to revoke; token ended by deleting the workspacebrowserdone ✓after workspace delete GET /me 401 token_suspended "Unauthorized token, suspended application"; MCP token 401 -32001 "Workspace admin no longer has access"
cancel: nothing to cancelnoneskippedAdvanced trial started without a card; no plan bought; checkout says the subscription renews monthly "unless canceled via your billing settings"
delete workspace: Settings > Workspace > General > Delete workspace (type full name, Confirm delete, type workspace name, Delete workspace)browserdone ✓redirected to /a/apps/new (Create a new Intercom workspace); page says the workspace is deleted within 14 days of confirmation; REST token 401 token_suspended, MCP token 401. The teammate login itself still signs in (to the create-workspace page): no account-delete control found

Also in Customer support.