Back to Browse

Sequenzy MCP Server

Developer ToolsModerate5.8MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Sequenzy MCP server for AI-powered email marketing automation.

About

Sequenzy MCP server for AI-powered email marketing automation.

Remote endpoints: streamable-http: https://api.sequenzy.com/v1/mcp

Security Report

5.8
Moderate5.8Moderate Risk

This MCP server for Sequenzy email marketing is well-structured with proper authentication via required API keys and appropriate permission scoping. The codebase demonstrates good security practices with environment variable-based credential handling, clear tool annotations for authorization levels, and no evidence of malicious patterns. Minor code quality observations around broad error handling and extensive tool definitions do not materially impact security. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 2 high severity).

3 files analyzed · 6 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

Sequenzy MCP Server

Official MCP server for Sequenzy, the AI-powered email marketing platform.

Connect Sequenzy to Claude Desktop, Claude Code, Codex, Cursor, Windsurf, VS Code Copilot, OpenClaw, and other MCP clients so your AI assistant can manage email operations with structured tools instead of hand-written API calls.

Interactive email and sequence previews

In clients that support MCP Apps, including compatible ChatGPT and Claude connections, you can review your saved emails and sequences directly in the conversation.

  • render_email opens the rendered email with Desktop (640px) and Mobile (375px) views, its subject, preview text and personalization warnings. Pass a campaign ID, template ID, or sequence ID plus node ID using the existing tool inputs. It renders your saved content through Sequenzy's email renderer. Personalization and locale options remain available through the same tool.
  • preview_sequence({ companyId, sequenceId }) opens the saved sequence as a connected diagram with triggers, delays, branches and actions. Select an email to render it, switch between available A/B variants, or use the Emails tab to browse the sequence's emails. Random splits show their configured allocation. Refresh reloads saved content, and failed requests offer an explicit retry.
  • list_sequence_email_variations, generate_sequence_email_variations, list_campaign_variations and generate_campaign_variations open the design variations side by side, each rendered as it would send. While some are still generating, the view updates every few seconds for up to five minutes; after a generate call it follows only the new ones. Use for Email 1 and Use for every email (campaigns: Use this design) ask for confirmation, then save through use_sequence_email_variation or use_campaign_variation with your existing permissions and tell your assistant what changed. Nothing changes until you confirm.

Supporting workflows use compact cards in the same Sequenzy style:

  • open_image_upload({ companyId }) opens an image picker. Choose a PNG, JPEG, GIF or WebP up to 10 MB, optionally describe it, then select Upload image. Opening the widget does not write anything. Submission uses upload_image_asset with your existing permissions and returns the saved asset to your assistant. After an uncertain failure, check your image library before retrying; uploads are never automatically retried.
  • monitor_subscriber_import({ companyId, importId }) shows counts and progress for an existing import. It polls get_subscriber_import every five seconds while running, for up to five minutes. Completion, blocked status, errors or leaving the view stop polling. Refresh status restarts monitoring. This does not start or retry imports.

Both widgets pin the company explicitly. Clients without MCP Apps can use upload_image_asset and get_subscriber_import directly; the same operations are available through the existing REST API and CLI.

The sequence preview requires an explicit company ID from get_account and keeps every email render pinned to that company. Previews never activate sequences, enroll subscribers or send email. A/B previews require the existing access to variant content; unavailable variants are shown as unavailable instead of being replaced with the control email.

Email content is isolated from the widget. Scripts, forms, nested frames and link navigation are disabled; external stylesheets and fonts are not loaded. HTTPS email images may load from their original hosts, subject to the client's policy. The widget itself bundles its logo and font and uses authenticated MCP tool calls without exposing credentials. Actual email-client rendering can differ, so use test sends for final inbox verification.

Clients without MCP Apps still receive the existing rendered HTML or sequence data. The same workflows are available through the existing public render and sequence-read endpoints and CLI render/sequence commands. No new REST endpoint or CLI command is needed for this presentation layer.

What You Can Do

