Sarbacane MCP by usefulapi
Read Sarbacane campaigns, stats, lists and blacklists; manage contacts and draft email campaigns.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (4)
- LOWin sarbacane_list_blacklist_entries
- LOWin sarbacane_list_campaign_recipients
- LOWin sarbacane_create_email_campaign
- LOWin sarbacane_import_campaign_template
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"sarbacane": {
"url": "https://sarbacane.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://sarbacane.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (19)
🟢sarbacane_get_credits
The account's remaining credits per type (email campaigns, SMS, eye tracking, Sendkit emails) with expiry date and subscription type. GET /v1/credits.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_users(search, offset, limit)
Users and pending invitations of the Sarbacane account (name, email, role, team). GET /v1/users.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Filter users by name or email.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_lists(offset, limit)
All contact lists of the account, with their ids. Use the ids for contacts, fields and campaigns. GET /v1/lists.
Eingabe-Schema
{
"type": "object",
"properties": {
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_list_fields(list_id)
The custom fields (columns) of a contact list: id, caption and type (STRING, BOOL, INT, DATE). Field ids are the keys used when writing contacts. GET /v1/lists/{listId}/fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Contact list id (sarbacane_list_lists)."
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_contacts(list_id, email, phone, search, modified_after, ...)
Contacts of one list (personal data: email, phone, custom fields). Filter by email, phone, a text search across fields, or the modification date. GET /v1/lists/{listId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Contact list id."
},
"email": {
"description": "Only the contact with this email.",
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"description": "Only the contact with this phone number.",
"type": "string",
"minLength": 5,
"maxLength": 30,
"pattern": "^\\+?[0-9 ().-]{5,30}$"
},
"search": {
"description": "Text to look for in the contact's fields.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"modified_after": {
"description": "Only contacts modified at or after this time.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"modified_before": {
"description": "Only contacts modified at or before this time.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡sarbacane_create_contact(list_id, email, phone, fields)
WRITE: add a contact to a contact list. Give an email, a phone number or both, and optional custom field values. Adds a new record; use sarbacane_upsert_contact to update an existing contact. POST /v1/lists/{listId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Contact list id."
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"type": "string",
"minLength": 5,
"maxLength": 30,
"pattern": "^\\+?[0-9 ().-]{5,30}$"
},
"fields": {
"description": "Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9_-]+$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sarbacane_upsert_contact(list_id, email, phone, fields)
WRITE: add a contact to a list, or update it when the same email/phone pair already exists (custom field values are overwritten). POST /v1/lists/{listId}/contacts/upsert.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Contact list id."
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"type": "string",
"minLength": 5,
"maxLength": 30,
"pattern": "^\\+?[0-9 ().-]{5,30}$"
},
"fields": {
"description": "Custom field values as { <custom field id>: value }. Get the ids from sarbacane_list_list_fields.",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9_-]+$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_blacklists(offset, limit)
All blacklists (suppression lists) of the account, with their ids. GET /v1/blacklists.
Eingabe-Schema
{
"type": "object",
"properties": {
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_blacklist_entries(blacklist_id, kind, email, phone, modified_after, ...)
Entries of a blacklist by kind: bounces (invalid addresses), unsubscribers or complaints (personal data: email, phone). Filter by email, phone or modification date. GET /v1/blacklists/{blacklistId}/{bounces|unsubscribers|complaints}.
Eingabe-Schema
{
"type": "object",
"properties": {
"blacklist_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Blacklist id (sarbacane_list_blacklists)."
},
"kind": {
"type": "string",
"enum": [
"bounces",
"unsubscribers",
"complaints"
],
"description": "Which entries: bounces, unsubscribers or complaints."
},
"email": {
"description": "Only this email.",
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"description": "Only this phone number.",
"type": "string",
"minLength": 5,
"maxLength": 30,
"pattern": "^\\+?[0-9 ().-]{5,30}$"
},
"modified_after": {
"description": "Only entries modified at or after this time.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"modified_before": {
"description": "Only entries modified at or before this time.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"blacklist_id",
"kind"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡sarbacane_add_unsubscriber(blacklist_id, email, phone)
WRITE: record an email and/or phone as unsubscribed in a blacklist, so campaigns using that blacklist skip it. Cannot be undone with these tools. POST /v1/blacklists/{blacklistId}/unsubscribers.
Eingabe-Schema
{
"type": "object",
"properties": {
"blacklist_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Blacklist id."
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"type": "string",
"minLength": 5,
"maxLength": 30,
"pattern": "^\\+?[0-9 ().-]{5,30}$"
}
},
"required": [
"blacklist_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_campaigns(state, search, offset, limit)
Campaigns of the account (id, name, kind, created/edited, recipient count). Filter by state or a text in the name or subject. GET /v1/campaigns.
Eingabe-Schema
{
"type": "object",
"properties": {
"state": {
"description": "Only campaigns in this state.",
"type": "string",
"enum": [
"DRAFT",
"FINISH",
"ROUTING",
"MODERATION"
]
},
"search": {
"description": "Text in the campaign name or subject.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_get_campaign(campaign_id)
One campaign: state, kind, blacklists, send ids, sent date. The send id is needed to see content. GET /v1/campaigns/{campaignId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_get_campaign_report(campaign_id)
Statistics of a campaign per send: delivered count, opens, openers, clicks, clickers, unsubscribers, devices and operating systems. GET /v1/reports/{campaignId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_campaign_recipients(campaign_id, offset, limit)
Recipients attached to a campaign (personal data: email, phone). GET /v1/campaigns/{campaignId}/recipients.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
},
"offset": {
"description": "Starting position, from 0 (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
"limit": {
"description": "Maximum items returned, 1-1000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sarbacane_list_webhooks
Webhook subscriptions of the account: url, display name and subscribed event kinds. GET /v1/webhooks.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡sarbacane_create_email_campaign(name, email_from, alias_from, email_reply_to, alias_reply_to, ...)
WRITE: create a new email campaign as a DRAFT. It is never sent by these tools: add content (sarbacane_set_campaign_content or sarbacane_import_campaign_template) and a contact list (sarbacane_set_campaign_list), then send it from Sarbacane. POST /v1/campaigns/email.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Campaign name (internal)."
},
"email_from": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$",
"description": "Sender email address (must be a sender allowed on the account)."
},
"alias_from": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Sender name."
},
"email_reply_to": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$",
"description": "Reply-to email address."
},
"alias_reply_to": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Reply-to name."
},
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Email subject."
},
"preheader": {
"description": "Preheader text.",
"type": "string",
"maxLength": 500
}
},
"required": [
"name",
"email_from",
"alias_from",
"email_reply_to",
"alias_reply_to",
"subject"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sarbacane_set_campaign_content(campaign_id, send_id, html, text)
WRITE: set the HTML (and optional plain-text) content of an email campaign's send, replacing what was there. Without send_id the campaign's only send is used (an A/B test campaign has several: pass one). POST /v1/campaigns/{campaignId}/send/{sendId}/content.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
},
"send_id": {
"description": "Send id from sarbacane_get_campaign (campaign.sends). Optional when the campaign has one send.",
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$"
},
"html": {
"type": "string",
"minLength": 1,
"maxLength": 1000000,
"description": "The HTML body of the email."
},
"text": {
"description": "Plain-text alternative.",
"type": "string",
"maxLength": 200000
}
},
"required": [
"campaign_id",
"html"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sarbacane_import_campaign_template(campaign_id, template_id)
WRITE: load a saved template's content into an email campaign, replacing its content. POST /v1/campaigns/{campaignId}/content.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
},
"template_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Template id (from Sarbacane)."
}
},
"required": [
"campaign_id",
"template_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sarbacane_set_campaign_list(campaign_id, list_id)
WRITE: import a contact list's contacts as the recipients of a campaign. It does not send the campaign. POST /v1/campaigns/{campaignId}/list.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Campaign id."
},
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[A-Za-z0-9_-]+$",
"description": "Contact list id (sarbacane_list_lists)."
}
},
"required": [
"campaign_id",
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis