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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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_preferencesA | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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