Skip to main content
Glama
Sequenzy

Sequenzy MCP Server

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SEQUENZY_API_KEYYesYour API key from sequenzy.com/settings/api-keys

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_accountA

Get current account information including available companies. IMPORTANT: If you have access to multiple companies, you MUST either:

  1. Call select_company first to choose which company to work with, OR

  2. Pass companyId explicitly in each tool call

The response shows 'companies' (all available) and 'selectedCompanyId' (currently active). All subsequent operations will use the selected company unless you pass a companyId override.

select_companyA

Select which company to operate on (for user-scoped API keys with access to multiple companies). Use get_account to see available companies. After selecting, all subsequent operations will use this company unless you pass a companyId override.

get_app_urlsA

Generate Sequenzy dashboard URLs for known resource IDs. Use this when the user asks where to review or edit a generated sequence, campaign, template, or company settings. If companyId is omitted, the selected/current company is used when available.

create_companyA

Create a new company/brand. This will parse your website to extract brand information. The tool polls every 20 seconds until the company is fully processed (typically 30-60 seconds).

get_companyA

Get company details, processing status, and effective email localization settings

create_api_keyA

Create a new API key for a company. Use this when setting up Sequenzy integration in a project. The returned key should be saved to the project's .env file as SEQUENZY_API_KEY. The key can only be retrieved once at creation time.

list_websitesA

List all configured sender websites/domains

add_websiteA

Add a new sender website. Takes ~30 seconds to process.

check_websiteA

Check if a website has been processed and is ready to use

get_integration_guideA

Get code examples for integrating Sequenzy into your project.

CRITICAL - FOR SAAS/SUBSCRIPTION APPS: If the app uses Stripe, Polar, Paddle, Dodo, or Creem - tell the user to connect it in Sequenzy dashboard (Settings → Integrations). The native integration automatically handles all payment events and customer tags - no code needed!

CRITICAL - FOR E-COMMERCE STORES: If the store runs on Shopify or WooCommerce - tell the user to connect the native integration in the dashboard instead (it syncs products, orders, and customers automatically). For any other e-commerce stack (custom checkouts, CheckoutChamp, Sticky.io, headless storefronts), use the 'ecommerce' use case to integrate via the Commerce API.

Only provide manual event tracking code if the user explicitly asks for it.

Use cases:

  • 'transactional': Sending one-off emails (welcome, password reset, receipts)

  • 'subscribe_form': Adding subscribers from signup forms

  • 'event_tracking': Tracking CUSTOM events only (not payment events - those come from the integration)

  • 'ecommerce': Connecting a custom e-commerce platform via the Commerce API (sync products, push orders/checkouts, power abandoned cart + back-in-stock automations)

Before implementing, use create_api_key to generate an API key and save it to .env as SEQUENZY_API_KEY.

add_subscriberC

Add a new subscriber to your list

update_subscriberA

Update an existing subscriber's attributes or tags

remove_subscriberB

Unsubscribe or delete a subscriber

get_subscriberA

Get the full subscriber profile, including tags, list memberships, sequence enrollments, email stats, and recent activity

search_subscribersA

Search subscribers by free-text query, tags, list, or segment. If you omit limit, the tool fetches all pages and returns every match.

list_productsA

List synced products (Stripe, Shopify, WooCommerce) including any attached digital delivery file. Useful before attaching a file or building a purchase sequence for a specific product.

upsert_productsA

Create or update products in the catalog (Commerce API, keyed by your productId, stored under the api provider). Use this to add products that are not synced from Stripe/Shopify/WooCommerce, then attach a deliverable file with attach_product_file and build a purchase sequence for them.

delete_productA

Delete a product previously pushed via upsert_products (Commerce API products only), identified by your productId.

attach_product_fileA

Attach a distributable file to a product, either by public URL or by uploading a local file (filePath, local MCP server only). After a purchase of the product, sequence emails can link to it with {{event.download.url}} and {{event.download.name}}.

remove_product_fileB

Remove the attached distributable file from a product.

sync_productsA

Queue a sync of the Stripe product catalog into the products list. Requires an active Stripe integration.

list_tagsA

List all tags in the account

create_tagA

Create a new tag definition. The name is normalized to lowercase with hyphens (e.g. 'VIP Customer' becomes 'vip-customer'). Color defaults to gray.

update_tagA

Update a tag's color. System tags cannot be updated.

delete_tagA

Permanently delete a tag and remove it from all subscribers. This cannot be undone. System tags and tags used by sequences cannot be deleted.

