Connect your AI Agents to Kit in minutes

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

Available tools

get_account

Get the authenticated Kit account and the user the API key belongs to, including the plan and the confirmed sending addresses. Use this before createbroadcast or createsequence to pick a sending address Kit will accept.

get_creator_profile

Get the account's public creator profile: display name, byline, bio and public URL. Kit answers 404 when the account has never set one up.

get_account_colors

List the brand colors configured on the account. Call this before updateaccountcolors, which replaces the whole list rather than appending to it.

update_account_colors

Replace the account's brand colors with the list supplied. Kit overwrites the whole list, so call getaccountcolors first and include every color you want to keep.

get_email_stats

Get account-wide email performance: sends, opens, clicks and the bounce and unsubscribe rates over Kit's reporting window. Use getbroadcaststats for one broadcast instead.

get_growth_stats

Get subscriber growth over a date window: new subscribers, cancellations and the net change. Omit both dates for Kit's default window of the last 90 days.

list_broadcasts

List broadcasts with optional status and sent-date filters. Set slim to true to drop each broadcast's HTML body from the payload. Use this to find a broadcast_id.

get_broadcast

Get one broadcast by ID, including its body, audience and schedule. Use list_broadcasts to find broadcast IDs.

get_broadcast_stats

Get delivery and engagement statistics for one broadcast: recipients, opens, clicks and unsubscribes. Use listbroadcaststats for every broadcast at once.

list_broadcast_stats

List every broadcast with its delivery statistics, filtered by status and sent date. Use getbroadcaststats for one broadcast instead of paging this report.

list_broadcast_clicks

List per-link click totals for one sent broadcast. Kit answers 404 for a broadcast that has not been sent, so check status with get_broadcast first.

create_broadcast

Create a broadcast. It stays a draft unless sendat is set. Kit rejects an unconfirmed emailaddress with a 422 but still creates the draft, so do not retry on that error or you will accumulate duplicates; use getaccount to pick a confirmed sending address, and listemail_templates for a template ID.

update_broadcast

Update a broadcast's subject, body, schedule or audience. Only the fields you set are sent, so the rest keep their current values. Use list_broadcasts to find IDs.

delete_broadcast

Permanently delete a broadcast. The inverse of createbroadcast. Use listbroadcasts to find broadcast IDs.

list_segments

List the account's saved subscriber segments. Use this to find a segment before referencing it in a broadcast audience. The Kit API exposes no segment create, update or delete endpoint, so segments are managed in the Kit app.

list_email_templates

List the email templates available to broadcasts and sequences. Call this to find an emailtemplateid for createbroadcast, createsequence or createsequenceemail.

list_posts

List the account's published newsletter posts. Leave includecontent null for the much smaller metadata-only payload and use getpost to read one body. Match a post to its broadcast through publication_id.

get_post

Get one published post by ID, including its body. Use list_posts to find post IDs.

list_snippets

List reusable content snippets, filtered by kind and archived state. Leave includecontent null for the smaller metadata-only payload. Use this to find a snippetid.

get_snippet

Get one snippet by ID, including its content. Use list_snippets to find snippet IDs.

create_snippet

Create an inline content snippet that broadcasts and sequence emails can reuse. Kit derives the snippet key from the name.

update_snippet

Update an inline snippet's name or content, or archive and restore it with archived. Only the fields you set are sent. The Kit API defines no snippet-delete endpoint, so archiving is how a snippet is retired. Use list_snippets to find IDs.

list_custom_fields

List the account's custom fields. Call this before createsubscriber or updatesubscriber to learn the field keys accepted in their fields map.

create_custom_field

Create a custom field from a label. Kit derives the field key from the label and returns it; that key is what createsubscriber and updatesubscriber take in their fields map. Labels must be unique in the account.

update_custom_field

Rename a custom field. Use listcustomfields to find IDs. Kit keeps the original key, so existing personalization tags and subscriber values keep working.

delete_custom_field

Permanently delete a custom field and the values stored against it on every subscriber. Use listcustomfields to find IDs.

list_forms

List the account's forms and landing pages, filtered by lifecycle state and type. Use this to find a form_id before adding a subscriber or creating a form-scoped webhook. The Kit API has no single-form endpoint, so read a form from this list.

list_form_subscribers

List the subscribers who joined through one form, with optional state and date filters. Use list_forms to find form IDs. Kit's list indexes lag writes by up to a few minutes.

add_subscriber_to_form

Add an existing subscriber to a form by subscriber ID, which triggers the form's automations. Use listforms for form IDs and listsubscribers for subscriber IDs. Use addsubscribertoformby_email when you only have an email address.

add_subscriber_to_form_by_email

Add a subscriber to a form by email address. Kit answers 404 when no subscriber has that address, so call createsubscriber first. Use addsubscribertoform when you already hold the subscriber ID.

list_sequence_emails

List the emails in one sequence, in send order. Leave includecontent null for the much smaller metadata-only payload and use getsequenceemail to read one body. Use listsequences to find sequence IDs.

get_sequence_email

Get one email from a sequence, including its body and delay. Use listsequenceemails to find sequence-email IDs.

create_sequence_email

Add an email to a sequence. Kit requires a subject and a delay before sending. Use listsequences for sequence IDs and listemail_templates for a template ID.

update_sequence_email

Update one email in a sequence. Only the fields you set are sent, so the rest keep their current values. Use listsequenceemails to find sequence-email IDs.

delete_sequence_email

Permanently delete one email from a sequence. The inverse of createsequenceemail. Use listsequenceemails to find sequence-email IDs.

list_sequences

List the account's sequences, optionally with their send statistics. Use this to find a sequence_id before adding subscribers, reading its emails or creating a sequence-scoped webhook.

get_sequence