Use create_campaign_for_audience for a frozen group of selected contacts or all contacts matching contact/activity filters. It creates a blank draft, reports selected and currently eligible counts, and preserves existing campaign read/update/clear/schedule workflows. The limit is 100,000 contacts and 8 MiB; drafting sends no email.

  • Manage subscribers, tags, lists, and dynamic segments, including bulk tag reconciliation and synthetic event testing.
  • Sync segments to Meta custom audiences for Facebook and Instagram retargeting.
  • Sync contacts and events from Snowflake, BigQuery, Redshift or Postgres on a schedule.
  • Stream email events, custom events and subscriber snapshots to your S3 or GCS bucket for your data warehouse.
  • Manage products and attach digital delivery files for purchase automations.
  • Upload hosted email images with alt text and reusable responsive crop settings.
  • Draft, update, schedule, and inspect campaigns, including resolved audience previews, persisted conversion goals, and From, Reply-To, CC, and BCC identities.
  • Render campaigns, sequence steps, and templates to their exact email-safe HTML without sending.
  • Add one-click Poll and NPS survey blocks to emails and inspect campaign response summaries.
  • Create and edit email sequences, including multi-list/tag triggers, entry-audience and property-filtered stop conditions, sending identity overrides, existing graph restructuring, and direct step test sends to internal reviewers.
  • Cancel, pause, resume, duplicate, or delete campaigns and enroll contacts into sequences.
  • Manage transactional email templates and send transactional emails to shared To, Cc, and Bcc recipient lists.
  • Supply localized template variants or queue AI translation for enabled locales.
  • Create, preview, edit, publish, unpublish, and delete landing pages.
  • Create list-scoped saved signup forms with responsive stack, row, grid, and single-image overlay block groups (including foreground gap controls), then return client-safe static-site embeds.
  • Create, target, publish, duplicate, and deploy saved signup popups with the same recursive block layouts.
  • Connect and verify custom domains for published landing pages.
  • Manage team invitations, the inbox (its address, conversations, replies, forwards), and outbound webhook endpoints.
  • Manage geofences (places the mobile SDKs watch) and bulk-import them by external ID. Visits become app.geofence_* events for sequence triggers and geofence segment filters.
  • Generate email copy, subject lines, and multi-step sequences.
  • Inspect analytics, subscriber activity, deliverability health, company-level sending pauses, integrations, published event payload schemas, sending identities, tracking settings, and dashboard URLs.
  • Inspect whether "Sent with Sequenzy" is visible for a workspace, why the owner subscription does or does not remove it, and open the canonical subscription page for an upgrade or renewal. Entitlement changes apply to future sends from existing live sequences without editing their blocks.
  • Diagnose why sending is paused and restore eligible hard-bounce pauses after confirming list cleanup.
  • Inspect exact-recipient bounce, complaint, and email-hygiene suppression, and clean up eligible stale bounces without exposing the shared SES suppression list.
  • Configure company product info, account-wide sending identity defaults, rename individual sender and reply-to profiles, manage sender domains, and inspect integration examples for common frameworks.

Every published MCP tool includes explicit readOnlyHint, destructiveHint, idempotentHint, and openWorldHint annotations so compatible clients can display accurate tool-use affordances. Any write that overwrites, cancels, deletes, changes a live sequence, or can send email or SMS is marked destructive; tools that can email real contacts, publish a public link, or reach a third-party service are marked open-world. Tools also publish outputSchema definitions (except on the OpenAI-reviewed route) and return structuredContent, giving clients and models machine-readable result shapes for follow-up calls.

Tool results and recovery

Tool failures retain isError: true and readable error text, and also return structuredContent with { success: false, error: { code, message, howToFix, docsUrl } }. HTTP errors include statusCode; a valid API Retry-After header adds retryAfterSeconds. These fields are omitted when unavailable. The OpenAI profile uses safe recovery descriptions and known codes or status-derived fallbacks, omitting raw backend diagnostics.

Use the error code and recovery guidance to choose your next step. The client retries a read (GET) up to 3 times within about 3 seconds after a 502, 503, 504 or network error, waiting out a Retry-After of 5 seconds or less, and never retries a write. After an uncertain send_email outcome, reuse the original idempotencyKey with unchanged input and inspect emailSendId when available. A retry hint alone does not mean repeating a write is safe.

Segment counts and segment-filtered reads fail with SEGMENT_REFERENCE_DEPTH_EXCEEDED or SEGMENT_REFERENCE_COUNT_EXCEEDED when segments reference other segments too deeply or too many times. Retrying does not help; reduce the nesting or the number of references with update_segment first.

Successful results keep their existing shapes. Recoverable partial subscriber event imports retain their counts and row failures without isError; inspect those rows before retrying failed records.

Quick Setup

The easiest setup path is the Sequenzy wizard:

npx @sequenzy/setup

