Skip to main content
Glama
Arsel-SA

Arsel MCP Server

Official
by Arsel-SA

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port. Defaults to 8077.
ARSEL_API_KEYYesYour Arsel API key. Required for stdio mode (running locally). Create one in the dashboard under API keys.
ARSEL_API_URLNoArsel API base URL. Defaults to https://api.arsel.sa/v1.
ARSEL_AUTH_SERVERNoOAuth authorization server. Defaults to https://api.arsel.sa.
ARSEL_MCP_PUBLIC_URLNoPublic URL of this server; the OAuth token audience. Defaults to https://mcp.arsel.sa.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list-contactsA

Purpose: List contacts, or look one person up.

Use when: the user asks "is X a contact?", "who is in this list?", "who has this tag?". Pass an exact email, phone_number or external_id to find one person, or list_id / tag_id to see an audience.

Not for: counting a list or tag (get-list and get-tag return contact_count). Don't read ids or timestamps back to the user unless they ask for them.

get-contactA

Get one contact by id, with its custom properties and whether it is suppressed (unreachable because of a bounce, complaint or unsubscribe).

create-contactA

Create a contact. At least one of email, phone_number or external_id is required. Custom fields go in properties, keyed by the field keys list-contact-properties returns. This can start the organization's active automations, which may send messages.

update-contactA

Update a contact. Omitted fields are unchanged and null clears one, but the contact must keep an email, phone number or external id.

list_ids REPLACES the contact's list memberships: an empty array removes it from every list. To add without removing, use add-contacts-to-list. This can start the organization's active automations, which may send messages.

list-listsA

List contact lists with their contact counts. Lists are static audiences that campaigns target. Don't read ids or timestamps back to the user unless they ask for them.

get-listA

Get one contact list and its contact count. To see its members, call list-contacts with list_id.

create-listC

Create an empty contact list.

update-listB

Rename a contact list or change its description.

add-contacts-to-listA

Add contacts to a list, keeping their other memberships. This can start the organization's active automations, which may send messages.

remove-contacts-from-listA

Remove contacts from a list. The contacts themselves are kept. Confirm with the user first, naming the list.

list-tagsA

List tags with their contact counts. Don't read ids or timestamps back to the user unless they ask for them.

get-tagA

Get one tag and its contact count. To see who has it, call list-contacts with tag_id.

create-tagC

Create a tag.

update-tagC

Rename a tag or change its description.

add-tag-to-contactsA

Add a tag to contacts. This can start the organization's active automations, which may send messages.

remove-tag-from-contactsA

Remove a tag from contacts. This can start the organization's active automations, which may send messages.

list-email-campaignsA

List email campaigns, optionally by name or status. Don't read ids or timestamps back to the user unless they ask for them.

get-email-campaignB

Get one email campaign: status, sender, subject, template, audience and schedule.

create-email-campaignA

Create an email campaign. Every field is optional, so a draft can be built up step by step. The audience is the union of list_ids, tag_ids and segment_ids. Find lists with list-lists and tags with list-tags; segments are managed in the Arsel dashboard. The campaign is saved as a draft. This server cannot send or schedule it: the user does that from the Arsel dashboard.

update-email-campaignA

Update an email campaign. Only draft and scheduled campaigns can be edited. Editing a scheduled campaign changes what goes out at its scheduled time, so confirm with the user first. Omitted fields are unchanged.

list-sms-campaignsA

List SMS campaigns, optionally by name or status. Don't read ids or timestamps back to the user unless they ask for them.

get-sms-campaignA

Get one SMS campaign: status, content, sender, segment count and schedule.

create-sms-campaignA

Create an SMS campaign. The audience is the union of list_ids, tag_ids and segment_ids. Find lists with list-lists and tags with list-tags; segments are managed in the Arsel dashboard. The campaign is saved as a draft. This server cannot send or schedule it: the user does that from the Arsel dashboard.

update-sms-campaignA

Update an SMS campaign. Only draft and scheduled campaigns can be edited. Editing a scheduled campaign changes what goes out at its scheduled time, so confirm with the user first. Omitted fields are unchanged.

list-push-campaignsB

List push notification campaigns, optionally by name or status. Don't read ids or timestamps back to the user unless they ask for them.

get-push-campaignA

Get one push campaign: status, notification content, targeting and schedule.

create-push-campaignA

Create a push notification campaign for the organization's app users. The audience is the union of list_ids, tag_ids and segment_ids. Find lists with list-lists and tags with list-tags; segments are managed in the Arsel dashboard. The campaign is saved as a draft. This server cannot send or schedule it: the user does that from the Arsel dashboard.

update-push-campaignA

Update a push campaign. Only draft and scheduled campaigns can be edited. Editing a scheduled campaign changes what goes out at its scheduled time, so confirm with the user first. Omitted fields are unchanged.

list-in-app-campaignsA