list_listsA

List all subscriber lists

create_listB

Create a new subscriber list

update_listA

Update a subscriber list's name, description, or privacy. Only the provided fields are changed.

delete_listA

Permanently delete a subscriber list and remove all of its memberships. Subscribers themselves are kept. This cannot be undone.

add_subscribers_to_listA

Bulk add existing or new subscribers to a subscriber list from an email array. Existing subscribers are added to the list without requiring a per-subscriber update call.

remove_subscribers_from_listA

Remove subscribers from a list by email address. Maximum 500 emails per call. Subscribers stay in the account; only the list membership is removed. Returns the removed count plus a notFound array of emails that did not match a subscriber.

list_segmentsC

List all segments

create_segmentA

Create a new segment from explicit filter rules. Use filters plus filterJoinOperator for flat legacy rules, or root for nested AND/OR groups such as { "kind": "group", "joinOperator": "and", "children": [{ "kind": "filter", "field": "attribute", "operator": "gte", "value": "mrr:50" }, { "kind": "group", "joinOperator": "or", "children": [{ "kind": "filter", "field": "tag", "operator": "contains", "value": "vip" }, { "kind": "filter", "field": "event", "operator": "is_not", "value": "saas.purchase:30d" }] }] }. Supports event and segment fields, Stripe product purchase/current/trial/date filters, and campaign-specific engagement filters.

update_segmentA

Update a segment's name and/or filter rules. Use the same filters plus filterJoinOperator or nested root shapes as create_segment; providing filters or root replaces the segment's existing rules.

delete_segmentA

Permanently delete a segment. This cannot be undone. Subscribers are not affected.

get_segment_countA

Get the number of subscribers in a segment

list_audience_syncsA

List Meta custom audience syncs (segment -> ad audience mappings) with their schedule and last sync status. Requires the Meta Ads integration to be connected in the dashboard.

list_ad_accountsA

List the Meta ad accounts available through the connected Meta Ads integration. Use the returned account id as adAccountId when creating an audience sync.

create_audience_syncA

Push a segment to a Meta custom audience and keep it synced on a schedule. Provide segmentId for an existing segment OR predefinedSegmentId for a ready-made template (for example "zero-ltv", "no-purchase-1y", "recent-buyers", "high-spenders-ecom", "non-buyers", "engaged") - the template segment is created automatically on first use. The first upload runs immediately. Note: audiences are add-only; subscribers who later leave the segment stay in the Meta audience.

update_audience_syncA

Update an audience sync's frequency or pause/resume it (isActive).

delete_audience_syncA

Remove an audience sync mapping. The Meta audience itself is kept (running ads are not disrupted) - only future syncs stop.

sync_audience_nowA

Trigger an immediate upload of the segment's subscribers to its Meta custom audience, outside the regular schedule.

list_templatesA

List all email templates, including per-locale localization sync status

get_templateA

Get a template's details, content, and all localized variants with sync status

create_templateA

Create a new email template

update_templateA

Update an existing template. At least one of name, subject, html, blocks, or labels is required, and only those update fields are accepted.

delete_templateC

Delete a template

list_ab_testsA

List A/B tests and their variants

get_ab_testA

Get A/B test details, variants, and per-locale localization sync status

get_ab_test_statsA

Get A/B test aggregate stats and per-variant stats. Supports period or custom start/end ranges.

restart_ab_testA

Run another sequence A/B test after a winner is selected. By default the winner becomes the new control; pass sourceVariantId to use another variant as the control email.

update_ab_test_variantA

Update a draft A/B test variant. Provide at least one of subject, previewText, html, or blocks. Use either html or blocks, not both.

create_ab_testA

Create a campaign A/B test. Control variant A is created automatically from the campaign's current email; optionally provide extra variants. The campaign must be in draft or rejected status, and each campaign can only have one A/B test.

add_ab_test_variantA

Add a variant to a draft campaign A/B test. Variants cannot be added after the test has started.

delete_ab_test_variantA

Permanently delete a variant from a draft campaign A/B test. This cannot be undone. Variant A is the control and cannot be deleted, and the test must keep at least the minimum number of variants. Variants cannot be removed after the test has started.

delete_ab_testA

Permanently delete a campaign A/B test and all of its variants. This cannot be undone. Running tests (testing or winner_selected) cannot be deleted, and the linked campaign must be in draft or rejected status.

list_campaignsC

List all campaigns

get_campaignB

Get campaign details and stats

get_email_sendA

