Connect your AI Agents to ClearFeed in minutes

Merge lets you securely connect your agents to ClearFeed and thousands of tools instantly

Available tools

list_customers

List ClearFeed customers (accounts your team supports) newest first, filterable by creation time, cursor-paginated. Use searchcustomers to find a customer by email domain. Returns customer IDs and versions for getcustomer and update_customer.

search_customers

Search ClearFeed customers by email domains (any or all), filterable by creation time, cursor-paginated. Filtering by external CRM ID is not currently supported by the ClearFeed API. Use list_customers to browse everything instead.

get_customer

Get one ClearFeed customer by ID: domains, channels, owner, portal settings, custom field values, CRM link and current version (needed by updatecustomer). Use listcustomers or search_customers for IDs.

create_customer

Create a ClearFeed customer with name and optional owner, domains, channels, collection (listcollections), portal access and custom field values (IDs from listcustomfields with entitytype='customer'). Returns the customer with its ID.

update_customer

Update a ClearFeed customer; only fields you pass change, and lists replace the old ones. Requires the current version from getcustomer (a stale version fails with a conflict: re-fetch and retry). Custom field IDs come from listcustomfields with entitytype='customer'.

create_announcement

Turn an existing Slack message (channelid + messagets) into a ClearFeed announcement and send it now or schedule it to Slack channels and/or collections (IDs from listcollections). A channel recipient must already be monitored by a collection. Returns the announcement ID for getannouncement, getannouncementmetrics and resync_announcement.

get_announcement

Get a ClearFeed announcement's status (pending, scheduled, sent) and per-channel delivery results, with collection recipients expanded to channels. The ID comes from createannouncement. For reactions and replies use getannouncement_metrics.

get_announcement_metrics

Get engagement for a sent ClearFeed announcement: reactions, replies and per-channel top reactions, reply timestamps and linked request IDs. Metrics are available only after delivery finishes. After createannouncement(action='sendnow'), wait a few seconds and retry if the API returns 400 'Metrics are only available for sent announcements' (delivery may take a few seconds to finish).

resync_announcement

Push the current text of a sent ClearFeed announcement's source Slack message to every delivered copy (edits them in place; does not resend). Use after editing the source message. At least one channel must have received the announcement; if every recipient failed, ClearFeed returns 406 'Only sent announcements can be resynced'.

list_quick_replies

List all ClearFeed Quick Replies (saved HTML responses) with the collections each is available in.

create_quick_reply

Create a ClearFeed Quick Reply (saved HTML response) with a unique name, available in all collections or in specific ones (IDs from list_collections). Call once per reply to import many.

list_sla_policies

List ClearFeed SLA policies with their response/resolution targets and the collections using them. Returns the slapolicyid that clone_collection accepts.

get_sla_policy

Get one ClearFeed SLA policy's targets, conditions and collections. Use listslapolicies for IDs.

create_sla_policy

Create a ClearFeed SLA policy (admin token required) with conditional first-response/resolution targets in minutes (exactly one default) and/or per-priority one-touch targets. It is not applied to any collection; apply it via clonecollection's slapolicy_id.

query_insights

Query ClearFeed reporting metrics on requests: measures (counts, first response/resolution times and percentiles, SLA breaches, CSAT, virtual agent) over a time dimension and date range, grouped by dimensions (priority, state, collection, assignee, customer, custom field) with filters.

list_audit_logs

List ClearFeed audit log entries (admin token required): who did what to which resource, from where, filterable by system, actor email, operation, resource type, source and time window. Newest first, cursor-paginated via pageinfo.nextcursor.

list_requests

List ClearFeed requests (support conversations/tickets) with filters: collection, channel, states, requester emails, created/updated time window, sort order. Cursor-paginated: pass pageinfo.nextcursor for the next page. Use searchrequests for full-text search. Returns request IDs for getrequest and update_request.

search_requests

Search ClearFeed request messages by full text (e.g. 'login error'), best match first, with optional collection and created-date filters. Filtering by customer is not currently supported by the ClearFeed API. Returns request IDs, titles, states and a matching snippet; use getrequest for details or listrequests to browse by state or date.

get_request

Get one ClearFeed request by ID: state, priority, assignee, customer, linked tickets, SLA metrics, custom field values; optionally its messages and parent/child request IDs. Use listrequests or searchrequests to find IDs, or getrequestbyslackmessage when you only have a Slack thread.

get_request_by_slack_message

Find the ClearFeed request for a Slack thread or message, given the Slack workspace ID, request channel ID and any non-private message timestamp in the thread. Use when you have a Slack link but no ClearFeed request ID. Returns the same request object as get_request.

create_request

Create a ClearFeed request in the account's API collection using the default form. Description is HTML; title and priority are AI-generated when omitted. Requires an API collection in the account. To use a specific form or route to a collection, use create_ticket. Returns the new request ID.

add_request_message

Post a reply on an existing ClearFeed request's thread, as yourself or as the ClearFeed bot, or add a private internal note (isprivate=true) visible only to the support team. Use listrequests or search_requests to find the request ID.

update_request

