Sendlane MCP by usefulapi
Manage Sendlane lists, contacts, tags and custom fields; read campaign and SMS reports.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (6)
- LOWin sendlane_list_list_unsubscribed
- LOWin sendlane_list_unsubscribed_contacts
- LOWin sendlane_get_contact_subscriptions
- LOWin sendlane_get_contact_custom_fields
- LOWin sendlane_remove_contact_from_list
- LOWin sendlane_set_contact_custom_fields
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": {
"sendlane": {
"url": "https://sendlane.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://sendlane.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (31)
🟢sendlane_list_lists(page, limit)
List the audience lists of the account: id, name, description, status, created date. GET /lists.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_list(list_id)
One audience list by id. GET /lists/{listId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_list_contacts(list_id, from, to, page, limit)
Contacts on one list: email, name, phone, subscribed/suppressed state, tags, custom fields, lifetime value. GET /lists/{listId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_list_unsubscribed(list_id, from, to, page, limit)
Contacts that unsubscribed from one list. GET /lists/{listId}/unsubscribed.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_contacts(from, to, page, limit)
All contacts of the account: email, name, phone, lists, tags, custom fields, subscribed/suppressed state. Filter by creation time with from/to. GET /contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_contact(contact_id)
One contact by id, with lists, tags, custom fields, consent, lifetime value and subscribed/suppressed state. GET /contacts/{contactId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_unsubscribed_contacts(from, to, page, limit)
Contacts that unsubscribed from the account. GET /contacts/unsubscribed.
Eingabe-Schema
{
"type": "object",
"properties": {
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_contact_subscriptions(contact_id)
The list subscriptions of one contact: list, subscribed/suppressed state, who added it and when. GET /contacts/{contactId}/subscriptions.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_contact_tags(contact_id, page, limit)
The tags on one contact. GET /contacts/{contactId}/tags.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_contact_custom_fields(contact_id, page, limit)
The custom field values of one contact. GET /contacts/{contactId}/custom-fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_tags(page, limit)
The contact tags of the account: id, name, audience count. GET /tags.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_tag(tag_id)
One tag by id. GET /tags/{tagId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"tag_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_tag_contacts(tag_id, from, to, page, limit)
Contacts that carry one tag. GET /tags/{tagId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"tag_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_custom_fields(page, limit)
The custom contact fields of the account: id, name, type. Use the ids when setting field values. GET /custom-fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_segments(page, limit)
The segments of the account: id, name, list, match rule, last count. GET /segments.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_segment_contacts(segment_id, page, limit)
Contacts in one segment: id, email, name, phone. GET /segments/{segmentId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"segment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"segment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_campaigns(page, limit)
Email campaigns: id, name, status, scheduled and sent time, automation. GET /campaigns.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_campaign(campaign_id)
One email campaign by id. GET /campaigns/{campaignId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_campaign_report(campaign_id, from, to)
Statistics of one email campaign: sent, opens, clicks (unique too), bounced, suppressed, unsubscribed, spam, revenue. from/to limit the period. GET /campaigns/{campaignId}/report.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_sms_messages(page, limit)
SMS messages (campaign and automation): id, name, campaign status, automation. GET /sms-messages.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_get_sms_report(message_id, from, to)
Statistics of one SMS message: sent, delivered, clicks, failed, replies, unsubscribed, credits, revenue. from/to limit the period. GET /sms-messages/{messageId}/report.
Eingabe-Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"from": {
"description": "Only records from this time on. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
},
"to": {
"description": "Only records up to this time. Needs `from`. ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.",
"type": "string"
}
},
"required": [
"message_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢sendlane_list_sender_profiles(page, limit)
The sender profiles (from name, from/reply email, postal address, default flag). GET /senders.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_create_list(name, description)
WRITE: create an audience list. Not idempotent: calling it twice makes two lists. POST /lists.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_update_list(list_id, name, description)
WRITE: rename a list and/or change its description (a full update: name is required, an omitted description may be cleared). PUT /lists/{listId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"type": "string",
"maxLength": 1000
}
},
"required": [
"list_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_add_contacts_to_list(list_id, contacts)
WRITE: add one or more contacts (up to 100) to a list; a contact that does not exist is created. Each needs an email or a phone. Sendlane accepts the request for processing (HTTP 202). Only add people who agreed to receive marketing. POST /lists/{listId}/contacts.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contacts": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"description": "Email address. Email or phone is required.",
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "Phone number in international format, e.g. +14155550123. Email or phone is required.",
"type": "string",
"minLength": 3,
"maxLength": 32
},
"first_name": {
"type": "string",
"maxLength": 255
},
"last_name": {
"type": "string",
"maxLength": 255
},
"email_consent": {
"description": "True only if the person gave email marketing consent.",
"type": "boolean"
},
"tag_ids": {
"description": "Ids of existing tags to put on the contact (sendlane_list_tags).",
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"custom_fields": {
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Custom field id (sendlane_list_custom_fields)."
},
"value": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"id",
"value"
]
}
}
}
}
}
},
"required": [
"list_id",
"contacts"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_remove_contact_from_list(list_id, contact_id)
WRITE: remove one contact from one list (the contact stays in the account). DELETE /lists/{listId}/contacts/{contactId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"list_id",
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_unsubscribe_contact(contact_id)
WRITE: unsubscribe one contact from email marketing. The contact stops receiving campaigns. POST /contacts/{contactId}/unsubscribe.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_create_tag(name)
WRITE: create a contact tag. POST /tags.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_add_contact_tags(contact_id, tag_ids)
WRITE: put one or more existing tags on a contact. POST /contacts/{contactId}/tags.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"tag_ids": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"required": [
"contact_id",
"tag_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_remove_contact_tag(contact_id, tag_id)
WRITE: remove one tag from a contact (the tag itself is kept). DELETE /contacts/{contactId}/tags/{tagId}.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"tag_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"contact_id",
"tag_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴sendlane_set_contact_custom_fields(contact_id, custom_fields)
WRITE: add custom field values to a contact. Field ids come from sendlane_list_custom_fields. POST /contacts/{contactId}/custom-fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"custom_fields": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Custom field id."
},
"value": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"id",
"value"
]
}
}
},
"required": [
"contact_id",
"custom_fields"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis