Sendlane MCP by usefulapi
Manage Sendlane lists, contacts, tags and custom fields; read campaign and SMS reports.
使うべきか
品質と安全性
検出事項(6)
- LOWsendlane_list_list_unsubscribed 内
- LOWsendlane_list_unsubscribed_contacts 内
- LOWsendlane_get_contact_subscriptions 内
- LOWsendlane_get_contact_custom_fields 内
- LOWsendlane_remove_contact_from_list 内
- LOWsendlane_set_contact_custom_fields 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"sendlane": {
"url": "https://sendlane.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://sendlane.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(31)
🟢sendlane_list_lists(page, limit)
List the audience lists of the account: id, name, description, status, created date. GET /lists.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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}.
入力スキーマ
{
"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.
入力スキーマ
{
"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"
}コミュニティ
エビデンス