The wizard opens the browser login flow, creates a personal API key, detects supported AI clients, and configures them automatically when possible.

Hosted Remote MCP

For clients that support Streamable HTTP MCP, use Sequenzy's hosted endpoint instead of running a local stdio process:

https://api.sequenzy.com/v1/mcp

The Sequenzy plugin in the ChatGPT plugin directory uses the reviewed hosted surface, which ChatGPT custom connectors can also add directly:

https://api.sequenzy.com/v1/mcp/openai

That surface shares the same implementation and keeps the standard tool set except for operations that accept or manage credentials, or return unprojected payloads: connect_integration, create_api_key, list_api_keys, update_api_key, revoke_api_key, delete_api_key, request_api_key_handoff, create_data_export, update_data_export, create_warehouse_connection, update_warehouse_connection, preview_warehouse_query, create_webhook, the geofence tools (list_geofences, get_geofence, create_geofence, update_geofence, delete_geofence, import_geofences; they carry place coordinates), list_webhook_deliveries, list_capture_submissions, replay_webhook_delivery, and rotate_sequence_inbound_webhook_secret. It also omits add_website, a compatibility alias of add_sending_domain, and submit_feedback. API keys, including the one behind the ChatGPT connection, are managed in the dashboard. The surface also omits subscription and upgrade links: subscriptionUrl fields, the get_app_urls subscription URL, and the emailBranding tier and upgrade action are removed, and get_app_urls rejects the billing and subscription settings tab aliases. The surface also omits the push credential tools set_apns_credentials and set_fcm_credentials, which take customer private keys as input, and register_push_device, an app-backend call whose required device token the surface's credential policy rejects.

Four tools use clearer names on this surface; standard MCP and the stdio package keep the original names:

Standard MCPOpenAI-reviewed route
list_websiteslist_sending_domains
check_websiteget_sending_domain
resend_campaign_to_non_openerscreate_non_opener_resend_draft
update_sms_number_labelupdate_sms_number_settings

edit_sequence_graph is listed there as four single-operation tools with the same validation and behavior: move_sequence_step (move_node), duplicate_sequence_step (duplicate_node), delete_sequence_step (delete_node) and replace_sequence_paths (replace_edges).

OpenAI reviews again any published tool whose definition changes, so two filters keep their approved definitions there until the next plugin submission: list_email_sends describes bounceType as Permanent or Transient (Soft and Blocked are still accepted), and list_sequence_enrollments offers the active, waiting, completed, failed and cancelled statuses and defaults to active and waiting, so paused enrollments are not listed there.