Get a sent email by emailSendId, including the stored HTML body when available and the ClickHouse event timeline. If the short-lived email send row has been cleaned up, returns the retained ClickHouse events and a sparse summary.

create_campaignB

Create a new campaign (as draft)

update_campaignC

Update a draft campaign

schedule_campaignA

Schedule a draft or already scheduled campaign. Returns dashboard edit and preview URLs.

send_test_emailA

Send a test email to a single address

cancel_campaignA

Cancel a campaign. Stops scheduled and sending campaigns (also works for paused and approval-pending ones). Remaining emails will not be sent and the campaign cannot be restarted - this cannot be undone.

pause_campaignA

Pause a campaign that is currently sending. Only campaigns in sending status can be paused. Use resume_campaign to continue delivery later.

resume_campaignA

Resume a paused campaign. Only campaigns in paused status can be resumed. Optionally spread the remaining delivery over a number of hours.

delete_campaignA

Permanently delete a campaign. This cannot be undone. Sending, scheduled, or paused campaigns must be cancelled with cancel_campaign first.

duplicate_campaignA

Duplicate a campaign as a new draft. mode 'campaign' (default) copies the campaign and its email, 'ab_test' also duplicates the campaign's A/B test with all variants, and 'variant' copies a single variant's content as the new campaign email (requires variantId).

list_landing_pagesC

List all landing pages for a company

get_landing_pageB

Get landing page details, content, metrics, and URLs

create_landing_pageA

Create a draft landing page. Provide content for an exact page, or a template for generated starter content.

update_landing_pageA

Edit a landing page's name, slug, or full content. Provide at least one update field.

delete_landing_pageC

Delete a landing page

publish_landing_pageA

Publish a landing page. Optional name, slug, or content updates are saved before publishing.

unpublish_landing_pageA

Unpublish a landing page and return it to draft status. Optional name, slug, or content updates are saved first.

connect_landing_page_domainA

Connect a custom domain for published landing pages. Returns the DNS target and verification records.

update_landing_page_domain_settingsA

Update landing page domain settings. Provide domain to replace the custom domain, verify true to refresh verification, or both.

list_sequencesB

List all email sequences (automations)

get_sequenceA

Get sequence details plus editable step content. The response includes sequence.emails with each step's nodeId, linked emailId, subject, previewText, and blocks.

create_sequenceA

Create a new email sequence. Provide either a goal for AI generation or explicit steps. Explicit steps can include email content and create_discount actions; emails after a discount action can use merge tags such as {{discount.code}} and {{discount.percentOff}}. For AI-generated sequences, the tool polls until emails are generated (typically 30-60 seconds).

