SuprSend MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SUPRSEND_BASE_URL | No | Base API URL. Only override for BYOC / self-hosted SuprSend instances. | https://hub.suprsend.com |
| SUPRSEND_MGMNT_URL | No | Management API URL. Only override for BYOC / self-hosted SuprSend instances. | https://management-api.suprsend.com/ |
| SUPRSEND_SERVICE_TOKEN | Yes | SuprSend service token. Create one in the SuprSend dashboard under Developers → API Keys. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_suprsend_object_subscriptionsA | Subscribe one or more users or other objects TO this object. The recipient list can mix users and objects in a single call. Recipients: users by distinct_id, objects by object_type + id. Each entry's shape follows the SuprSend recipient format. Optional properties attach metadata to each subscription (role, joined_at, etc.). When NOT to use:
Side effects: each successful subscription is a separate row. Calling this twice with the same recipient creates duplicate-looking entries; check existing state with get_suprsend_object_subscriptions first if duplicates would be a problem. Returns: the created subscription records on success. |
| fetch_suprsend_documentationA | Fetch the full content of a SuprSend documentation page when a snippet from search_suprsend_documentation is insufficient. When to use: after search_suprsend_documentation, when the snippet excerpt doesn't fully answer and you need surrounding context, code examples, or full reference material. When NOT to use: to discover documentation — search first; don't construct uris yourself. Returns: the page contents as markdown. |
| get_suprsend_objectA | Get a SuprSend object's full state by object_type + object_id. Objects are non-user entities — organizations, projects, vehicles, devices — namespaced by object_type. When to use: the user references an object by id and you need its stored properties or channel identifiers. When NOT to use:
Returns: YAML mirroring get_suprsend_user's shape — object_type, object_id, properties (custom fields), created_at, updated_at, and a channels array (each entry has channel value, status, perma_status). |
| get_suprsend_object_preferencesA | Read an object's category-level notification preferences and (optionally) per-channel overrides. When to use:
When NOT to use:
Returns: the object's preference tree. Pass category to scope to one preference; omit for the full tree. Set channel_preferences=true to include per-channel overrides. |
| get_suprsend_object_subscriptionsA | List users / objects subscribed TO this object (its followers / members). Subscriptions are stored on the followed object. When to use: the user asks "who follows project X?", "who's a member of organization Y?", or you need to enumerate an object's inbound subscribers. When NOT to use:
Returns: a paginated list of subscriber {type, id} entries. Set channel_preferences=true to also include each subscriber's channel preferences for this object. Default limit is 20. |
| get_suprsend_tenantA | Get a tenant's settings, branding metadata, and custom properties by tenant_id. Tenants are sub-accounts of a workspace, modeling end-customers in multi-tenant SaaS deployments. When to use: the user references a tenant by id and you need its full state. When NOT to use:
Returns: the tenant's settings (branding URLs, contact info, custom fields). |
| get_suprsend_tenantsA | List all tenants in the workspace. Use to discover tenant_ids before calling get_suprsend_tenant or upsert_suprsend_tenant. Returns: up to limit tenants (default 100) with their id and properties. |
| get_suprsend_userA | Get a SuprSend user's full state by distinct_id. Users are end recipients of notifications, identified by your application's user id. When to use: the user references a recipient by id and you need their stored properties or channel identifiers. When NOT to use:
Returns: YAML with distinct_id, properties (custom fields like name, plan, lang), created_at, updated_at, and a channels array — each entry has the channel value, status, and perma_status (e.g., bounced, blocked, soft-bounced). |
| get_suprsend_user_list_subscriptionsA | List the SuprSend Lists this user belongs to. Lists are workspace-level recipient groups (segments / mailing lists), distinct from object follows. When to use: the user asks "what mailing lists is X on?" or "what segments include X?". When NOT to use:
Returns: a paginated list of List metadata. Default limit is 20; raise it for larger results. |
| get_suprsend_user_objects_subscriptionsA | List the objects this user is subscribed TO — what the user follows. When to use: the user asks "what does X follow?", "what projects is X in?", or you need to enumerate a user's outbound subscriptions. When NOT to use:
Returns: a paginated list of {object_type, object_id} entries. Default limit is 20. |
| get_suprsend_user_preferencesA | Read a user's category-level notification preferences and (optionally) per-channel overrides. When to use:
When NOT to use:
Returns: the user's preference tree. Pass category to scope to one preference; omit for the full tree. Set channel_preferences=true to include per-channel overrides. |
| get_tenant_default_preferenceA | Read a tenant's default category preferences — the inheritance baseline applied to new users in this tenant. When to use:
When NOT to use:
Returns: the tenant's full default-preference tree. |
| list_workflowsA | List notification workflows in a workspace, in either draft or live mode. mode=live returns the currently-active version of each workflow; mode=draft returns the staged-but-not-yet-promoted version. The two can differ — workflows often have a draft change in flight. Returns: workflow slug, name, status, category, enabled state, and tags. |
| search_suprsend_documentationA | Search SuprSend's product documentation for technical guidance — APIs, SDKs, workflows, templates, tenants, lists, vendors, and connectors. When to use:
When NOT to use: for runtime operations on SuprSend resources (users, objects, tenants, workflows) — those have dedicated tools. Returns: a JSON array of {uri, snippet}. Snippets are excerpts; if a snippet doesn't fully answer, follow up with fetch_suprsend_documentation on the relevant uri. Tips: use precise technical terms ("workflow trigger conditions", not "the rule thing"); add synonyms if the first query returns nothing. |
| update_suprsend_category_preference_objectA | Set ONE category's preference for ONE object — opted in, opted out, or cant_unsubscribe (locked) — plus per-channel opt-outs within that category. Replaces, does not merge. This call overwrites the existing preference for the named category. Previous opt-outs within the same category are lost; pass them again in opt_out_channels if you want to keep them. When to use: changing a single category on a single object. When NOT to use:
Preference values: opt_in enables; opt_out disables; cant_unsubscribe locks the object from toggling this category. Returns: updated preference state on success; structured error on failure. |
| update_suprsend_object_channel_preferenceA | Block or allow specific delivery channels for ONE object, applied across ALL categories. is_restricted semantics: true blocks delivery on that channel; false re-enables it. Each entry in channel_preferences is a {channel, is_restricted} pair. When NOT to use:
Side effects: takes effect on the next workflow run; in-flight notifications may still send. Returns: updated channel-preference state on success. |
| update_suprsend_tenant_default_preferenceA | Set the default category preference inherited by NEW users created in this tenant. Existing users are not affected; their preferences are independent. preference values:
mandatory_channels — channels users cannot disable for this category. blocked_channels — channels that cannot be enabled. visible_to_subscriber — whether end-users see this category in their preference UI. When NOT to use:
Side effects: changes apply only to users created AFTER this call. To retroactively update existing users, call update_suprsend_users_preferences per user. Returns: the updated tenant default preference on success. |
| update_suprsend_user_channel_preferenceA | Block or allow specific delivery channels for ONE user, applied across ALL categories. Use this for "block all SMS to this user" or "allow only email" patterns. is_restricted semantics: true blocks delivery on that channel; false re-enables it. Each entry in channel_preferences is a {channel, is_restricted} pair. When NOT to use:
Side effects: takes effect on the next workflow run; in-flight notifications already in the queue may still send. Returns: updated channel-preference state on success. |
| update_suprsend_users_preferencesB | Set ONE category's preference for ONE user — opted in, opted out, or cant_unsubscribe (locked) — plus per-channel opt-outs within that category. Replaces, does not merge. This call overwrites the existing preference for the named category. Previous opt-outs within the same category are lost; pass them again in opt_out_channels if you want to keep them. When to use: changing a single category for a single user. When NOT to use:
Preference values: opt_in enables; opt_out disables; cant_unsubscribe locks the user from toggling this category in their preference UI. Returns: updated preference state on success; structured error on failure (e.g., unknown category slug). |
| upsert_suprsend_objectA | Modify properties or channel identifiers on a SuprSend object — a non-user entity like an organization, project, or vehicle. One call performs ONE action; for multiple changes, call this tool multiple times. Actions:
Channel registration is special. For channel identifiers ALWAYS use the dedicated add_ / remove_ actions — generic set / unset will not register the channel correctly with the delivery router. Slack and MS Teams additionally require the corresponding slack_details / ms_teams_details payload alongside the action; channel id alone is not enough. When to use: creating an object or modifying its stored state — properties, channels, identifiers. When NOT to use:
Side effects: remove and unset permanently delete data. add_ makes the object reachable on that channel for any future workflow run; remove_ stops delivery immediately. object_type namespaces the object (e.g., "organization", "project") and is required. Returns: the updated object on success; structured error with field reasons on failure. |
| upsert_suprsend_tenantA | Create a new tenant or update an existing tenant's properties. Tenants are sub-accounts of a workspace, used to model end-customers in multi-tenant SaaS apps. tenant_properties is merged with existing — not replaced. Pass only the fields you want to change. Common fields include name, branding URLs, and contact info. When NOT to use:
Returns: the updated tenant on success. |
| upsert_suprsend_userA | Modify properties or channel identifiers on a SuprSend user. One call performs ONE action; for multiple changes, call this tool multiple times. Actions:
Channel registration is special. For channel identifiers ALWAYS use the dedicated add_ / remove_ actions — generic set / unset will not register the channel correctly with the delivery router. Slack additionally requires the slack_details payload alongside the action. When to use: creating a new user or modifying an existing user's stored state. When NOT to use:
Side effects: remove and unset permanently delete data. add_ makes the user reachable on that channel for any future workflow run; remove_ stops delivery immediately. Returns: the updated user on success; structured error with field reasons on failure. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/suprsend/cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server