Kit MCP
Vendor MCP96 toolsOAuth 2.1/DCRMarketingAutomationConnect to Kit MCP. Manage email subscribers, sequences, broadcasts, tags, and forms for your email marketing workflows.
Kit MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'kitmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Kit MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'kitmcp_get_account',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "kitmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Kit MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="kitmcp_get_account",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update tag name, product, landing page — [Tags] Rename an existing tag
- Subscriber remove tag from, untag, tag — [Tags] Remove a tag from a subscriber
- List tax codes, tags for a subscriber, subscribers for tag — [Products] List the Kit tax codes used to classify a product’s tax category, i.e
- Get stats for a list of broadcasts, stats for a broadcast, product — [Broadcasts] Performance analytics across many broadcasts at once
- Create product, landing page, webhook — [Products] Create a Commerce product the creator can sell — a digital download, an external URL, a paid newsletter, or a tip jar
- Subscribers bulk remove tags from, filter, bulk untag — [Tags] Remove a tag from multiple subscribers in a single call
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
kitmcp_add_subscriber_to_form#Subscribe a single email address to a Kit form. Creates the subscriber if they do not exist; returns the subscriber record.4 params
Subscribe a single email address to a Kit form. Creates the subscriber if they do not exist; returns the subscriber record.
email_addressstringrequiredSubscriber's email address (required)form_idintegerrequiredThe form ID (required). Use list_forms to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_add_subscriber_to_sequence#Enroll a single subscriber (by email) into a Kit email sequence. Use list_sequences to find the sequence ID.4 params
Enroll a single subscriber (by email) into a Kit email sequence. Use list_sequences to find the sequence ID.
email_addressstringrequiredSubscriber's email address (required)sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_add_subscribers_to_form#[STALE — upstream renamed 'bulk_add_subscribers_to_form' to 'bulk_add_subscribers_to_forms'; kept for compatibility, no longer exposed by upstream MCP server] Subscribe multiple existing subscribers to one or more forms in a single request. Batches over 100 are processed asynchronously.4 params
[STALE — upstream renamed 'bulk_add_subscribers_to_form' to 'bulk_add_subscribers_to_forms'; kept for compatibility, no longer exposed by upstream MCP server] Subscribe multiple existing subscribers to one or more forms in a single request. Batches over 100 are processed asynchronously.
additionsarrayrequiredForm subscriptions to create (required). Each item must include `form_id` and `subscriber_id`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_add_subscribers_to_forms#[Forms] Subscribe multiple existing subscribers to one or more forms in a single call, triggering the form's confirmation or incentive email for each. Use this instead of calling add_subscriber_to_form repeatedly for onboarding or lead-import workflows.
Subscribers must already exist. Each entry in `additions` requires a `form_id` and `subscriber_id`; `referrer` is optional. Use list_forms to find form IDs and list_subscribers or filter_subscribers to find subscriber IDs.
Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes.
Returns: `subscribers` (successfully added, each with id, first_name, email_address, created_at, added_at, referrer, referrer_utm_parameters) and `failures` (with error details per entry).4 params
[Forms] Subscribe multiple existing subscribers to one or more forms in a single call, triggering the form's confirmation or incentive email for each. Use this instead of calling add_subscriber_to_form repeatedly for onboarding or lead-import workflows. Subscribers must already exist. Each entry in `additions` requires a `form_id` and `subscriber_id`; `referrer` is optional. Use list_forms to find form IDs and list_subscribers or filter_subscribers to find subscriber IDs. Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes. Returns: `subscribers` (successfully added, each with id, first_name, email_address, created_at, added_at, referrer, referrer_utm_parameters) and `failures` (with error details per entry).
additionsarrayrequiredForm subscriptions to create (required). Each item must include `form_id` and `subscriber_id`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_create_custom_fields#Create multiple custom subscriber fields in one request. Use list_custom_fields to view existing fields.4 params
Create multiple custom subscriber fields in one request. Use list_custom_fields to view existing fields.
custom_fieldsarrayrequiredCustom field definitions to create (required). Each item must include `label`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_create_subscribers#Create or update multiple subscribers in one request. Batches over 100 are processed asynchronously.4 params
Create or update multiple subscribers in one request. Batches over 100 are processed asynchronously.
subscribersarrayrequiredSubscribers to upsert (required). Each item must include `email_address`; `first_name` and `state` are optional.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_create_tags#Create multiple tags in one request. Returns created tag records.4 params
Create multiple tags in one request. Returns created tag records.
tagsarrayrequiredTags to create (required). Each item must include `name`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_delete_tags#[Tags] Delete multiple tags in a single call by ID. Use this to clean up a tag taxonomy or remove tags in bulk.
Each entry in `tags` requires an `id`. Deleting a tag removes it from all subscribers (soft delete). Partial failures are reported per-entry; the batch does not fail because one entry errors (e.g. a tag id that no longer exists).
Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes.
Use list_tags to find tag IDs.
Returns: `failures` (one entry per id that could not be deleted, with error details; an empty array means all deletions succeeded).4 params
[Tags] Delete multiple tags in a single call by ID. Use this to clean up a tag taxonomy or remove tags in bulk. Each entry in `tags` requires an `id`. Deleting a tag removes it from all subscribers (soft delete). Partial failures are reported per-entry; the batch does not fail because one entry errors (e.g. a tag id that no longer exists). Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes. Use list_tags to find tag IDs. Returns: `failures` (one entry per id that could not be deleted, with error details; an empty array means all deletions succeeded).
tagsarrayrequiredTags to delete (required). Each item must include `id`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_remove_tags_from_subscribers#[Tags] Remove a tag from multiple subscribers in a single call. Prefer this over repeated remove_tag_from_subscriber calls when untagging more than a handful of subscribers.
Each entry in `taggings` requires a `tag_id` and `subscriber_id`. Partial failures are reported per-subscriber; the batch does not fail because one entry errors.
Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes.
Use list_tags to find tag IDs and list_subscribers or filter_subscribers to find subscriber IDs.
Returns: `failures` (with error details per entry; empty array means all removals succeeded).4 params
[Tags] Remove a tag from multiple subscribers in a single call. Prefer this over repeated remove_tag_from_subscriber calls when untagging more than a handful of subscribers. Each entry in `taggings` requires a `tag_id` and `subscriber_id`. Partial failures are reported per-subscriber; the batch does not fail because one entry errors. Batches of 100 or fewer are processed synchronously (200). Larger batches are queued asynchronously (202) — supply `callback_url` to receive results when processing completes. Use list_tags to find tag IDs and list_subscribers or filter_subscribers to find subscriber IDs. Returns: `failures` (with error details per entry; empty array means all removals succeeded).
taggingsarrayrequiredTag-subscriber pairs to remove (required). Each item must include `tag_id` (integer) and `subscriber_id` (integer).callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_tag_subscribers#Apply a tag to multiple subscribers in one request. Batches over 100 are processed asynchronously.4 params
Apply a tag to multiple subscribers in one request. Batches over 100 are processed asynchronously.
taggingsarrayrequiredTag-subscriber pairs to apply (required). Each item must include `tag_id` (integer) and `subscriber_id` (integer).callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_untag_subscribers#[STALE — upstream renamed 'bulk_untag_subscribers' to 'bulk_remove_tags_from_subscribers'; kept for compatibility, no longer exposed by upstream MCP server] Remove a tag from multiple subscribers in one request. Batches over 100 are processed asynchronously.4 params
[STALE — upstream renamed 'bulk_untag_subscribers' to 'bulk_remove_tags_from_subscribers'; kept for compatibility, no longer exposed by upstream MCP server] Remove a tag from multiple subscribers in one request. Batches over 100 are processed asynchronously.
taggingsarrayrequiredTag-subscriber pairs to remove (required). Each item must include `tag_id` (integer) and `subscriber_id` (integer).callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_bulk_update_subscriber_custom_field_values#Update custom field values for multiple subscribers in one request.4 params
Update custom field values for multiple subscribers in one request.
custom_field_valuesarrayrequiredCustom field updates to apply (required). Each item must include `subscriber_id`, `subscriber_custom_field_id`, and `value`.callback_urlstringoptionalURL to POST results to when the batch is processed asynchronously (batches > 100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_broadcast#Create a draft email broadcast in Kit. The broadcast is saved as a draft; scheduling and sending happen from the Kit UI.10 params
Create a draft email broadcast in Kit. The broadcast is saved as a draft; scheduling and sending happen from the Kit UI.
contentstringrequiredEmail body content in HTML (required)subjectstringrequiredEmail subject line (required)allow_starting_pointbooleanoptionalSet to true when posting adapted content from a Starting-point template (in combination with `email_template_id` set to that template's id and `content` set to the adapted body). Required only for the Starting-point + content combination; omit otherwise.descriptionstringoptionalInternal description for organizing broadcastsemail_template_idintegeroptionalEmail template ID. Use list_email_templates to find IDs.preview_textstringoptionalPreview text shown in email clientspublicbooleanoptionalWhether to publish on the creator's profile pagesession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.subscriber_filterarrayoptionalTarget audience filter. A single-element array wrapping one filter group (all/any/none). Example: [{ "all": [{ "type": "tag", "ids": [1, 2] }] }]. Only one filter group (all, any, or none) may be populated per request. Filter types allowed: 'tag' or 'segment'. Omit to target all subscribers.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_custom_field#Create a new custom subscriber field. Returns the created field record with its key.3 params
Create a new custom subscriber field. Returns the created field record with its key.
labelstringrequiredField label (required), e.g. 'Company' or 'Website'session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_landing_page#[Beta] [Landing Pages] Create a landing page from a Kit-JSON content tree. This is an early release that intentionally supports creation only — there is no update or read-back path yet, and the set of supported blocks will grow over time. The page is created as an unpublished draft; after it returns, point the creator at Kit's editor to review, tweak, and publish.
Build `content_tree` as an array of `section` blocks. A section contains either rows (a row holds 1-4 columns) or text blocks (heading/paragraph) directly. Text is an array of leaves with optional inline marks (bold/italic/underline/strikethrough/color/highlight). Colors are 6-digit hex (#RRGGBB). Omit attributes to accept the editor's defaults. Call `get_landing_page_schema` for the exact block shapes and allowed values, then build `content_tree` to match.
Optionally set `theme` to control the page's default typography and colors per element type (headings, paragraph, links, buttons, etc.). It's a sibling to `content_tree`; send only the keys you want to change — anything omitted falls back to the default theme.
If a subscribe form collects a custom field or applies tags, resolve the real ids first: call `list_custom_fields` / `list_tags`, then pass the resolved custom-field `key` and Tag `id`s into the form's fields. These reference existing account data — never invent a key or id.
Optionally set `built_with_badge` (also a sibling) to control the "Built with Kit" branding badge; hiding it requires a paid plan.
Returns: the landing page (`id`, `name`, `public_url`). The page is an unpublished draft, so `public_url` won't load until the creator publishes it — don't share it as a working link; point them to the editor to review and publish.6 params
[Beta] [Landing Pages] Create a landing page from a Kit-JSON content tree. This is an early release that intentionally supports creation only — there is no update or read-back path yet, and the set of supported blocks will grow over time. The page is created as an unpublished draft; after it returns, point the creator at Kit's editor to review, tweak, and publish. Build `content_tree` as an array of `section` blocks. A section contains either rows (a row holds 1-4 columns) or text blocks (heading/paragraph) directly. Text is an array of leaves with optional inline marks (bold/italic/underline/strikethrough/color/highlight). Colors are 6-digit hex (#RRGGBB). Omit attributes to accept the editor's defaults. Call `get_landing_page_schema` for the exact block shapes and allowed values, then build `content_tree` to match. Optionally set `theme` to control the page's default typography and colors per element type (headings, paragraph, links, buttons, etc.). It's a sibling to `content_tree`; send only the keys you want to change — anything omitted falls back to the default theme. If a subscribe form collects a custom field or applies tags, resolve the real ids first: call `list_custom_fields` / `list_tags`, then pass the resolved custom-field `key` and Tag `id`s into the form's fields. These reference existing account data — never invent a key or id. Optionally set `built_with_badge` (also a sibling) to control the "Built with Kit" branding badge; hiding it requires a paid plan. Returns: the landing page (`id`, `name`, `public_url`). The page is an unpublished draft, so `public_url` won't load until the creator publishes it — don't share it as a working link; point them to the editor to review and publish.
content_treearrayrequiredThe page content as a Kit-JSON content tree: an array of `section` blocks. Call get_landing_page_schema for the full block schema and allowed values, then build this to match. It's validated on submit — an invalid tree returns a 422 explaining what's wrong.namestringrequiredInternal name for the landing page (required).built_with_badgeobjectoptionalControl over the "Built with Kit" branding badge that renders at the bottom of the page. A sibling to content_tree/theme. Hiding it (show: false) requires a paid plan; on accounts without that entitlement the badge stays visible regardless of this setting.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.themeobjectoptionalOptional page-level theme: default typography and colors per element type (headings, paragraph, links, buttons, etc.). See get_landing_page_schema for the exact shape; send only the keys you want to change.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_product#[Products] Create a Commerce product the creator can sell — a digital download, an external URL, a paid newsletter, or a tip jar.
Prerequisites: the account needs a verified domain for the product page (its default verified domain is used unless `domain_id` says otherwise; creating fails with a clear error if there is none). Stripe doesn't need to be connected to create the product, but the creator must connect it in Kit before the product can take payments — mention that if they haven't. Coupons and upsells aren't available here; the creator adds those in Kit.
See `pricing` for the supported pricing models and each one's plan shape. Amounts are strings in the major currency unit (e.g. "5.00").
Before calling: prices and the billing model must come from the creator — ask, don't assume. Derive `path` from the product name and tell the creator the resulting public URL.
Returns: the created product in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.14 params
[Products] Create a Commerce product the creator can sell — a digital download, an external URL, a paid newsletter, or a tip jar. Prerequisites: the account needs a verified domain for the product page (its default verified domain is used unless `domain_id` says otherwise; creating fails with a clear error if there is none). Stripe doesn't need to be connected to create the product, but the creator must connect it in Kit before the product can take payments — mention that if they haven't. Coupons and upsells aren't available here; the creator adds those in Kit. See `pricing` for the supported pricing models and each one's plan shape. Amounts are strings in the major currency unit (e.g. "5.00"). Before calling: prices and the billing model must come from the creator — ask, don't assume. Derive `path` from the product name and tell the creator the resulting public URL. Returns: the created product in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.
namestringrequiredProduct name (required).pathstringrequiredURL slug for the product's checkout/landing page, e.g. 'my-ebook' (required). Must be unique within the domain.pricingobjectrequiredPricing for the product (required). An object with `pricing_type` and `plans`.
- 'standard': a single plan with an `amount`.
- 'recurring' (a subscription): each plan needs `amount`, `interval` (always "month"), and `interval_count`; set the frequency via `interval_count` (1 = monthly, 3 = quarterly, 12 = yearly) and pass multiple plans to offer several.
- 'tipjar': a single plan whose `amount` is the suggested tip (minimum "1.00"); use with product_type 'tipjar'.
- 'pay_what_you_want': a single plan whose `amount` is the minimum the buyer must pay ("0.00" for no minimum, otherwise at least "1.00"); add an optional `suggested_amount` for the pre-filled default.
- 'installments': a single plan whose `amount` is the total, split into `installments` equal charges (2 or more) billed monthly (`interval` "month", `interval_count` 1); each charge (amount / installments) must be at least "1.00".product_typestringrequiredFulfillment type (required). One of: 'download' (a hosted file — requires file_url and file_name), 'url' (an external URL — requires fulfillment_url), 'newsletter' (a paid newsletter subscription — no file or URL needed), 'something_else' (no specific fulfillment), 'tipjar' (a tip jar — use together with pricing_type 'tipjar').currencystringoptionalISO currency code for the product, e.g. 'USD'. Defaults to USD.domain_idintegeroptionalID of the verified domain that hosts the product page. Omit to use the account's default verified domain; pass one only to choose a specific domain — find the options with list_domains.file_namestringoptionalDisplay name of the delivered file. Required when product_type is 'download'.file_urlstringoptionalURL of the hosted file to deliver. Required when product_type is 'download'.fulfillment_urlstringoptionalExternal URL the buyer is sent to after purchase. Required when product_type is 'url'.max_quantityintegeroptionalOptional maximum quantity a buyer can purchase in one order. Only settable for standard pricing; must stay 1 for every other pricing type. 0 = unlimited.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.tax_code_idintegeroptionalID of the Kit tax code classifying this product for tax rates. Required (together with tax_product_type) only when the account has tax/VAT collection enabled. Use list_tax_codes to look up the available codes and pass the matching code's `id`.tax_product_typestringoptionalTax classification of the product: 'good' or 'service'. Required (together with tax_code_id) only when the account has tax/VAT collection enabled — creation fails with a tax-configuration error otherwise. Leave out for accounts not collecting tax.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_sequence#Create a new email sequence. Returns the sequence record including its ID.9 params
Create a new email sequence. Returns the sequence record including its ID.
namestringrequiredSequence name (required)email_addressstringoptionalFrom email address to use for this sequenceemail_template_idintegeroptionalEmail template ID. Use list_email_templates to find IDs.repeatbooleanoptionalWhether the sequence repeats for subscriberssend_daysarrayoptionalDays to send on (e.g. ['monday', 'wednesday', 'friday'])send_hourintegeroptionalHour of day to send (0-23)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.time_zonestringoptionalTimezone for send scheduling (e.g. 'America/New_York')user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_sequence_email#Add a new email to an existing sequence at a specified position and delay.12 params
Add a new email to an existing sequence at a specified position and delay.
delay_unitstringrequired'days' or 'hours' (required)delay_valueintegerrequiredNumber of days or hours to wait before sending this email (required). Unit is controlled by delay_unit.sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.subjectstringrequiredEmail subject line (required)contentstringoptionalEmail body content in HTMLemail_template_idintegeroptionalLayout template ID. Use list_email_templates to find IDs.positionintegeroptional0-based position in the sequence. Defaults to the end.preview_textstringoptionalPreview text shown in email clientspublishedbooleanoptionalPublish the email immediately (default: false)send_daysarrayoptionalDays of the week this email may send. Omit or pass null to allow all days (inherits the sequence schedule).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_snippet#Create a reusable content snippet (inline or block) for use in broadcasts and sequences.6 params
Create a reusable content snippet (inline or block) for use in broadcasts and sequences.
namestringrequiredSnippet name (required). Used to auto-generate the key.snippet_typestringrequired'inline' or 'block' (required). Cannot be changed after creation.contentstringoptionalText/Liquid content for inline snippets (required when snippet_type is 'inline')document_attributesobjectoptionalRich HTML content for block snippets (required when snippet_type is 'block')session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_subscriber#Create or update a single subscriber by email address (upsert). Returns the subscriber record.6 params
Create or update a single subscriber by email address (upsert). Returns the subscriber record.
email_addressstringrequiredSubscriber's email address (required)fieldsobjectoptionalCustom field values as key-value pairsfirst_namestringoptionalSubscriber's first namesession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.statestringoptionalSubscriber state (default: active)user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_tag#Create a new tag. Returns the tag record with its ID.3 params
Create a new tag. Returns the tag record with its ID.
namestringrequiredTag name (required)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_create_webhook#Register a webhook endpoint to receive Kit events. Returns the created webhook record.4 params
Register a webhook endpoint to receive Kit events. Returns the created webhook record.
eventobjectrequiredEvent configuration (required). Must include 'name' and optional filter IDs.target_urlstringrequiredURL to receive webhook POST requests (required)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_delete_broadcast#Delete a draft broadcast by ID. Only draft broadcasts can be deleted.3 params
Delete a draft broadcast by ID. Only draft broadcasts can be deleted.
broadcast_idintegerrequiredThe broadcast ID to delete (required). Use list_broadcasts to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_delete_custom_field#Delete a custom subscriber field by ID.3 params
Delete a custom subscriber field by ID.
custom_field_idintegerrequiredThe custom field ID to delete (required). Use list_custom_fields to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_delete_sequence#Delete a sequence and all its emails by ID.3 params
Delete a sequence and all its emails by ID.
idintegerrequiredThe sequence ID to delete (required). Use list_sequences to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_delete_sequence_email#Delete a single email from a sequence by email ID and sequence ID.4 params
Delete a single email from a sequence by email ID and sequence ID.
idintegerrequiredThe email ID to delete (required). Use list_sequence_emails to find IDs.sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_delete_webhook#Delete a registered webhook by ID.3 params
Delete a registered webhook by ID.
webhook_idintegerrequiredThe webhook ID to delete (required). Use list_webhooks to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_filter_subscribers#Search and filter subscribers by engagement events (opens, clicks, sends, deliveries) or sign-up date. Returns paginated results.9 params
Search and filter subscribers by engagement events (opens, clicks, sends, deliveries) or sign-up date. Returns paginated results.
afterstringoptionalPagination cursor for the next page. Use `pagination.end_cursor` from a previous response. Distinct from per-filter date ranges in `all[].after`.allarrayoptionalArray of filter conditions, AND-ed together. Each item filters by one event type (opens, clicks, sent, delivered) or by sign-up date (subscribed). Omit to match all subscribers.beforestringoptionalPagination cursor for the previous page. Use `pagination.start_cursor` from a previous response. Distinct from per-filter date ranges in `all[].before`.include_total_countbooleanoptionalIf true, include `pagination.total_count` in the response (slower).per_pageintegeroptionalResults per page (1-100).session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.sort_fieldstringoptionalField to sort by. Defaults to `id` (recommended for stable cursor pagination).sort_orderstringoptionalSort direction (default: desc).user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_account#[STALE — upstream renamed 'get_account' to 'get_current_account'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve the Kit account details for the authenticated user.2 params
[STALE — upstream renamed 'get_account' to 'get_current_account'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve the Kit account details for the authenticated user.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_account_colors#[STALE — upstream renamed 'get_account_colors' to 'list_colors'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve the custom brand color palette for the Kit account.2 params
[STALE — upstream renamed 'get_account_colors' to 'list_colors'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve the custom brand color palette for the Kit account.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_broadcast#Retrieve a single broadcast record by ID.3 params
Retrieve a single broadcast record by ID.
idintegerrequiredThe broadcast IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_broadcast_clicks#[STALE — upstream renamed 'get_broadcast_clicks' to 'get_link_clicks_for_a_broadcast'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve click data for a specific broadcast, paginated by cursor.6 params
[STALE — upstream renamed 'get_broadcast_clicks' to 'get_link_clicks_for_a_broadcast'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve click data for a specific broadcast, paginated by cursor.
idintegerrequiredThe broadcast IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_broadcast_stats#[STALE — upstream renamed 'get_broadcast_stats' to 'get_stats_for_a_broadcast'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve performance statistics (opens, clicks, etc.) for a specific broadcast.3 params
[STALE — upstream renamed 'get_broadcast_stats' to 'get_stats_for_a_broadcast'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve performance statistics (opens, clicks, etc.) for a specific broadcast.
idintegerrequiredThe broadcast IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_broadcasts_stats#[STALE — upstream renamed 'get_broadcasts_stats' to 'get_stats_for_a_list_of_broadcasts'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve aggregated performance statistics for multiple broadcasts, with optional date and status filters.8 params
[STALE — upstream renamed 'get_broadcasts_stats' to 'get_stats_for_a_list_of_broadcasts'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve aggregated performance statistics for multiple broadcasts, with optional date and status filters.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)sent_afterstringoptionalISO 8601 date or datetime (e.g. `2026-01-15` or `2026-01-15T10:00:00Z`). Only include broadcasts with `send_at >= sent_after`.sent_beforestringoptionalISO 8601 date or datetime (e.g. `2026-01-15` or `2026-01-15T10:00:00Z`). Only include broadcasts with `send_at < sent_before`.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.statusstringoptionalFilter to broadcasts in this state. Omit to return all states.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_creator_profile#Retrieve the creator profile linked to the authenticated Kit account.2 params
Retrieve the creator profile linked to the authenticated Kit account.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_current_account#[Account] Get details for the authenticated Kit account.
Returns: top-level `user` (id and email of the authenticated user) and `account` with name, plan_type, primary_email_address, created_at, sending_addresses (each with email_address, from_name, status, is_default, is_verified, is_dmarc_configured), and a structured timezone (name, friendly_name, utc_offset).
Call this only when the user asks about their account details, plan, or profile. It is not a prerequisite for subscriber, broadcast, or other work, so don't call it as a preamble.2 params
[Account] Get details for the authenticated Kit account. Returns: top-level `user` (id and email of the authenticated user) and `account` with name, plan_type, primary_email_address, created_at, sending_addresses (each with email_address, from_name, status, is_default, is_verified, is_dmarc_configured), and a structured timezone (name, friendly_name, utc_offset). Call this only when the user asks about their account details, plan, or profile. It is not a prerequisite for subscriber, broadcast, or other work, so don't call it as a preamble.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_email_stats#Retrieve overall email performance statistics for the Kit account.2 params
Retrieve overall email performance statistics for the Kit account.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_email_template#Retrieve a single email template by ID.3 params
Retrieve a single email template by ID.
idintegerrequiredThe email template ID (required). Use list_email_templates to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_growth_stats#Retrieve subscriber growth statistics for a specified date range.4 params
Retrieve subscriber growth statistics for a specified date range.
endingstringoptionalEnd date (YYYY-MM-DD). Defaults to today.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.startingstringoptionalStart date (YYYY-MM-DD). Defaults to 90 days ago.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_landing_page#[Beta] [Landing Pages] Read an existing landing page. For pages built with the current (v2) editor this returns the page content as Kit-JSON: a `content_tree` in the same format `create_landing_page` accepts, with the page-level `theme` and `built_with_badge` as siblings — use it to inspect a page or as the starting point for a new one.
Check `editor_version` first: "v2" pages include content; "v1" pages (built with the older editor) return metadata only — their content can't be read via the API, so hand the creator the editor link (`confirm_url`) for those.
Reads never lose content silently. `is_clean: true` means `content_tree` fully represents the stored page. When it is false, `warnings` lists exactly what couldn't be expressed in Kit-JSON (e.g. `unknown_block` for a block type this format doesn't cover, `dropped_prop` for styling it can't express). A page re-created from a non-clean read would lose the flagged parts — tell the creator before building on it.
A page with `last_published_at: null` is an unpublished draft; its `public_url` won't load until the creator publishes it.
Returns: `id`, `root_page_id`, `name`, `editor_version`, `created_at`, `public_url`, `last_published_at`; for v2 pages also `content_tree`, `theme` (the full document-level theme), `built_with_badge`, `warnings`, and `is_clean`.3 params
[Beta] [Landing Pages] Read an existing landing page. For pages built with the current (v2) editor this returns the page content as Kit-JSON: a `content_tree` in the same format `create_landing_page` accepts, with the page-level `theme` and `built_with_badge` as siblings — use it to inspect a page or as the starting point for a new one. Check `editor_version` first: "v2" pages include content; "v1" pages (built with the older editor) return metadata only — their content can't be read via the API, so hand the creator the editor link (`confirm_url`) for those. Reads never lose content silently. `is_clean: true` means `content_tree` fully represents the stored page. When it is false, `warnings` lists exactly what couldn't be expressed in Kit-JSON (e.g. `unknown_block` for a block type this format doesn't cover, `dropped_prop` for styling it can't express). A page re-created from a non-clean read would lose the flagged parts — tell the creator before building on it. A page with `last_published_at: null` is an unpublished draft; its `public_url` won't load until the creator publishes it. Returns: `id`, `root_page_id`, `name`, `editor_version`, `created_at`, `public_url`, `last_published_at`; for v2 pages also `content_tree`, `theme` (the full document-level theme), `built_with_badge`, `warnings`, and `is_clean`.
idintegerrequiredThe landing page IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_landing_page_schema#[Beta] [Landing Pages] Return the Kit-JSON schemas for a landing page's `content_tree` and `theme` — the exact shapes create_landing_page and update_landing_page accept. Call this first when building or editing a page, then construct `content_tree` (and optionally `theme`) to match, before calling create/update.
Returns: `content_tree` (a JSON Schema for the array of `section` blocks, with every block definition and its allowed values) and `theme` (a JSON Schema for the page-level typography/color theme). These are reference schemas, not account data — the same for every account.2 params
[Beta] [Landing Pages] Return the Kit-JSON schemas for a landing page's `content_tree` and `theme` — the exact shapes create_landing_page and update_landing_page accept. Call this first when building or editing a page, then construct `content_tree` (and optionally `theme`) to match, before calling create/update. Returns: `content_tree` (a JSON Schema for the array of `section` blocks, with every block definition and its allowed values) and `theme` (a JSON Schema for the page-level typography/color theme). These are reference schemas, not account data — the same for every account.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_link_clicks_for_a_broadcast#[Broadcasts] Get click data for a specific broadcast.
Returns: list of clicked URLs and ids with click counts.
Useful for understanding which links in a broadcast perform best.6 params
[Broadcasts] Get click data for a specific broadcast. Returns: list of clicked URLs and ids with click counts. Useful for understanding which links in a broadcast perform best.
idintegerrequiredThe broadcast IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_post#Retrieve a single Kit post (newsletter issue) by ID.3 params
Retrieve a single Kit post (newsletter issue) by ID.
idintegerrequiredThe post IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_product#[Products] Fetch a single Commerce product by ID.
Returns the `product` in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.3 params
[Products] Fetch a single Commerce product by ID. Returns the `product` in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.
idintegerrequiredID of the product to fetch (required). Find it with list_products, or use the id returned by create_product / update_product.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_purchase#Retrieve a single purchase record by ID.3 params
Retrieve a single purchase record by ID.
idintegerrequiredThe purchase IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_sequence#Retrieve a single sequence record by ID.3 params
Retrieve a single sequence record by ID.
idintegerrequiredThe sequence IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_sequence_email#Retrieve a single email within a sequence by email ID and sequence ID.4 params
Retrieve a single email within a sequence by email ID and sequence ID.
idintegerrequiredThe email ID (required). Use list_sequence_emails to find IDs.sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_snippet#Retrieve a single content snippet by ID.3 params
Retrieve a single content snippet by ID.
idintegerrequiredThe snippet ID (required). Use list_snippets to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_stats_for_a_broadcast#[Broadcasts] Get performance statistics for a single broadcast by ID. Requires a broadcast ID; use list_broadcasts first to find IDs. For stats across many broadcasts at once, use get_stats_for_a_list_of_broadcasts.
Returns: recipients, open rate, click rate, unsubscribe count, and bounce count.3 params
[Broadcasts] Get performance statistics for a single broadcast by ID. Requires a broadcast ID; use list_broadcasts first to find IDs. For stats across many broadcasts at once, use get_stats_for_a_list_of_broadcasts. Returns: recipients, open rate, click rate, unsubscribe count, and bounce count.
idintegerrequiredThe broadcast IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_stats_for_a_list_of_broadcasts#[Broadcasts] Performance analytics across many broadcasts at once. Use this when the goal is performance analysis or building a stats leaderboard across multiple sends. This is not the listing tool: to browse or find broadcasts, use list_broadcasts. For the stats of a single broadcast, use get_stats_for_a_broadcast after finding its ID with list_broadcasts.
Returns: paginated array of broadcasts, each with `id`, `subject`, `send_at`, and `stats` (recipients, open rate, click rate, unsubscribes, total clicks, `status`, etc.). Supports cursor pagination, an optional date-range filter on `send_at`, and a `status` filter (each broadcast's `stats.status` is one of `draft | scheduled | sending | completed | aborted`).8 params
[Broadcasts] Performance analytics across many broadcasts at once. Use this when the goal is performance analysis or building a stats leaderboard across multiple sends. This is not the listing tool: to browse or find broadcasts, use list_broadcasts. For the stats of a single broadcast, use get_stats_for_a_broadcast after finding its ID with list_broadcasts. Returns: paginated array of broadcasts, each with `id`, `subject`, `send_at`, and `stats` (recipients, open rate, click rate, unsubscribes, total clicks, `status`, etc.). Supports cursor pagination, an optional date-range filter on `send_at`, and a `status` filter (each broadcast's `stats.status` is one of `draft | scheduled | sending | completed | aborted`).
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)sent_afterstringoptionalISO 8601 date or datetime (e.g. `2026-01-15` or `2026-01-15T10:00:00Z`). Only include broadcasts with `send_at >= sent_after`.sent_beforestringoptionalISO 8601 date or datetime (e.g. `2026-01-15` or `2026-01-15T10:00:00Z`). Only include broadcasts with `send_at < sent_before`.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.statusstringoptionalFilter to broadcasts in this state. Omit to return all states.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_subscriber#Retrieve a single subscriber record by ID, including their custom fields.3 params
Retrieve a single subscriber record by ID, including their custom fields.
idintegerrequiredThe subscriber IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_subscriber_stats#[STALE — upstream renamed 'get_subscriber_stats' to 'list_stats_for_a_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve engagement statistics for a single subscriber.3 params
[STALE — upstream renamed 'get_subscriber_stats' to 'list_stats_for_a_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve engagement statistics for a single subscriber.
idintegerrequiredThe subscriber IDsession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_get_subscriber_tags#[STALE — upstream renamed 'get_subscriber_tags' to 'list_tags_for_a_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve all tags applied to a specific subscriber, paginated.6 params
[STALE — upstream renamed 'get_subscriber_tags' to 'list_tags_for_a_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Retrieve all tags applied to a specific subscriber, paginated.
idintegerrequiredThe subscriber IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_broadcasts#List all broadcasts with optional status filter and cursor pagination.7 params
List all broadcasts with optional status filter and cursor pagination.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra fields to include per broadcast. `content` adds the full HTML body (can be large — only request when needed).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.statusstringoptionalFilter to broadcasts in this state. Omit to return all states.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_colors#[Account] Get the brand color palette for this Kit account.
Returns: array of hex color strings (e.g. ["#FF6900", "#FCB900"]).
Useful for understanding the creator's brand identity.2 params
[Account] Get the brand color palette for this Kit account. Returns: array of hex color strings (e.g. ["#FF6900", "#FCB900"]). Useful for understanding the creator's brand identity.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_custom_fields#List all custom subscriber fields in the account.5 params
List all custom subscriber fields in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_domains#[Domains] List the account's domains.
Returns: `domains` — each with `id`, `domain` (the hostname) and `verified`. Only verified domains can host pages (landing pages, product pages); an unverified domain must finish verification in Kit before it can be used. Accounts typically have one or two domains. An empty list means the account has no domains yet and needs to add one in Kit.2 params
[Domains] List the account's domains. Returns: `domains` — each with `id`, `domain` (the hostname) and `verified`. Only verified domains can host pages (landing pages, product pages); an unverified domain must finish verification in Kit before it can be used. Accounts typically have one or two domains. An empty list means the account has no domains yet and needs to add one in Kit.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_email_templates#List all email templates in the account.5 params
List all email templates in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_form_subscribers#[STALE — upstream renamed 'list_form_subscribers' to 'list_subscribers_for_form'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers on a specific form, paginated.7 params
[STALE — upstream renamed 'list_form_subscribers' to 'list_subscribers_for_form'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers on a specific form, paginated.
idintegerrequiredThe form ID. Use list_forms to find IDs.afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_forms#List all forms in the account with optional status filter.6 params
List all forms in the account with optional status filter.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.statusstringoptionalForm status (default: active)user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_landing_pages#[Beta] [Landing Pages] List the account's landing pages (both the classic builder and the current v2 editor), newest first.
Returns a slim array — metadata only per page: `id`, `root_page_id`, `name`, `editor_version`, `created_at`, `last_published_at`. No page content and no `public_url` (fetch those per page with get_landing_page), to keep the list fast. `editor_version` tells you which pages are v2 — those are readable and editable here: call get_landing_page for a page's content, then update_landing_page to change it. Classic (v1) pages are listed but can't be read or edited via the API.5 params
[Beta] [Landing Pages] List the account's landing pages (both the classic builder and the current v2 editor), newest first. Returns a slim array — metadata only per page: `id`, `root_page_id`, `name`, `editor_version`, `created_at`, `last_published_at`. No page content and no `public_url` (fetch those per page with get_landing_page), to keep the list fast. `editor_version` tells you which pages are v2 — those are readable and editable here: call get_landing_page for a page's content, then update_landing_page to change it. Classic (v1) pages are listed but can't be read or edited via the API.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_posts#List all Kit newsletter posts with optional cursor pagination.6 params
List all Kit newsletter posts with optional cursor pagination.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.include_contentbooleanoptionalSet to true to include the full HTML body of each post. Omit (or set false) for a slim response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_products#[Products] List the account's Commerce products — everything the creator sells, including tip jars.
Returns: paginated `products`, each with `id`, `name`, `currency`, `product_type`, `pricing_type`, `published` (whether the product can take purchases — false for every product until the creator connects Stripe, so don't read it as the creator having unpublished anything), `prices` (each plan's `amount` as a string in the major currency unit — for installment plans this is the total split across the plan — plus `interval`/`interval_count` for recurring and installment pricing, `installments` (the number of charges) for installment plans, and `suggested_amount` for pay-what-you-want plans), `max_quantity` (0 = unlimited; only settable for standard pricing), `tax_product_type` and `tax_code_id` (null unless the creator configured tax — resolve the id to a name with list_tax_codes), `file_name` (the attached file for download products, null otherwise; the file's location is never returned), `edit_url` (the product's management page in Kit — share it when the creator wants to customize or configure a product) and `url` (the public storefront page — the link to share with the creator's audience).5 params
[Products] List the account's Commerce products — everything the creator sells, including tip jars. Returns: paginated `products`, each with `id`, `name`, `currency`, `product_type`, `pricing_type`, `published` (whether the product can take purchases — false for every product until the creator connects Stripe, so don't read it as the creator having unpublished anything), `prices` (each plan's `amount` as a string in the major currency unit — for installment plans this is the total split across the plan — plus `interval`/`interval_count` for recurring and installment pricing, `installments` (the number of charges) for installment plans, and `suggested_amount` for pay-what-you-want plans), `max_quantity` (0 = unlimited; only settable for standard pricing), `tax_product_type` and `tax_code_id` (null unless the creator configured tax — resolve the id to a name with list_tax_codes), `file_name` (the attached file for download products, null otherwise; the file's location is never returned), `edit_url` (the product's management page in Kit — share it when the creator wants to customize or configure a product) and `url` (the public storefront page — the link to share with the creator's audience).
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_prompt_suggestions#Retrieve suggested prompts to help the user get started with Kit via AI.2 params
Retrieve suggested prompts to help the user get started with Kit via AI.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_purchases#List all purchase records in the account, paginated.5 params
List all purchase records in the account, paginated.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_segments#List all subscriber segments in the account.5 params
List all subscriber segments in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_sequence_emails#List all emails in a specific sequence.7 params
List all emails in a specific sequence.
sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.include_contentbooleanoptionalInclude HTML content in each email (default: false)per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_sequence_subscribers#[STALE — upstream renamed 'list_sequence_subscribers' to 'list_subscribers_for_sequence'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers enrolled in a specific sequence.7 params
[STALE — upstream renamed 'list_sequence_subscribers' to 'list_subscribers_for_sequence'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers enrolled in a specific sequence.
idintegerrequiredThe sequence IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_sequences#List all email sequences in the account.5 params
List all email sequences in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_snippets#List all content snippets in the account with optional type and archive filters.8 params
List all content snippets in the account with optional type and archive filters.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.archivedbooleanoptionaltrue to list archived snippets, false (default) for active onesbeforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.include_contentbooleanoptionalInclude content and document fields in each snippet (default: false)per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.snippet_typestringoptionalFilter by type: 'inline' or 'block'user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_stats_for_a_subscriber#[Subscribers] Get engagement statistics for a specific subscriber by ID. Returns (under `subscriber.stats`): `sent`, `opened`, `clicked`, `bounced`, `open_rate`, `click_rate`, `last_sent`, `last_opened`, `last_clicked`, `sends_since_last_open`, `sends_since_last_click`. Use `email_sent_after`/`email_sent_before` (YYYY-MM-DD) to scope to a date range.5 params
[Subscribers] Get engagement statistics for a specific subscriber by ID. Returns (under `subscriber.stats`): `sent`, `opened`, `clicked`, `bounced`, `open_rate`, `click_rate`, `last_sent`, `last_opened`, `last_clicked`, `sends_since_last_open`, `sends_since_last_click`. Use `email_sent_after`/`email_sent_before` (YYYY-MM-DD) to scope to a date range.
idintegerrequiredThe subscriber IDemail_sent_afterstringoptionalISO 8601 date (YYYY-MM-DD). Scope stats to emails sent on or after this date. Must be on or after 2024-12-31 (the event floor) or the API returns 400.email_sent_beforestringoptionalISO 8601 date (YYYY-MM-DD). Scope stats to emails sent on or before this date.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_subscribers#List all subscribers with optional status, sort, and cursor pagination.9 params
List all subscribers with optional status, sort, and cursor pagination.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses). `canceled_at` requires `status` set to `cancelled` (otherwise the API returns 422).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.sort_fieldstringoptionalSort by `id` (default, recommended for stable cursor pagination), `created_at`, or `updated_at`.sort_orderstringoptionalSort direction: asc or descstatusstringoptionalFilter by subscriber state. Defaults to active when omitted. Use `all` to include every state.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_subscribers_for_form#[Forms] List subscribers who signed up through a specific form.
By default returns a slim response: id, email_address, first_name, state, created_at, added_at — no custom fields. Add `"fields"` to `include` only when you need custom field values.
Use list_forms first to find the form ID.8 params
[Forms] List subscribers who signed up through a specific form. By default returns a slim response: id, email_address, first_name, state, created_at, added_at — no custom fields. Add `"fields"` to `include` only when you need custom field values. Use list_forms first to find the form ID.
idintegerrequiredThe form ID. Use list_forms to find IDs.afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).include_total_countbooleanoptionalIf true, include `pagination.total_count` in the response (slower).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_subscribers_for_sequence#[Sequences] List subscribers in a specific sequence.
By default returns a slim response: id, email_address, first_name, state, created_at, added_at — no custom fields. Add `"fields"` to `include` only when you need custom field values.
Use list_sequences first to find the sequence ID.8 params
[Sequences] List subscribers in a specific sequence. By default returns a slim response: id, email_address, first_name, state, created_at, added_at — no custom fields. Add `"fields"` to `include` only when you need custom field values. Use list_sequences first to find the sequence ID.
idintegerrequiredThe sequence IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).include_total_countbooleanoptionalIf true, include `pagination.total_count` in the response (slower).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_subscribers_for_tag#[Tags] List all subscribers who have a specific tag.
By default returns a slim response: id, email_address, first_name, state, created_at, tagged_at — no custom fields. Add `"fields"` to `include` only when you need custom field values.
Use list_tags first to find the tag ID.8 params
[Tags] List all subscribers who have a specific tag. By default returns a slim response: id, email_address, first_name, state, created_at, tagged_at — no custom fields. Add `"fields"` to `include` only when you need custom field values. Use list_tags first to find the tag ID.
idintegerrequiredThe tag ID. Use list_tags to find IDs.afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).include_total_countbooleanoptionalIf true, include `pagination.total_count` in the response (slower).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_tag_subscribers#[STALE — upstream renamed 'list_tag_subscribers' to 'list_subscribers_for_tag'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers who have a specific tag applied.7 params
[STALE — upstream renamed 'list_tag_subscribers' to 'list_subscribers_for_tag'; kept for compatibility, no longer exposed by upstream MCP server] List all subscribers who have a specific tag applied.
idintegerrequiredThe tag ID. Use list_tags to find IDs.afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.includearrayoptionalExtra data to include per subscriber. `fields` adds custom field values (omit for slim responses).per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_tags#List all tags in the account.5 params
List all tags in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_tags_for_a_subscriber#[Subscribers] List all tags applied to a specific subscriber.
Returns: array of tags with IDs and names.
Useful for understanding how a subscriber is categorized.6 params
[Subscribers] List all tags applied to a specific subscriber. Returns: array of tags with IDs and names. Useful for understanding how a subscriber is categorized.
idintegerrequiredThe subscriber IDafterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_tax_codes#[Products] List the Kit tax codes used to classify a product's tax category, i.e. to choose a product's `tax_code_id` when creating or updating a product.
Returns: `tax_collection_enabled` — whether this account collects tax (VAT, GST, or US sales tax) — and `tax_codes`, each with `id`, `name`, and `description`. When `tax_collection_enabled` is false the account doesn't collect tax, `tax_codes` is empty, and products don't need a `tax_code_id`. When true, match the product to a code by its `name`/`description` and pass that code's `id`.2 params
[Products] List the Kit tax codes used to classify a product's tax category, i.e. to choose a product's `tax_code_id` when creating or updating a product. Returns: `tax_collection_enabled` — whether this account collects tax (VAT, GST, or US sales tax) — and `tax_codes`, each with `id`, `name`, and `description`. When `tax_collection_enabled` is false the account doesn't collect tax, `tax_codes` is empty, and products don't need a `tax_code_id`. When true, match the product to a code by its `name`/`description` and pass that code's `id`.
session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_list_webhooks#List all registered webhooks in the account.5 params
List all registered webhooks in the account.
afterstringoptionalCursor for next page. Use `pagination.end_cursor` from a previous response.beforestringoptionalCursor for previous page. Use `pagination.start_cursor` from a previous response.per_pageintegeroptionalResults per page (1-100)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_remove_tag_from_subscriber#[Tags] Remove a tag from a subscriber. For removing a tag from more than one subscriber at once, use bulk_remove_tags_from_subscribers instead.
Use list_tags to find tag IDs, and list_subscribers_for_tag or get_subscriber to find subscriber IDs.4 params
[Tags] Remove a tag from a subscriber. For removing a tag from more than one subscriber at once, use bulk_remove_tags_from_subscribers instead. Use list_tags to find tag IDs, and list_subscribers_for_tag or get_subscriber to find subscriber IDs.
subscriber_idintegerrequiredThe subscriber ID (required)tag_idintegerrequiredThe tag ID (required). Use list_tags to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_tag_subscriber#Apply a tag to a subscriber identified by email address.4 params
Apply a tag to a subscriber identified by email address.
email_addressstringrequiredSubscriber's email address (required)tag_idintegerrequiredThe tag ID (required). Use list_tags to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_unsubscribe#Cancel a subscriber's subscription by subscriber ID.3 params
Cancel a subscriber's subscription by subscriber ID.
subscriber_idintegerrequiredThe subscriber ID (required). Use list_subscribers or get_subscriber to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_untag_subscriber#[STALE — upstream renamed 'untag_subscriber' to 'remove_tag_from_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Remove a tag from a subscriber by subscriber ID and tag ID.4 params
[STALE — upstream renamed 'untag_subscriber' to 'remove_tag_from_subscriber'; kept for compatibility, no longer exposed by upstream MCP server] Remove a tag from a subscriber by subscriber ID and tag ID.
subscriber_idintegerrequiredThe subscriber ID (required)tag_idintegerrequiredThe tag ID (required). Use list_tags to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_account_colors#[STALE — upstream renamed 'update_account_colors' to 'update_colors'; kept for compatibility, no longer exposed by upstream MCP server] Update the custom brand color palette for the Kit account.3 params
[STALE — upstream renamed 'update_account_colors' to 'update_colors'; kept for compatibility, no longer exposed by upstream MCP server] Update the custom brand color palette for the Kit account.
colorsarrayrequiredArray of up to 10 hex color codes (e.g. ["#FF6900", "#FCB900"]). Replaces the existing palette entirely.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_broadcast#Update a draft broadcast's subject, content, or audience filter.10 params
Update a draft broadcast's subject, content, or audience filter.
broadcast_idintegerrequiredThe broadcast ID (required). Use list_broadcasts to find IDs.contentstringoptionalEmail body content in HTMLdescriptionstringoptionalInternal descriptionemail_template_idintegeroptionalEmail template IDpreview_textstringoptionalPreview text shown in email clientspublicbooleanoptionalWhether to publish on the creator's profile pagesession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.subjectstringoptionalEmail subject linesubscriber_filterarrayoptionalTarget audience filter. A single-element array wrapping one filter group (all/any/none). Example: [{ "all": [{ "type": "tag", "ids": [1, 2] }] }]. Only one filter group (all, any, or none) may be populated per request. Filter types allowed: 'tag' or 'segment'. Omit to leave current filter unchanged.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_colors#[Account] Replace the brand color palette for this Kit account.
Accepts up to 10 hex color codes (e.g. ["#FF6900", "#FCB900"]).
Overwrites the existing palette entirely, so include every color you want to keep.
Use list_colors first to fetch the current palette before editing.3 params
[Account] Replace the brand color palette for this Kit account. Accepts up to 10 hex color codes (e.g. ["#FF6900", "#FCB900"]). Overwrites the existing palette entirely, so include every color you want to keep. Use list_colors first to fetch the current palette before editing.
colorsarrayrequiredArray of up to 10 hex color codes (e.g. ["#FF6900", "#FCB900"]). Replaces the existing palette entirely.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_custom_field#Rename a custom subscriber field by ID.4 params
Rename a custom subscriber field by ID.
custom_field_idintegerrequiredThe custom field ID (required). Use list_custom_fields to find IDs.labelstringrequiredNew field label (required)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_landing_page#[Beta] [Landing Pages] Replace the content of an existing landing page. Only pages built with the current (v2) editor can be updated — check `editor_version` from get_landing_page first; v1 pages can't be edited via the API.
The page's content becomes exactly the `content_tree` you send (a full replace, not a merge). `theme` and `built_with_badge` are gentler: omitted keys keep the page's current values, so only send what you want to change. The intended workflow is read-edit-write: call get_landing_page, edit the returned `content_tree`, then call this tool.
If the stored page contains content that can't be expressed as Kit-JSON (get_landing_page returned `is_clean: false`), a full replace would permanently lose the flagged parts, so the update is rejected with a conflict listing the warnings. Show the creator what would be lost, and only retry with `allow_content_loss: true` after they explicitly accept it. Never set it pre-emptively.
Updating never publishes: a published page keeps serving its previous version until the creator republishes from the editor, and a draft stays a draft. Share the `confirm_url` so they can review and publish. If the creator has this page open in Kit's editor, tell them to reload it after the update — the editor doesn't pick up API changes on its own, and saving from a stale tab would overwrite them.
Same content rules as create_landing_page: build `content_tree` as an array of `section` blocks, omit attributes to accept the editor's defaults, and resolve real tag ids / custom-field keys via list_tags / list_custom_fields — never invent them.
Returns the updated page's metadata. To confirm the stored result, call get_landing_page again.8 params
[Beta] [Landing Pages] Replace the content of an existing landing page. Only pages built with the current (v2) editor can be updated — check `editor_version` from get_landing_page first; v1 pages can't be edited via the API. The page's content becomes exactly the `content_tree` you send (a full replace, not a merge). `theme` and `built_with_badge` are gentler: omitted keys keep the page's current values, so only send what you want to change. The intended workflow is read-edit-write: call get_landing_page, edit the returned `content_tree`, then call this tool. If the stored page contains content that can't be expressed as Kit-JSON (get_landing_page returned `is_clean: false`), a full replace would permanently lose the flagged parts, so the update is rejected with a conflict listing the warnings. Show the creator what would be lost, and only retry with `allow_content_loss: true` after they explicitly accept it. Never set it pre-emptively. Updating never publishes: a published page keeps serving its previous version until the creator republishes from the editor, and a draft stays a draft. Share the `confirm_url` so they can review and publish. If the creator has this page open in Kit's editor, tell them to reload it after the update — the editor doesn't pick up API changes on its own, and saving from a stale tab would overwrite them. Same content rules as create_landing_page: build `content_tree` as an array of `section` blocks, omit attributes to accept the editor's defaults, and resolve real tag ids / custom-field keys via list_tags / list_custom_fields — never invent them. Returns the updated page's metadata. To confirm the stored result, call get_landing_page again.
content_treearrayrequiredThe page content as a Kit-JSON content tree: an array of `section` blocks. Call get_landing_page_schema for the full block schema and allowed values, then build this to match. It's validated on submit — an invalid tree returns a 422 explaining what's wrong.idintegerrequiredThe landing page IDallow_content_lossbooleanoptionalConfirm replacing a page whose stored content can't be fully expressed as Kit-JSON, permanently discarding the parts listed in the conflict warnings. Only set true after the creator has seen what would be lost and explicitly accepted it.built_with_badgeobjectoptionalControl over the "Built with Kit" branding badge that renders at the bottom of the page. A sibling to content_tree/theme; omitted keys keep the page's current badge settings. Hiding it (show: false) requires a paid plan.namestringoptionalNew internal name for the landing page. Omit to keep the current name.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.themeobjectoptionalOptional page-level theme: default typography and colors per element type (headings, paragraph, links, buttons, etc.). See get_landing_page_schema for the exact shape; send only the keys you want to change.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_product#[Products] Update a Commerce product. Only the fields you pass change — everything else keeps its current value, so to rename a product just send `name`. Omit any field you don't want to change.
Fixed at creation and not updatable here: the pricing model (one-time vs subscription vs tip jar), the currency, and the fulfillment type (download vs URL vs newsletter) — for those, share the product's `edit_url` so the creator can change them in Kit. When you pass `pricing`, its `plans` replace the product's plans wholesale, so include every plan the product should end up with.
Monetary amounts are strings in the major currency unit (e.g. "5.00" for $5.00).
Before calling: price changes must come from the creator — never assume amounts. Changing `path` or `domain_id` changes the product's public URL; mention the new URL.
Returns: the updated product in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.13 params
[Products] Update a Commerce product. Only the fields you pass change — everything else keeps its current value, so to rename a product just send `name`. Omit any field you don't want to change. Fixed at creation and not updatable here: the pricing model (one-time vs subscription vs tip jar), the currency, and the fulfillment type (download vs URL vs newsletter) — for those, share the product's `edit_url` so the creator can change them in Kit. When you pass `pricing`, its `plans` replace the product's plans wholesale, so include every plan the product should end up with. Monetary amounts are strings in the major currency unit (e.g. "5.00" for $5.00). Before calling: price changes must come from the creator — never assume amounts. Changing `path` or `domain_id` changes the product's public URL; mention the new URL. Returns: the updated product in the same shape as list_products entries — `id`, `name`, `currency`, `product_type`, `pricing_type`, `published`, `prices`, `max_quantity`, `tax_product_type`, `tax_code_id`, `file_name`, `edit_url` and the public page `url`.
idintegerrequiredID of the product to update (required). Find it with list_products.domain_idintegeroptionalID of the verified domain that hosts the product page. Pass it to move the page to another of the account's verified domains — find the options with list_domains.file_namestringoptionalNew display name of the delivered file. Only applies to 'download' products.file_urlstringoptionalNew URL of the hosted file to deliver. Only applies to 'download' products.fulfillment_urlstringoptionalNew URL the buyer is sent to after purchase. Only applies to 'url' products.max_quantityintegeroptionalNew maximum quantity a buyer can purchase in one order. Only settable for standard pricing; must stay 1 for every other pricing type. 0 = unlimited.namestringoptionalNew product name.pathstringoptionalNew URL slug for the product's checkout/landing page, e.g. 'my-ebook'. Must be unique within the domain.pricingobjectoptionalReplacement plans — they replace all current plans, and the pricing model can't change, so match the product's existing type.
- 'standard': a single plan with an `amount`.
- 'recurring' (a subscription): each plan needs `amount`, `interval` (always "month"), and `interval_count`; set the frequency via `interval_count` (1 = monthly, 3 = quarterly, 12 = yearly) and pass multiple plans for several.
- 'tipjar': a single plan whose `amount` is the suggested tip.
- 'pay_what_you_want': a single plan whose `amount` is the minimum ("0.00" for no minimum, otherwise at least "1.00"); add an optional `suggested_amount` for the pre-filled default.
- 'installments': a single plan whose `amount` is the total, split into `installments` equal charges (2 or more) billed monthly (`interval` "month", `interval_count` 1); each charge (amount / installments) must be at least "1.00".session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.tax_code_idintegeroptionalID of the Kit tax code classifying this product for tax rates. Only relevant when the account has tax/VAT collection enabled. Use list_tax_codes to look up the available codes and pass the matching code's `id`.tax_product_typestringoptionalTax classification of the product: 'good' or 'service'. Only relevant when the account has tax/VAT collection enabled.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_sequence#Update sequence settings such as name, send days, or active state.12 params
Update sequence settings such as name, send days, or active state.
idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.activebooleanoptionalWhether the sequence is activeemail_addressstringoptionalFrom email addressemail_template_idintegeroptionalEmail template IDholdbooleanoptionalWhether the sequence is on holdnamestringoptionalNew sequence namerepeatbooleanoptionalWhether the sequence repeatssend_daysarrayoptionalDays to send onsend_hourintegeroptionalHour of day to send (0-23)session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.time_zonestringoptionalTimezone for send schedulinguser_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_sequence_email#Update an existing sequence email's subject, content, delay, or position.13 params
Update an existing sequence email's subject, content, delay, or position.
idintegerrequiredThe email ID (required). Use list_sequence_emails to find IDs.sequence_idintegerrequiredThe sequence ID (required). Use list_sequences to find IDs.contentstringoptionalEmail body content in HTMLdelay_unitstringoptional'days' or 'hours'delay_valueintegeroptionalNumber of days or hours to wait before sending this email. Unit is controlled by delay_unit.email_template_idintegeroptionalLayout template ID. Use list_email_templates to find IDs.positionintegeroptional0-based position in the sequencepreview_textstringoptionalPreview text shown in email clientspublishedbooleanoptionalPublish or unpublish the emailsend_daysarrayoptionalDays of the week this email may send. To reset to the full weekly schedule, pass all 7 values explicitly.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.subjectstringoptionalEmail subject lineuser_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_snippet#Update a content snippet's name, content, or archived state.7 params
Update a content snippet's name, content, or archived state.
idintegerrequiredThe snippet ID (required). Use list_snippets to find IDs.archivedbooleanoptionaltrue to archive, false to restorecontentstringoptionalNew text/Liquid content (inline snippets only)document_attributesobjectoptionalNew HTML content (block snippets only)namestringoptionalNew snippet namesession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_subscriber#Update a subscriber's email, name, or custom field values by subscriber ID.6 params
Update a subscriber's email, name, or custom field values by subscriber ID.
subscriber_idintegerrequiredThe subscriber ID (required). Use list_subscribers or filter_subscribers to find IDs.email_addressstringoptionalNew email addressfieldsobjectoptionalCustom field values to update as key-value pairsfirst_namestringoptionalNew first namesession_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_tag#[STALE — upstream renamed 'update_tag' to 'update_tag_name'; kept for compatibility, no longer exposed by upstream MCP server] Rename a tag by ID.4 params
[STALE — upstream renamed 'update_tag' to 'update_tag_name'; kept for compatibility, no longer exposed by upstream MCP server] Rename a tag by ID.
namestringrequiredNew tag name (required)tag_idintegerrequiredThe tag ID (required). Use list_tags to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.kitmcp_update_tag_name#[Tags] Rename an existing tag.
Use list_tags to find the tag ID. Returns: the updated tag record.4 params
[Tags] Rename an existing tag. Use list_tags to find the tag ID. Returns: the updated tag record.
namestringrequiredNew tag name (required)tag_idintegerrequiredThe tag ID (required). Use list_tags to find IDs.session_idstringoptionalUUID v4 identifier for grouping tool calls in the same conversation. Generate once at the start of the session and reuse it on every call.user_goalstringoptionalWhat the creator is trying to accomplish with this tool call. Pick the closest match; use 'unknown' only when no category fits.