IMPORTANT GUIDELINES:

  1. NEVER ENABLE SEQUENCES AUTOMATICALLY:

    • Sequences are created in DRAFT/PAUSED state

    • NEVER call enable_sequence unless the user EXPLICITLY asks to enable/activate

    • The user must review the AI-generated content before going live

    • Sequences send real emails to real people - enabling without review is dangerous

  2. KEEP IT SIMPLE: Only suggest sequences that are straightforward to implement:

    • Prefer 3-5 emails per sequence (not 10+)

    • Use simple, achievable triggers that the app already tracks

    • Avoid complex multi-step sequences that require extensive app changes

  3. MATCH THE BUSINESS MODEL:

    • If the app has NO trial period, do NOT create trial-related sequences

    • If the app is FREE (no paid plans), do NOT create upgrade/pricing sequences

    • If the app is a one-time purchase (not SaaS), do NOT create subscription sequences

    • Match sequences to events and features that ACTUALLY exist in the app

  4. EVENT TRACKING: When you use a custom event (not a built-in event), you MUST:

    • The event will be auto-created in Sequenzy

    • The response includes eventTrackingCode showing exactly what code to add to the app

    • Tell the user what specific user action should trigger each event

    • Be specific: "Track 'project.created' when user creates their first project"

  5. MATCHING FIELD ENROLLMENT:

    • Use enrollmentMode: "matching_field" only with trigger: "event_received".

    • Use enrollmentFieldPath for custom event payload fields, for example "order.id" or "product.providerVariantId".

    • This blocks duplicate active runs for the same subscriber + field value, but still allows separate active runs for different products, variants, orders, or other event-scoped objects.

    • Leave enrollmentFieldPath empty for Shopify back-in-stock and replenishment events so Sequenzy uses its built-in product/variant matching defaults.

  6. SEQUENCE TRIGGER RECIPES - USE THESE EXACT CONFIGURATIONS:

    TRIAL CONVERSION:

    • trigger: tag_added, tagName: "trial"

    • Auto-stops when: user gets "customer" tag

    • Goal: Convert trial users to paying customers

    PAYMENT RECOVERY / DUNNING:

    • trigger: tag_added, tagName: "past-due"

    • Auto-stops when: user no longer has "past-due" tag (they paid)

    • Goal: Recover failed payments before churn

    CANCELLATION RECOVERY / WIN-BACK:

    • trigger: tag_added, tagName: "cancelled"

    • Auto-stops when: user gets "customer" tag again

    • Goal: Win back users who cancelled

    CHURN RECOVERY:

    • trigger: tag_added, tagName: "churned"

    • Auto-stops when: user gets "customer" tag again

    • Goal: Re-engage churned users

    UPGRADE / UPSELL:

    • trigger: tag_added, tagName: "customer"

    • Auto-stops when: user triggers "saas.upgrade" event

    • Goal: Encourage customers to upgrade to higher plans

      ONBOARDING:

      • trigger: event_received, eventName: "signup.completed"

      • Auto-stops when: "onboarding.completed" event fires

      • Goal: Guide new users through product setup

      PRODUCT / ORDER-SCOPED EVENT SEQUENCE:

      • trigger: event_received, eventName: "ecommerce.order_placed"

      • enrollmentMode: "matching_field", enrollmentFieldPath: "order.id"

      • Goal: Run one active sequence per specific order without duplicate active runs for the same order

      SINGLE-PRODUCT PURCHASE SEQUENCE (e.g. digital product delivery):

      • trigger: event_received, eventName: "ecommerce.order_placed", propertyFilters: [{ path: "lineItems[].providerProductId", operator: "equals", value: "" }]

      • For Stripe purchases use eventName: "saas.purchase" with propertyFilters: [{ path: "productIds", operator: "equals", value: "prod_XXX" }]

      • To match any of several products, use operator "one_of" with an array value: [{ path: "lineItems[].providerProductId", operator: "one_of", value: ["", ""] }]

      • Goal: Only start the sequence when a specific product was purchased

    WELCOME SERIES:

    • trigger: contact_added (optionally with listId)

    • No auto-stop (runs to completion)

    • Goal: Introduce new subscribers to your brand

    SEGMENT ENTRY:

    • trigger: segment_entered, segmentId: "segment-id"

    • No auto-stop by default

    • Goal: Start a sequence when contacts newly qualify for a saved segment

    RE-ENGAGEMENT:

    • trigger: inactivity, eventName: "login", inactiveDays: 14

    • Auto-stops when: user logs in again

    • Goal: Bring back inactive users

IMPORTANT - PAYMENT PROVIDER INTEGRATION: If the app uses Stripe, Polar, Paddle, Dodo, or Creem - tell the user to connect it in Sequenzy dashboard (Settings → Integrations). Once connected, the native integration automatically handles:

  • All saas.* events (purchase, cancelled, churn, payment_failed, etc.)

  • All status tags (customer, trial, cancelled, churned, past-due, etc.)

  • Subscription attributes (MRR, plan name, billing interval)

Only offer manual tracking if the user explicitly asks for it.

DISCOUNT ACTION STEPS:

  • Use explicit steps with { "type": "create_discount", "discount": { "discountType": "percent", "percentOff": 20, "duration": "once", "appliesToAllPlans": true, "maxRedemptions": 1, "codePrefix": "SAVE" } }.

  • Optionally add "lockToSubscriber": true for Stripe discounts only when the subscriber is expected to have a matching Stripe customer.

  • Discount actions currently require Stripe; connect Stripe before enabling the sequence.

  • Put the discount action before the email that references it with {{discount.code}}.

CUSTOM EVENTS (these DO require manual tracking):

  • onboarding.completed - User finished setup wizard

  • feature.used - User engaged with a key feature

  • project.created - User created their first project

  • team.invited - User invited a team member

  • milestone.reached - User hit a usage milestone For custom events, provide the tracking code snippet from get_integration_guide.

BUILT-IN TAGS (auto-applied by payment integrations):

  • "customer" = PAYING customer with active subscription (use this for upgrade sequences, customer-only content)

  • "trial" = Currently on free trial (use for trial conversion sequences)

  • "lead" = Signed up but never paid (use for nurture sequences)

  • "cancelled" = Cancelled but still has access until period ends (use for win-back sequences)

  • "churned" = Subscription ended, no longer paying (use for re-engagement)

  • "past-due" = Payment failed, at risk of churning (use for dunning/recovery sequences)

  • "refunded" = Received a refund

  • "saas.monthly" / "saas.yearly" = Billing interval