Get one sequence by ID, optionally with its send statistics. Use list_sequences to find sequence IDs.

create_sequence

Create a sequence. Use getaccount for a confirmed sending address and listemail_templates for a template ID. Kit answers 403 on plans that do not include sequence creation.

update_sequence

Update a sequence's name, sending address or schedule. Only the fields you set are sent, so the rest keep their current values. Use list_sequences to find sequence IDs.

delete_sequence

Permanently delete a sequence and the emails inside it. The inverse of createsequence. Use listsequences to find sequence IDs.

list_sequence_subscribers

List the subscribers enrolled in one sequence, with optional state and date filters. Use list_sequences to find sequence IDs. Kit's list indexes lag writes by up to a few minutes.

add_subscriber_to_sequence

Enroll an existing subscriber in a sequence by subscriber ID. Use listsequences for sequence IDs and listsubscribers for subscriber IDs. Use addsubscribertosequenceby_email when you only have an email address.

add_subscriber_to_sequence_by_email

Enroll a subscriber in a sequence by email address. Use listsequences to find sequence IDs. Use addsubscribertosequence when you already hold the subscriber ID.

list_subscribers

List subscribers with optional state, date and email filters, and server-side sorting. Use searchsubscribers for engagement or tag conditions. Kit's list index lags writes by up to a few minutes, so use getsubscriber to read back a just-created subscriber.

search_subscribers

Search subscribers with Kit's condition grammar: opens, clicks, tags, attribution and custom-field conditions. Use listsubscribers for plain state or date filters. Use listtags and list_forms to find the IDs the conditions reference.

get_subscriber

Get one subscriber by ID, including their custom-field values and location. This read is immediately consistent, unlike list_subscribers, so use it to confirm a write.

get_subscriber_stats

Get one subscriber's email engagement: sends, opens, clicks, bounces and the time since their last open or click. Use list_subscribers to find subscriber IDs.

list_subscriber_tags

List the tags applied to one subscriber, each with the time it was applied. Use listtagsubscribers for the other direction.

create_subscriber

Create a subscriber, or update the existing one with the same email address — Kit upserts on email. Use listcustomfields for the keys accepted in fields. Kit ignores state for an address it already holds.

update_subscriber

Update a subscriber's email address, first name or custom-field values. Kit requires an email address on every update, so pass the current one when changing other fields. Use listcustomfields for the accepted field keys.

unsubscribe_subscriber

Unsubscribe a subscriber, moving them to the cancelled state. This revokes consent and Kit treats it as permanent, so there is no re-subscribe tool. Use list_subscribers to find subscriber IDs.

set_subscriber_location

Set the location Kit holds for a subscriber. Kit requires countrycode, latitude and longitude together and rejects a partial location. Use deletesubscriber_location to clear it.

delete_subscriber_location

Clear the location Kit holds for a subscriber. The inverse of setsubscriberlocation. Use list_subscribers to find subscriber IDs.

list_tags

List the account's tags, newest first. Use this to find a tagid before tagging a subscriber, creating a tag-scoped webhook or filtering subscribers. Page forward with pageinfo.end_cursor.

create_tag

Create a tag. Kit returns the existing tag instead of a duplicate when the name is already taken, so this is safe to call repeatedly. This connector exposes no tag delete; a tag created here can be renamed with update_tag.

update_tag

Rename a tag. Use list_tags to find tag IDs. Subscribers keep the tag through a rename.

list_tag_subscribers

List the subscribers carrying one tag, with optional state and date filters. Use list_tags to find tag IDs. Kit's list indexes lag writes by up to a few minutes, so a just-tagged subscriber may not appear immediately.

tag_subscriber

Apply a tag to an existing subscriber by subscriber ID. Use listtags for tag IDs and listsubscribers for subscriber IDs. Use tagsubscriberby_email when you only have an email address.

tag_subscriber_by_email

Apply a tag to a subscriber identified by email address, creating the subscriber when the address is new. Use listtags to find tag IDs. Use tagsubscriber when you already hold the subscriber ID.

remove_tag_from_subscriber

Remove a tag from a subscriber by subscriber ID. Use listtagsubscribers to see who carries a tag. Kit answers success even when the subscriber did not have the tag.

remove_tag_from_subscriber_by_email

Remove a tag from a subscriber identified by email address. Use removetagfromsubscriber when you already hold the subscriber ID. Use listtags to find tag IDs.

validate_credential

Validate the Kit API key with a lightweight account lookup. Returns success plus a message explaining any failure.

list_webhooks

List the account's registered webhooks and the events they fire on. Use this to find a webhook_id before deleting one.

create_webhook

Register a webhook that POSTs to a URL when one Kit event fires. Scope-specific events need their ID: use listforms, listtags or list_sequences to find it. Kit registers one event per webhook, so call this once per event.

delete_webhook

Delete a webhook so Kit stops posting its event. The inverse of createwebhook. Use listwebhooks to find webhook IDs.

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 Kit  MCP server

FAQs on using Merge's Kit  MCP server

Explore other MCP servers built and managed by Merge

pylon
Pylon
quartr
Quartr
quickbooks_online
QuickBooks Online
ramp
Ramp
readme
ReadMe
render
Render
reo
Reo.dev
rootly
Rootly
sabre
Sabre
salesforce
Salesforce
salesforce_data_360
Salesforce Data 360
salesforce_marketing_cloud
Salesforce Marketing Cloud
sanity
Sanity
sapsf
SAP SuccessFactors
sendgrid
SendGrid
sentry
Sentry
servicenow
ServiceNow
sharepoint
SharePoint
sharepoint_gcc
SharePoint GCC High
shopify
Shopify
sigma_computing
Sigma Computing
slack
Slack
slackbot
Slackbot
smartadvocate
SmartAdvocate

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