Update a ClearFeed request: state, priority, title, assignee (user ID; use listusers to resolve an email), custom field values (IDs from listcustomfields), or mark it as not a request (alone). Closed requests cannot change. Use listrequests or search_requests for the ID.

merge_requests

Merge a source ClearFeed request into a target: moves its messages and participants to the target and DELETES the source. Both must share account, collection and channel (Slack or Telegram). ClearFeed may refuse a merge with 422 'Cannot merge requests that have external tickets.'; this is surfaced as a validation error. Use list_requests for IDs.

import_requests

Bulk-import 1-50 historical requests (with full message history, requester, assignee, state, priority) into ClearFeed's API collection, e.g. when migrating from another helpdesk. external_id deduplicates for 2 weeks. Returns a per-item status (created/duplicate/failed) and the new request IDs.

list_ticket_forms

List ClearFeed ticket forms, filterable by enabled state and integration type, newest first, cursor-paginated. Call this first to get the formid that createticket requires (use integration_type='clearfeed', enabled=true).

get_ticket_form

Get one ClearFeed ticket form by ID with its integration type and field definitions (which keys and custom field IDs are required on create). Use listticketforms to find form IDs; use before create_ticket.

create_ticket

Create a ClearFeed ticket via an enabled ClearFeed-type form. Use listticketforms for formid and getticketform/listcustomfields for required custom field IDs. Omit ishidden fields; the API rejects them. Assignee/contributors are emails; assignedteam is a team sourceid from list_teams. ClearFeed returns only the new ticket ID; no ClearFeed tool takes a ticket ID.

link_ticket

Link an existing Zendesk ticket or ClickUp task to a ClearFeed request, identified either by requestid (from listrequests) or by Slack messagets + channelid, not both. ClickUp links can be tasks (istask). Optional syncconfig overrides comment sync and the link alert for this link only.

validate_credential

Check that the ClearFeed API token works by listing collections. Returns success and a message. Run this first if other tools fail with a permission error.

list_collections

List all ClearFeed collections (groups of monitored channels sharing one support config) with their IDs, owners, ticketing/CSAT config and SLA policy. Set includechannels=true to also get each collection's monitored channel IDs, needed by movechannel, removechannel and listrequests.

add_collection_channels

Start monitoring Slack channels by adding them to a ClearFeed collection (collection ID from listcollections). On Customer-Centric Inbox accounts each channel can link an existing customer (from listcustomers) or create a new one. Channel IDs come from Slack (ClearFeed cannot list unmonitored channels). All-or-nothing: one bad channel fails the call. Undo with remove_channel.

clone_collection

Create a new Slack collection by copying an existing one's configuration (ticketing, responders, assignment, SLA, emojis). Source ID from listcollections; optionally add request channels, a triage channel (existing ID or a new name) and an SLA policy (from listsla_policies). Returns the new collection.

move_channel

Move a monitored Slack channel to another ClearFeed collection. Channel IDs come from listcollections with includechannels=true; the destination collection ID from list_collections (not the web-app URL ID).

remove_channel

Stop monitoring a Slack channel: removes it from its ClearFeed collection (the Slack channel itself is not deleted). Inverse of addcollectionchannels. Channel IDs come from listcollections with includechannels=true.

list_custom_fields

List ClearFeed custom fields for requests (default) or customers, with IDs, types, versions and select options (option IDs). Call this before setting customfieldvalues in updaterequest, createticket or updatecustomer, and to get the version that updatecustom_field requires.

create_custom_field

Create a ClearFeed custom field for requests or customers: select, multiselect (with options), text, date, number, userselect or attachment. Type and entity type are fixed once created. Returns the field with its ID and option IDs. Remove with deletecustomfield.

update_custom_field

Update a ClearFeed custom field's name or config (select options, text length). Call listcustomfields first for its ID, type and current version; send the full option list for selects (existing options keep their id). A stale version fails with a conflict.

delete_custom_field

Delete a ClearFeed custom field and its values. Use listcustomfields to find the field ID.

list_teams

List ClearFeed teams (synced from Slack user groups) with IDs, active flag and Slack user-group sourceid (used as assignedteam in createticket). Set includemembers=true to get member user IDs.

get_team

Get one ClearFeed team by ID, optionally with its member user IDs. Use list_teams to find team IDs.

list_users

Look up users of the connected Slack workspace by Slack user IDs or by emails (exactly one, up to 100). Use it to turn an email into the user ID that update_request's assignee needs, or to name the user IDs in requests and teams.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's ClearFeed  MCP server

FAQs on using Merge's ClearFeed  MCP server

Explore other MCP servers built and managed by Merge

google_tasks
Google Tasks
google_workspace
Google Workspace
grafana
Grafana
granola
Granola
greenhouse
Greenhouse
guru
Guru
hex
Hex
hibob
HiBob
hubspot
HubSpot
intercom
Intercom
ironclad
Ironclad
iterable
Iterable
jamf
Jamf Pro
jenkins
Jenkins
jira
Jira
jira_data_center
Jira Data Center & Server
jira_service_management
Jira Service Management
jumpcloud
JumpCloud
kintone
Kintone
convertkit
Kit
klaviyo
Klaviyo
launchdarkly
LaunchDarkly
linear
Linear
linkedin
LinkedIn

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now