BUILT-IN EVENTS (auto-fired by payment integrations):

  • saas.purchase, saas.purchase.monthly, saas.purchase.yearly - New subscription

  • saas.cancelled - User cancelled (still has access)

  • saas.churn - Subscription ended

  • saas.payment_failed - Card declined/expired

  • saas.upgrade, saas.downgrade - Plan changes

  • saas.trial_started, saas.trial_will_end, saas.trial_ended - Trial lifecycle

  • saas.refund - Refund issued

OTHER BUILT-IN EVENTS:

  • email.opened, email.clicked, email.replied, email.bounced, email.unsubscribed

  • contact.subscribed, contact.unsubscribed

update_sequenceA

Update an existing sequence. To target a specific step, use the emailId or nodeId returned in get_sequence.sequence.emails. You can also update enrollmentMode and enrollmentFieldPath for event-triggered matching-field enrollment. When inserting an if/else branch, include steps for every branch arm and elseSteps so the branch is usable immediately. Branch conditions support tags, lists, saved segments, custom events, clicked links, and subscriber field comparisons.

enable_sequenceA

Enable/activate a sequence. IMPORTANT: Only call this when the user EXPLICITLY asks to enable or activate a sequence. Never enable sequences automatically after creation - the user must review the content first.

disable_sequenceC

Disable/pause a sequence

enroll_subscribers_in_sequenceA

Manually enroll subscribers in a sequence by email address or subscriber ID. Maximum 500 total targets per call across emails and subscriberIds. Only active subscribers are enrolled: unknown emails are returned in notFound, while inactive, unavailable, and already actively enrolled subscribers are counted in skipped. By default enrollment starts at the first step after the trigger; pass targetNodeId to start at a specific step.

cancel_sequence_enrollmentsA

Cancel active/waiting enrollments in one sequence. Provide sequenceId and exactly one target: subscriberId for one subscriber, or fieldValues to match stored entry event properties. For fieldValues, fieldPath is optional when the sequence has enrollmentFieldPath configured; otherwise provide a dot path such as order.id.

delete_sequenceB

Delete a sequence

list_transactional_emailsA

List transactional email templates, including their API slugs and linked email IDs

get_transactional_emailA

Get a transactional email by ID or slug, including subject, preview text, blocks, variables, and linked dashboard URLs

create_transactional_emailA

Create a saved transactional email template with an API slug. Provide prompt to generate the email with AI, or provide either html or Sequenzy blocks for the email body.

update_transactional_emailA

Update a transactional email by ID or slug. At least one of name, enabled, subject, previewText, html, or blocks is required. Use html or blocks to replace the linked email body.

send_emailA

Send a transactional email to a single recipient

get_statsB

Get overview statistics for a time period

get_campaign_statsA

Get detailed statistics for a campaign, including attributed conversions and revenue (revenueCents)

get_sequence_statsA

Get statistics for a sequence, including attributed conversions and revenue (revenueCents) plus per-step failed subscribers and failure reasons

get_subscriber_activityA

Get recent activity, email stats, and current sequence enrollments for a subscriber

list_team_membersA

List team members for the company, including the owner, members with their roles, and pending or expired invitations.

invite_team_memberA

Invite a team member by email with role admin or viewer. Existing Sequenzy users are added to the team immediately; others receive an email invitation. Billing access (canManageBilling) can only be granted by the company owner.

cancel_team_invitationA

Cancel a pending team invitation. Invitations that have already been accepted cannot be cancelled.

list_conversationsA

List inbox conversations (email replies from subscribers). Filter by status, free-text search, or unread state, with pagination.

get_conversationA

Get a conversation with its full message history, subscriber details, and context.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Dashboard OverviewLive overview stats for the last 7 days
Current CompanyThe currently selected company, including localization settings
Recent CampaignsLast 10 campaigns with status and basic stats
Recent SubscribersMost recently added subscribers
Engaged SubscribersMost active/engaged subscribers
SequencesAll email sequences with status
TemplatesAll available email templates with localization status
SegmentsAll defined segments with subscriber counts
TagsAll tags with usage counts
Deliverability HealthEmail deliverability metrics and health status
Dashboard URL RoutesRoute templates and settings tabs for building Sequenzy dashboard links

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sequenzy/mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server