The preview widget on this surface lists the image origins it may load (https://images.sequenzy.com and the Pexels and Unsplash image hosts), so other external images in an email preview show their alt text instead.

Tool annotations disclose supported replacement and irreversible-delivery modes, including automation-triggering actions. Edits to email content that can be live or shown on a public share link are destructive and open-world. Public content, provider changes, tools that fetch URLs or call outside services (link checks, AI drafting that can read URLs, gallery ranking), and membership changes that can start segment-triggered sequences are marked open-world; private draft creation and additive notes remain non-destructive. On the ChatGPT surface each tool's annotation justifications live in src/tools/openai-justifications/, and a tool whose description does not already explain a hint gets an effects sentence appended. Feedback goes to the Sequenzy team through Telegram with the authenticated company name/ID and account email added for attribution, which clients must disclose before sending.

To keep its tool list small, this surface publishes no output schemas (results still include structuredContent).

On every surface, sequence tools describe repeated nested step schemas once and point later fields at the first copy ("Same schema as branches[].steps in this tool."). Those fields accept the same input as before; the server validates nested steps.

Meta's Muse connector uses a smaller hosted surface, because Muse rejects large tool lists:

https://api.sequenzy.com/v1/mcp/muse

It serves about 70 everyday tools from the standard surface (account, subscribers, lists, tags, segments, campaigns, sequences, templates, transactional sends, stats and the inbox) with the same names, inputs and handlers, and keeps tools/list under 200 KB by leaving out output schemas. Tool results still include structuredContent. The large sequence builders (create_sequence, update_sequence, insert_sequence_step) are left out; generate_sequence, create_sequence_from_example and edit_sequence_emails cover the same work. Calls to tools outside the list are rejected. The list is MUSE_TOOL_NAMES in src/tools/muse-profile.ts.

Remote clients should authenticate with the Sequenzy OAuth flow when supported. Local and automation clients can still use the stdio package below with SEQUENZY_API_KEY.

The hosted endpoint and the stdio package support MCP specification 2026-07-28 while remaining compatible with 2025-era clients. Modern HTTP clients use per-request discovery and method headers; existing clients keep working through the same endpoint and package command.

Machine-readable discovery files:

MCP Events

The hosted endpoints (/v1/mcp, /mcp, /v1/mcp/openai and /v1/mcp/muse) support MCP Events, so an agent such as a ChatGPT task can be woken by something that happens in Sequenzy instead of a schedule or a manual prompt. The stdio package does not offer events because it has no callback to deliver to.

server/discover advertises events: {}. The server implements events/list, events/subscribe and events/unsubscribe with webhook delivery; polling, streaming and replay are not offered, so cursor is always null.

EventFires whenOptional filtersPermission
email.repliedA subscriber replies to an email you sentcampaign_id, sequence_idconversations:read
email.bouncedAn email you sent bouncescampaign_id, sequence_idanalytics:read
email.complainedA recipient marks an email as spamcampaign_id, sequence_idanalytics:read
poll.answeredA recipient answers a poll in an emailcampaign_id, sequence_idanalytics:read
subscriber.createdA subscriber is added, from any sourcelist_id, tagsubscribers:read
subscriber.unsubscribedA subscriber unsubscribestagsubscribers:read
campaign.sentA campaign finishes sendingcampaign_idcampaigns:read
sequence.finishedA subscriber reaches the end of a sequencesequence_idsequences:read
subscriber_import.completedA subscriber import finishesnonesubscribers:read

events/list only returns events the connection's permissions can read in the selected workspace. Filters are optional and combine with AND; tag matches the subscriber's tags when the event is processed.

Each delivery is one Standard Webhooks-signed POST with headers webhook-id (equal to eventId), webhook-timestamp, webhook-signature and X-MCP-Subscription-Id, and a body like:

{
  "eventId": "evt_3f2c...",
  "name": "email.replied",
  "timestamp": "2026-10-04T10:00:00.000Z",
  "data": {
    "reply_id": "rep_123",
    "conversation_id": "conv_123",
    "email_send_id": "send_123",
    "subscriber_id": "sub_123",
    "from_email": "jane@example.com",
    "from_name": "Jane",
    "subject": "Re: Our October launch",
    "email_type": "campaign",
    "campaign_id": "camp_123",
    "sequence_id": null,
    "received_at": "2026-10-04T10:00:00.000Z",
    "url": "https://www.sequenzy.com/dashboard/company/<id>/inbox/conv_123"
  },
  "cursor": null
}

Payloads are summaries: IDs, addresses, a subject and a dashboard link. Email bodies, custom attributes and metadata are never included; read the full record with the matching tool (for example get_conversation for a reply). Text such as a reply subject is data written by your contacts, not instructions.

Subscribing and delivery rules:

  • delivery.secret must be whsec_ followed by base64 that decodes to 24-64 bytes. Callback URLs must be HTTPS, may not resolve to a private or local address (checked again at every connection), and redirects are never followed.
  • The callback is verified with a signed {"type":"verification","challenge":"..."} request that must be answered with a 2xx echoing the challenge. A successful verification is reused for that connection and URL for 24 hours. Each workspace may run 30 verifications per callback host per minute, and one host receives at most 600 per minute across all workspaces. Failures return -32015 with data.reason (connection_refused, timeout, tls_error, http_4xx, http_5xx or challenge_failed).
  • Other errors: -32602 for an invalid secret, URL, filter or ttlMs; -32011 (data.kind: "event") for an unknown event; -32012 when the connection lacks the event's permission or has no usable workspace; -32013 for the subscription cap (data.limit: "subscriptions") or the verification limit ("callback_verifications"); -32014 (data.feature: "deliveryMode") for a delivery mode other than webhook. events/list returns an empty list for a connection without a workspace.
  • The subscription ID is derived from the connection, workspace, callback URL, event name and arguments, so subscribing again refreshes the same subscription. A subscription stays in the workspace selected when it was created; refreshing or unsubscribing after select_company switches workspaces still finds it. refreshBefore defaults to 7 days; any ttlMs is clamped to 5 minutes through 30 days, and ttlMs: null is granted 30 days. A new secret on refresh rotates it, and both secrets sign deliveries for 10 minutes.
  • Failed deliveries are retried up to 5 attempts over about 11 minutes with the same eventId and a fresh signature. 410 stops the subscription until the client subscribes again, 413 is not retried, and deliveries stop when the subscription expires, is unsubscribed, or the connection loses access to the workspace or event. Deduplicate on webhook-id: events can repeat or arrive out of order.
  • A workspace can have 25 active subscriptions. Deliveries above 600 per minute per workspace, or 120 per minute per subscription, are dropped. At most 20 deliveries per workspace are in flight at once; others wait up to about 10 minutes, then are dropped. Marketer-role connections do not receive events from transactional emails. Events start reaching a new subscription within about a minute.

Example: in a ChatGPT task, ask "When someone replies to a campaign, draft a reply in my CRM." ChatGPT subscribes to email.replied, and each reply wakes the task with the sender, subject and conversation link.

Data and privacy

Sequenzy sends an MCP client only the data needed for the tool the user asks it to run, within the selected workspace and the key or OAuth scopes granted to that client. Depending on the requested tool, this can include workspace names and IDs; subscriber contact, consent, audience, attribute, event, engagement, reply, survey, and commerce data; campaign and automation content; delivery analytics; and integration or webhook status. See the Sequenzy Privacy Policy for the full categories, purposes, recipients, retention periods, and user controls.

Do not use open-ended custom attributes, events, notes, forms, webhook samples, email variables, or feedback to submit payment-card data, health or medical data, government identifiers, biometric or genetic data, authentication credentials, sensitive demographic data, or precise geolocation.

The OpenAI-reviewed route states and enforces those restrictions on relevant open-ended inputs, including nested attribute paths such as profile.ssn, coordinate pairs such as lat/lng, and labelled prose such as Religion: ... or GPS coordinates: .... It rejects a credential-bearing URL in any argument, whether the credential sits in the userinfo, path, query, or fragment, such as a form or popup redirectUrl with an access token or URL signature. Restricted attribute selectors inside merge tags are rejected without blocking ordinary authored copy about the same topic. On this surface, render_email and check_email accept sample data or a policy-checked inline subscriber, but not subscriberId, so they cannot resolve uninspected stored custom attributes. Its results remove restricted fields, raw API errors, debug payloads, internal request/trace/session identifiers, unnecessary account or credential identifiers, stored credential-bearing URLs, and inbound-webhook URLs. Standard remote MCP and the local stdio package retain the complete contract for trusted clients, including credential-based integration setup, one-time API-key and webhook secrets, inbound-webhook URLs, and detailed API errors. Prefer the dashboard or local CLI when secrets should stay outside an AI conversation.

What the reviewed surface guarantees is bounded. It recognizes restricted data by shape: English field-name words such as passport_id, user.ssn, or api_secret at any nesting depth, labelled prose such as Diagnosis: ..., known credential shapes, decimal coordinate pairs, and credential-bearing URLs inside any string, including HTML. It does not interpret unlabelled prose, non-English field names, or values a client deliberately obfuscates; those remain covered by the usage restriction above rather than by the filter.

Manual Setup

All stdio MCP clients use the same command:

  • Command: npx
  • Args: -y @sequenzy/mcp
  • Required env: SEQUENZY_API_KEY=seq_user_your_key_here

Optional environment variables:

  • SEQUENZY_API_URL - Sequenzy API base URL. Defaults to https://api.sequenzy.com.
  • SEQUENZY_APP_URL - Sequenzy dashboard base URL used by app URL helpers. Defaults to https://sequenzy.com.

Claude Desktop

Add this to your Claude Desktop config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Restart Claude Desktop after editing the config.

Claude Code

claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- npx -y @sequenzy/mcp

On native Windows, wrap npx with cmd /c:

claude mcp add --scope user --env=SEQUENZY_API_KEY=seq_user_your_key_here sequenzy -- cmd /c npx -y @sequenzy/mcp

For a shared project config, use .mcp.json:

{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Codex

codex mcp add sequenzy --env SEQUENZY_API_KEY=seq_user_your_key_here -- npx -y @sequenzy/mcp
codex mcp list

Manual Codex config in ~/.codex/config.toml:

[mcp_servers.sequenzy]
command = "npx"
args = ["-y", "@sequenzy/mcp"]

[mcp_servers.sequenzy.env]
SEQUENZY_API_KEY = "seq_user_your_key_here"

Cursor

Install Sequenzy from the Cursor Marketplace for a hosted connection with Sequenzy OAuth. The plugin connects to:

https://api.sequenzy.com/v1/mcp

After installing, complete the browser sign-in flow. Cursor's agent can then use Sequenzy tools from chat, including when Grok is the selected model.

For a manual local stdio setup instead, add this to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "sequenzy": {
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Windsurf

Use the same JSON shape as Cursor.

  • macOS: ~/Library/Application Support/Windsurf/mcp.json
  • Windows: %APPDATA%\Windsurf\mcp.json

VS Code Copilot

VS Code uses a servers object:

{
  "servers": {
    "sequenzy": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@sequenzy/mcp"],
      "env": {
        "SEQUENZY_API_KEY": "seq_user_your_key_here"
      }
    }
  }
}

Other MCP Clients

For OpenClaw, Hermes, and other MCP-compatible clients, point the client at npx -y @sequenzy/mcp and set SEQUENZY_API_KEY.

Getting an API Key

  1. Open the Sequenzy dashboard.
  2. Use the MCP setup flow to create a personal key, or open Settings -> API Keys to create a company key.
  3. Choose a permission preset or the exact custom scopes the integration needs.
  4. Add the key to your MCP client config.

Personal keys start with seq_user_. You can revoke them any time in the dashboard.

If the local server starts without SEQUENZY_API_KEY, it still starts and lists its tools, but every tool call returns MCP_AUTH_REQUIRED with a link to create a free account at sequenzy.com/sign-up and the steps above. Add the key and restart the client to continue.

Company keys can also be cleaned up without exposing secrets. Call list_api_keys to compare the key ID, name, non-secret prefix, permissions, last-use timestamp, and isCurrent marker, then pass the exact ID to revoke_api_key. delete_api_key is a compatibility alias for the same permanent operation. List and revoke responses never contain the plain key or stored key hash.

Recover from missing API key permissions

If a tool reports a missing scope such as campaigns:read or templates:write, call get_account. Its apiKeyPermissions field lists the current key identity and type, scopes, common missing marketing read scopes, and a direct manageUrl. The OpenAI-reviewed route returns the same permissions without the user's account ID or the active key's identity. Personal keys open Account API Keys; company keys open the selected workspace's API Keys settings. If the key does not include account:read, open the Sequenzy dashboard directly and choose the matching API Keys page.

Permissions are editable in place, so open manageUrl. For a company key, use list_api_keys and its isCurrent flag to identify the active key before editing it, then retry the failed tool without replacing the credential or restarting the client. An agent using a company key with api_keys:manage can instead call update_api_key; personal keys must be edited on the account-level page because that tool only manages company keys. Its scopes and preset inputs replace the whole permission selection rather than merging, so preserve every existing scope that is still needed. Hosted OAuth connections can alternatively disconnect and reauthorize with broader permissions.

When the active key itself lacks api_keys:manage, call request_api_key_handoff instead of retrying update_api_key. It requires account:read and returns an owner-review URL with the requested key name, permissions, and optional predecessor prefilled. It never creates or returns a key; the workspace owner reviews the form, creates the replacement in the browser, and copies it into the client. Pass replaceApiKeyId: "current" to offer revocation of the active key after the replacement is created. If the active key also lacks account:read, use the dashboard directly.

The default Safer agent access preset includes lists:write and tags:write, so agents can create and update list and tag definitions, and it includes subscribers:tag for applying tags to existing contacts. It also includes ab_tests:read, ab_tests:write, and sequences:write, so agents can audit and edit sequence A/B variant copy, including cart and browse abandonment messages. It does not include subscribers:write, so it cannot add contacts to lists or remove them from lists. Deleting a list or tag still requires the matching lists:delete or tags:delete permission.

The AI drafting preset includes subscribers:write, so drafting agents can build a list as well as create it. add_subscriber uses subscribers:write for explicit listIds; imports into explicit lists and dedicated list membership tools still need lists:write. Sequence enrollment or double-opt-in delivery additionally needs automations:trigger. The two data ingest presets omit lists:write and support explicit list placement through add_subscriber. Use custom permissions for imports into explicit lists.

Tools

The standard surface currently exposes 387 MCP tools. The OpenAI-reviewed surface exposes 368; the omitted, renamed and split operations are listed above.

Tools reject arguments they do not declare instead of silently ignoring them. Errors name the unsupported fields, list the supported arguments, and provide focused guidance for common mistakes such as invented subscriber filters or sort options.

Account, Companies, Setup

Documentation truncated — see the full README on GitHub.

Reviews

No reviews yet

Be the first to review this server!