Skip to content

Helpdesk · Beta

Unthread
API integration

Ship Helpdesk features without building the integration. Full Unthread API access via Proxy and 60+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Unthread

Use Cases

Why integrate with Unthread

Common scenarios for SaaS companies building Unthread integrations for their customers.

01

Sync engineering bugs to Slack support threads

Issue trackers and project management tools can let their users escalate Unthread conversations into engineering tickets, then push status updates back into the original Slack thread so support agents never leave their workflow.

02

Feed documentation into Unthread's AI agent

Wiki, CMS, and knowledge management platforms can push published articles into Unthread's knowledge base so the Slack AI bot uses fresh, ground-truth content to auto-resolve customer questions.

03

Enrich support conversations with CRM context

CRM and Customer Success platforms can sync ARR, health scores, and account metadata into Unthread customer records so agents see full account context the moment a Slack ticket opens.

04

Track support health as a churn signal

CS platforms can pull Unthread reporting time-series and CSAT survey analytics to correlate SLA breaches and ticket spikes with account health, surfacing at-risk customers automatically.

05

Automate approvals for internal helpdesk requests

HR, IT, and procurement tools can listen for tagged Unthread conversations, trigger approval requests, and assign the right collaborator once approved — turning Slack channels into fully governed request workflows.

What You Can Build

Ship these features with Truto + Unthread

Concrete product features your team can ship faster by leveraging Truto’s Unthread integration instead of building from scratch.

01

Bidirectional ticket sync

Link Unthread conversations to external tasks in your product and mirror status changes and comments back into the Slack thread using conversation messages.

02

Knowledge base publishing pipeline

Push articles from your docs platform into Unthread's KB with scoped visibility per user group, and keep them updated as content changes.

03

Customer context enrichment

Sync account metadata, custom fields, and CRM identifiers into Unthread customer objects so support agents see enriched data on every conversation.

04

Support analytics dashboards

Pull time-series reporting and CSAT survey responses to build health scores, SLA tracking, and churn-risk indicators inside your product.

05

On-call and collaborator routing

Map on-call schedules or team rosters to Unthread user groups and auto-assign the right collaborator to conversations based on priority or tag.

06

Tag-driven approval workflows

Subscribe to conversation events via webhooks, trigger Unthread approval requests based on tags, and complete the loop by assigning fulfillers once decisions are made.

SuperAI

Unthread AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_unthread_account

Create a new account in Unthread. Returns the created account including id, name, primarySupportAssigneeId, primarySupportAssigneeType, secondarySupportAssigneeId, secondarySupportAssigneeType, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: name.

get_single_unthread_account_by_id

Get a single Unthread account by id. Returns the account including id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: id.

update_a_unthread_account_by_id

Update a Unthread account by id. All fields from the create request schema can be updated. Returns the updated account including id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Required: id.

delete_a_unthread_account_by_id

Delete a Unthread account by id. Returns an empty 204 response on success. Required: id.

list_all_unthread_accounts

List Unthread accounts following the standard list conventions with select, order, where, and descending filters. Returns each account with id, name, emailsAndDomains, slackChannelIds, slackTeamIds, customFields, supportSteps, imageUrl, externalCrmMetadata, createdAt, updatedAt, createdBy, updatedBy, slackChannels, slackTeams, and tags. Max 100 per page.

create_a_unthread_approval_request

Create an approval request for a conversation in Unthread. Returns the newly created approval request including id, status, conversationId, tenantId, and createdAt. Required: conversation_id. Settable fields: title, assignedToUserId, assignedToGroupId.

list_all_unthread_approval_requests

List approval requests for a conversation in Unthread. Returns ApprovalRequest objects including status, id, tenantId, assignedToGroupId, assignedToUserId, statusChangedAt, conversationId, title, notes, createdAt, approverUser, and approverGroup. Required: conversation_id.

create_a_unthread_automation

