Sendlane MCP by usefulapi
Manage Sendlane lists, contacts, tags and custom fields; read campaign and SMS reports.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (6)
- LOWen sendlane_list_list_unsubscribed
- LOWen sendlane_list_unsubscribed_contacts
- LOWen sendlane_get_contact_subscriptions
- LOWen sendlane_get_contact_custom_fields
- LOWen sendlane_remove_contact_from_list
- LOWen sendlane_set_contact_custom_fields
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"sendlane": {
"url": "https://sendlane.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://sendlane.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (31)
🟢sendlane_list_lists(page, limit)
List the audience lists of the account: id, name, description, status, created date. GET /lists.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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"
}Comunidad
Evidencia