List in-app message campaigns (messages shown inside the organization's app or website), optionally by name or status. Don't read ids or timestamps back to the user unless they ask for them.

get-in-app-campaignB

Get one in-app campaign: status, layout, content, trigger and targeting.

create-in-app-campaignA

Create an in-app message campaign. The campaign is saved as a draft. This server cannot send or schedule it: the user does that from the Arsel dashboard.

update-in-app-campaignA

Update an in-app campaign. Unlike other channels an active campaign is editable, and devices show the change on their next fetch: before editing a live campaign you MUST confirm with the user. ended and archived campaigns cannot be edited. Omitted fields are unchanged.

clone-in-app-campaignA

Copy an in-app campaign into a new draft, e.g. to rework a live or ended one without touching it.

list-templatesA

List the organization's own email templates. An email campaign uses one through its template_id. Don't read ids or timestamps back to the user unless they ask for them.

get-templateA

Get one email template, including its HTML.

create-templateA

Create an email template from HTML. The HTML is sanitized and an unsubscribe link is added automatically. To start from a professionally designed layout instead, use copy-gallery-template.

update-templateB

Rename an email template or replace its HTML.

list-gallery-categoriesA

List the filters (types, seasons, features, industries) that list-gallery-templates accepts.

list-gallery-templatesA

Browse Arsel's gallery of ready-made email designs. Copy one into the organization with copy-gallery-template.

get-gallery-templateB

Get one gallery design, including its HTML.

copy-gallery-templateA

Copy a gallery design into the organization's templates, where it can be edited and used by campaigns.

list-contact-propertiesA

List the organization's custom contact fields: the keys a contact's properties can hold, also usable as merge tags in messages. Don't read ids or timestamps back to the user unless they ask for them.

get-contact-propertyC

Get one custom contact field.

create-contact-propertyA

Define a custom contact field. field_key and data_type cannot be changed later.

update-contact-propertyA

Change a custom field's display name, description or fallback value. Pass null to clear the last two.

list-eventsA

List the event types the organization tracks from its apps (e.g. order.completed), with their payload schemas and conversion setup. Don't read ids or timestamps back to the user unless they ask for them.

get-eventC

Get one event type.

create-eventB

Define an event type that apps can send and automations can react to. The name cannot be changed later.

update-eventA

Change an event type's description, schema or conversion setup. schema replaces the whole field list.

list-emailsA

List transactional emails with their delivery status. Transactional messages are the one-off sends an application makes through the API (receipts, one-time passwords), not campaigns. Don't read ids or timestamps back to the user unless they ask for them.

get-emailB

Get one transactional emails message with its delivery status.

list-sms-messagesA

List transactional sms with their delivery status. Transactional messages are the one-off sends an application makes through the API (receipts, one-time passwords), not campaigns. Don't read ids or timestamps back to the user unless they ask for them.

get-sms-messageA

Get one transactional sms message with its delivery status.

list-whatsapp-messagesA

List transactional whatsapp with their delivery status. Transactional messages are the one-off sends an application makes through the API (receipts, one-time passwords), not campaigns. Don't read ids or timestamps back to the user unless they ask for them.

get-whatsapp-messageA

Get one transactional whatsapp message with its delivery status.

list-push-notificationsA

List transactional push with their delivery status. Transactional messages are the one-off sends an application makes through the API (receipts, one-time passwords), not campaigns. Don't read ids or timestamps back to the user unless they ask for them.

get-push-notificationB

Get one transactional push message with its delivery status.

list-contact-push-devicesA

List a contact's registered push devices, to check whether they can receive push notifications.

get-push-device-importA

Get the progress and per-row errors of a bulk push-device import.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 59 tools

Disambiguation4/5

Most tools target a clearly distinct resource and action, with explicit guidance separating campaigns from transactional messages and templates from gallery designs. A few pairs like get-email vs get-email-campaign and list-emails vs list-email-campaigns could be confused, but the descriptions resolve them well.

Naming Consistency5/5

Tool names follow a highly predictable kebab-case verb_noun pattern throughout, e.g. list-contacts, create-email-campaign, add-contacts-to-list, clone-in-app-campaign. Minor singular/plural differences such as get-email vs list-emails are still readable and consistent with the overall convention.

Tool Count2/5

With 59 tools, the surface is very large even for a multi-channel marketing platform, and the repeated CRUD patterns across contacts, lists, tags, campaigns, templates, properties, events, and transactional messages create significant cognitive load. Many operations could likely be grouped or parameterized by channel/resource rather than exposed as separate tools.

Completeness3/5

The server covers create/read/update for core resources, but there are notable lifecycle gaps: no delete operations for contacts, lists, tags, campaigns, templates, properties, or events, and sending/scheduling campaigns is explicitly left to the dashboard. Transactional messages support only list/get, which limits the surface for testing or inspecting sends.

Maintenance

ActivityMaintained
ResponsivenessNo issues