Create a new automation in Unthread. Returns the created automation object including its id, name, status, trigger, steps, and conditions. Required: name, trigger, steps. Automations are only available if custom actions are enabled for the tenant.

unthread_automations_create_function

Upload shared code library external functions for automations in Unthread. Returns an object with a version number for subsequent activation. Required: code. The projectId query parameter is optional; omit it for tenant-level automations.

unthread_automations_activate_function

Activate a specific version of a shared code library function for automations in Unthread. Returns the activated function version number. Required: version. The projectId query parameter is optional; omit it for tenant-level automations. Activating a previous version can be used to roll back changes.

list_all_unthread_collaborator_types

List collaborator types in Unthread following the standard list conventions. Returns: id. Max 100 per page.

create_a_unthread_conversation

Create a new conversation in Unthread. Behavior varies by type — Slack (channel/DM), triage (internal discussion), or email (email replies). Returns the created conversation including its id, title, initialMessage (ts, text), and tags. Required: type, markdown, status.

get_single_unthread_conversation_by_id

Get a single Unthread conversation by id. Returns the full conversation object including id, status, title, initialMessage, tags, customerId, createdAt, and updatedAt. Required: id.

update_a_unthread_conversation_by_id

Update an Unthread conversation by id. Supports updating status, priority, title, assignedToUserId, customerId, ticketTypeId, ticketTypeFields, metadata, and more. Returns the updated conversation including id, title, initialMessage, and tags. Required: id. Optional query params: mergeTicketTypeFields, useFullContent.

list_all_unthread_conversations

List conversations in Unthread using the standard list conventions (select, order, where, descending). Returns an array of conversation records each including id, title, initialMessage (ts, text), and tags. Max 100 per page.

unthread_conversations_download_file

Download the full contents of a file attachment from an Unthread conversation. Returns the raw file content as binary data. Required: conversation_id, file_id.

unthread_conversations_add_follower

Add a follower to an Unthread conversation. Returns: entityId, userId, groupId, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: conversation_id, entityId, entityType.

unthread_conversations_remove_follower

Remove a follower from an Unthread conversation by entityId. Returns the updated conversation including its id, title, status, and tags. Required: conversation_id, entityId.

unthread_conversations_assign_collaborator

Assign a collaborator with a given collaborator type to an Unthread conversation. Returns the updated conversation including id, title, status, collaborators, and tags. Required: conversation_id, collaborator_type_id. The request body requires entityId and entityType (either "user" or "group").

unthread_conversations_create_external_task

Create an external task for a conversation in Unthread, sending it to a configured task manager integration such as Linear. Returns the created external task including id, title, description, integrationId, assigneeId, and providerConfig. Required: conversation_id, title, integrationId.

create_a_unthread_customer

Create a new customer in Unthread. A Slack channel is created automatically if the createChannel flag is set to true. Returns the created customer object including id, name, slackChannelId, createdAt, updatedAt, tags, and projectId. Required: name.

get_single_unthread_customer_by_id

Get a single Unthread customer by id. Returns the full customer object including name, slackChannelId, primarySupportAssigneeId, botHandling, autoresponder, supportSteps, tags, slackChannel, createdAt, updatedAt, and projectId. Required: id.

update_a_unthread_customer_by_id

Update an existing Unthread customer by id. Returns the updated customer object including name, slackChannelId, botHandling, autoresponder, supportSteps, tags, slackChannel, createdAt, updatedAt, and projectId. Required: id.

delete_a_unthread_customer_by_id

Delete an Unthread customer by id. Returns an empty 204 response on success. Required: id.

list_all_unthread_customers

List Unthread customers following the standard list conventions with select, order, where, and descending filter parameters. Returns: id, name, primarySupportAssigneeId, primarySupportAssigneeType, secondarySupportAssigneeId, secondarySupportAssigneeType, replyTimeoutMinutes, defaultTriageChannelId, disableAutomatedTicketing, botHandling, autoresponder, supportSteps, slackTeamId,…

unthread_knowledge_base_query

Query the Unthread knowledge base for articles matching a search string, with optional context parameters to influence results. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: query.

create_a_unthread_outbound

Create an outbound message in Unthread. The outbound is sent immediately unless status is set to "draft". Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt.

update_a_unthread_outbound_by_id

Update an outbound message in Unthread by id. Drafts can be sent by updating the status to "scheduled". Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt. Required: id.

list_all_unthread_outbounds

List all outbound messages in Unthread. Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt.

get_single_unthread_outbound_by_id

Get a single outbound message in Unthread by id. Returns: id, status, deliveryMethod, subject, blocks, recipients, sendAs, runAt, title, content, url, userGroupIds, createdAt, updatedAt. Required: id.

unthread_reporting_time_series

Get time-series conversation metrics from Unthread grouped by date and optional dimensions. Returns: data, dates, lookups, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: startDate, endDate, metric. Timezone defaults to UTC; response and resolution times are in seconds.

list_all_unthread_surveys

List surveys in Unthread following the standard list conventions. Returns: id, createdAt, updatedAt. Max 100 per page.

unthread_surveys_list_responses

List responses for a specific survey in Unthread following the standard list conventions. Returns: id, createdAt, updatedAt. Required: survey_id. Max 100 per page.

unthread_surveys_get_analytics

Get CSAT analytics for a specific survey in Unthread. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: survey_id.

unthread_slack_bulk_update

Update a Slack user group mapping in Unthread by providing the user's email and Slack handle. Returns: email, slackHandle, id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: email, slackHandle.

create_a_unthread_tag

Create a new tag in Unthread. Returns the created tag object including id, name, description, autoTaggingEnabled, and projectId. Required: name.

get_single_unthread_tag_by_id

Get a single Unthread tag by id. Returns: id, name, description, autoTaggingEnabled, projectId, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.

update_a_unthread_tag_by_id

Update an Unthread tag by id. Returns the updated tag including id, name, description, autoTaggingEnabled, and projectId. Required: id.

delete_a_unthread_tag_by_id

Delete an Unthread tag by id. Returns an empty 204 response on success. Required: id.

list_all_unthread_tags

List Unthread tags following the standard list conventions. Returns: id, name, description, autoTaggingEnabled, projectId. Max 100 per page.

unthread_tags_link_customers

Assign a tag to multiple Unthread customers by providing an array of customer IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of customer IDs.

unthread_tags_link_conversations

Assign a tag to multiple Unthread conversations by providing an array of conversation IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of conversation IDs.

unthread_tags_unlink_customers

Remove a tag from multiple Unthread customers by providing an array of customer IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of customer IDs.

unthread_tags_unlink_conversations

Remove a tag from multiple Unthread conversations by providing an array of conversation IDs. Returns an empty 204 response on success. Required: tag_id, and a request body array of conversation IDs.

create_a_unthread_ticket_type

Create a new ticket type in Unthread with custom fields and conditional visibility rules. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: name, description.

update_a_unthread_ticket_type_by_id

Update a ticket type in Unthread by id, including its name, description, and field definitions. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: id.

delete_a_unthread_ticket_type_by_id

Delete a ticket type in Unthread by id. Returns an empty 204 response on success. Required: id.

list_all_unthread_ticket_types

List ticket types in Unthread using the standard list conventions with select, order, where, and descending parameters. Returns: id, name, projectId, description, createdAt, updatedAt, fields.

get_single_unthread_ticket_type_by_id

Get a single ticket type in Unthread by id. Returns: id, name, projectId, description, createdAt, updatedAt, fields, title, content, url, status, userGroupIds. Required: id.

list_all_unthread_users

List Unthread users synced from your Slack workspace. Returns: id. Pass includeExternalUsers as true to also return external users. Max 100 per page.

get_single_unthread_user_by_id

Get a single Unthread user by id. Returns: id, name, email, slackId, photo, customFields, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.

update_a_unthread_user_by_id

Update an Unthread user by id. Returns the updated user with id, name, email, slackId, photo, and customFields. Required: id.

list_all_unthread_user_groups

List user groups in Unthread following the standard list conventions with support for select, order, where, and descending parameters. Returns: id. Max 100 per page.

get_single_unthread_user_group_by_id

Get a single Unthread user group by id. Returns: id, description, isExternal, filters, projectId, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.

update_a_unthread_user_group_by_id

Update an Unthread user group by id. Returns the updated user group including id, description, isExternal, filters, and projectId. Required: id.

create_a_unthread_webhook_subscription

Create a webhook subscription in Unthread. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt. Required: url.

update_a_unthread_webhook_subscription_by_id

Update a webhook subscription in Unthread by id. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt. Required: id.

delete_a_unthread_webhook_subscription_by_id

Delete a webhook subscription in Unthread by id. Returns an empty 204 response on success.

list_all_unthread_webhook_subscriptions

List webhook subscriptions in Unthread. Returns: id, url, enabled, title, content, status, userGroupIds, createdAt, updatedAt.

list_all_unthread_conversation_messages

List messages for a given Unthread conversation. Returns: ts, userId, userTeamId, botId, botName, text, subtype, conversationId, timestamp, threadTs, conversation, user, metadata. Required: conversation_id.

create_a_unthread_conversation_message

Create a new message in an Unthread conversation, posted into the Slack thread. Returns the created message including ts, text, userId, conversationId, timestamp, botName, and metadata. Required: conversation_id. Either body, blocks, or markdown must be provided.

create_a_unthread_knowledge_base_article

Create a new knowledge base article in Unthread. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: title, content.

get_single_unthread_knowledge_base_article_by_id

Get a single knowledge base article in Unthread by id. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.

update_a_unthread_knowledge_base_article_by_id

Update an existing knowledge base article in Unthread by id. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Required: id.

delete_a_unthread_knowledge_base_article_by_id

Delete a knowledge base article in Unthread by id. Returns an empty 204 response on success. Required: id.

list_all_unthread_knowledge_base_articles

List knowledge base articles in Unthread following standard list conventions with support for field selection, filtering, and sorting. Returns: id, title, content, url, status, userGroupIds, createdAt, updatedAt. Max 100 per page.

Why Truto

Why use Truto’s MCP server for Unthread

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Unthread in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Unthread account

Use Truto’s frontend SDK to connect your customer’s Unthread account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Unthread

Truto’s Proxy API is a 1-to-1 mapping of the Unthread API. You call us, we call Unthread, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Unthread’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Unthread on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How is authentication to Unthread handled?

Truto manages Unthread API credentials on behalf of your end users, so you don't need to build a token exchange, storage, or refresh layer. You call Truto's endpoints and we route the request to the correct Unthread account.

Can I sync messages bidirectionally between my product and Unthread's Slack threads?

Yes. You can list conversation messages and create new messages via the API — messages you create are natively posted into the associated Slack thread with the correct bot and user metadata.

How do I get notified when an Unthread conversation changes?

Unthread supports webhook subscriptions, which you can create, update, list, and delete through the available tools. Use them to react to conversation status changes, new messages, or tag events instead of polling.

Can I attach custom metadata from my system to Unthread customers?

Yes. The customer object supports external CRM metadata and custom fields, so you can persist ARR tier, health score, account IDs, or any other data from your product for agents to see in Slack.

How do I hand off an Unthread conversation to my own product as a linked task?

Use the create external task action on a conversation. It returns integration and provider identifiers so you can maintain a durable link between your task and the Unthread conversation for status sync.

What analytics can I pull for reporting or health scoring?

You can pull time-series reporting metrics (response and resolution times grouped by date and dimensions), list survey responses, and fetch survey analytics tied to conversations — enough to power SLA dashboards and CSAT-based signals.

Unthread

Get Unthread integrated into your app

Our team understands what it takes to make a Unthread integration successful. A short, crisp 30 minute call with folks who understand the problem.