Sendlane MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Manage Sendlane lists, contacts, tags and custom fields; read campaign and SMS reports.
31 tools: 9 can delete or cancel things and 22 only read.
Scanned Oct 21, 2026
- Deletes or cancels9Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads22Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http sendlane https://sendlane.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
31 tools
Deletes or cancels 9Claude Code: deny
sendlane_add_contact_tagsWRITE: put one or more existing tags on a contact.No findings
Why it is in this group
- The name "sendlane_add_contact_tags" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: put one or more existing tags on a contact. POST /contacts/{contactId}/tags.
Annotations the server declares
- title: Tag a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_add_contacts_to_listWRITE: add one or more contacts (up to 100) to a list; a contact that does not exist is created.No findings
Why it is in this group
- The name "sendlane_add_contacts_to_list" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Add contacts to a list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_create_listWRITE: create an audience list.No findings
Why it is in this group
- The name "sendlane_create_list" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create an audience list. Not idempotent: calling it twice makes two lists. POST /lists.
Annotations the server declares
- title: Create list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
sendlane_create_tagWRITE: create a contact tag.No findings
Why it is in this group
- The name "sendlane_create_tag" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create a contact tag. POST /tags.
Annotations the server declares
- title: Create tag
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
sendlane_remove_contact_from_listWRITE: remove one contact from one list (the contact stays in the account).No findings
Why it is in this group
- The name "sendlane_remove_contact_from_list" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: remove one contact from one list (the contact stays in the account). DELETE /lists/{listId}/contacts/{contactId}.
Annotations the server declares
- title: Remove a contact from a list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_remove_contact_tagWRITE: remove one tag from a contact (the tag itself is kept).No findings
Why it is in this group
- The name "sendlane_remove_contact_tag" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: remove one tag from a contact (the tag itself is kept). DELETE /contacts/{contactId}/tags/{tagId}.
Annotations the server declares
- title: Untag a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_set_contact_custom_fieldsWRITE: add custom field values to a contact.No findings
Why it is in this group
- The name "sendlane_set_contact_custom_fields" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add custom field values to a contact. Field ids come from sendlane_list_custom_fields. POST /contacts/{contactId}/custom-fields.
Annotations the server declares
- title: Set contact custom fields
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_unsubscribe_contactWRITE: unsubscribe one contact from email marketing.No findings
Why it is in this group
- The name "sendlane_unsubscribe_contact" says "unsubscribe": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: unsubscribe one contact from email marketing. The contact stops receiving campaigns. POST /contacts/{contactId}/unsubscribe.
Annotations the server declares
- title: Unsubscribe a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
sendlane_update_listWRITE: rename a list and/or change its description (a full update: name is required, an omitted description may be cleared).No findings
Why it is in this group
- The name "sendlane_update_list" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: rename a list and/or change its description (a full update: name is required, an omitted description may be cleared). PUT /lists/{listId}.
Annotations the server declares
- title: Update list
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Only reads 22Claude Code: allow
sendlane_get_campaignOne email campaign by id.No findings
Why it is in this group
- The name "sendlane_get_campaign" says "get": a word for reading.
Description, as the server wrote it One email campaign by id. GET /campaigns/{campaignId}.
Annotations the server declares
- title: Get campaign
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_campaign_reportStatistics of one email campaign: sent, opens, clicks (unique too), bounced, suppressed, unsubscribed, spam, revenue.No findings
Why it is in this group
- The name "sendlane_get_campaign_report" says "get": a word for reading.
Description, as the server wrote it Statistics of one email campaign: sent, opens, clicks (unique too), bounced, suppressed, unsubscribed, spam, revenue. from/to limit the period. GET /campaigns/{campaignId}/report.
Annotations the server declares
- title: Get campaign report
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_contactOne contact by id, with lists, tags, custom fields, consent, lifetime value and subscribed/suppressed state.No findings
Why it is in this group
- The name "sendlane_get_contact" says "get": a word for reading.
Description, as the server wrote it One contact by id, with lists, tags, custom fields, consent, lifetime value and subscribed/suppressed state. GET /contacts/{contactId}.
Annotations the server declares
- title: Get contact
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_contact_custom_fieldsThe custom field values of one contact.No findings
Why it is in this group
- The name "sendlane_get_contact_custom_fields" says "get": a word for reading.
Description, as the server wrote it The custom field values of one contact. GET /contacts/{contactId}/custom-fields.
Annotations the server declares
- title: Get contact custom fields
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_contact_subscriptionsThe list subscriptions of one contact: list, subscribed/suppressed state, who added it and when.No findings
Why it is in this group
- The name "sendlane_get_contact_subscriptions" says "get": a word for reading.
Description, as the server wrote it The list subscriptions of one contact: list, subscribed/suppressed state, who added it and when. GET /contacts/{contactId}/subscriptions.
Annotations the server declares
- title: Get contact subscriptions
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_contact_tagsThe tags on one contact.No findings
Why it is in this group
- The name "sendlane_get_contact_tags" says "get": a word for reading.
Description, as the server wrote it The tags on one contact. GET /contacts/{contactId}/tags.
Annotations the server declares
- title: Get contact tags
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_listOne audience list by id.No findings
Why it is in this group
- The name "sendlane_get_list" says "get": a word for reading.
Description, as the server wrote it One audience list by id. GET /lists/{listId}.
Annotations the server declares
- title: Get list
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_sms_reportStatistics of one SMS message: sent, delivered, clicks, failed, replies, unsubscribed, credits, revenue.No findings
Why it is in this group
- The name "sendlane_get_sms_report" says "get": a word for reading.
Description, as the server wrote it Statistics of one SMS message: sent, delivered, clicks, failed, replies, unsubscribed, credits, revenue. from/to limit the period. GET /sms-messages/{messageId}/report.
Annotations the server declares
- title: Get SMS report
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_get_tagOne tag by id.No findings
Why it is in this group
- The name "sendlane_get_tag" says "get": a word for reading.
Description, as the server wrote it One tag by id. GET /tags/{tagId}.
Annotations the server declares
- title: Get tag
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_campaignsEmail campaigns: id, name, status, scheduled and sent time, automation.No findings
Why it is in this group
- The name "sendlane_list_campaigns" says "list": a word for reading.
Description, as the server wrote it Email campaigns: id, name, status, scheduled and sent time, automation. GET /campaigns.
Annotations the server declares
- title: List campaigns
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_contactsAll contacts of the account: email, name, phone, lists, tags, custom fields, subscribed/suppressed state.No findings
Why it is in this group
- The name "sendlane_list_contacts" says "list": a word for reading.
Description, as the server wrote it All contacts of the account: email, name, phone, lists, tags, custom fields, subscribed/suppressed state. Filter by creation time with from/to. GET /contacts.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_custom_fieldsThe custom contact fields of the account: id, name, type.No findings
Why it is in this group
- The name "sendlane_list_custom_fields" says "list": a word for reading.
Description, as the server wrote it The custom contact fields of the account: id, name, type. Use the ids when setting field values. GET /custom-fields.
Annotations the server declares
- title: List custom fields
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_list_contactsContacts on one list: email, name, phone, subscribed/suppressed state, tags, custom fields, lifetime value.No findings
Why it is in this group
- The name "sendlane_list_list_contacts" says "list": a word for reading.
Description, as the server wrote it Contacts on one list: email, name, phone, subscribed/suppressed state, tags, custom fields, lifetime value. GET /lists/{listId}/contacts.
Annotations the server declares
- title: List contacts of a list
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_list_unsubscribedContacts that unsubscribed from one list.No findings
Why it is in this group
- The name "sendlane_list_list_unsubscribed" says "list": a word for reading.
Description, as the server wrote it Contacts that unsubscribed from one list. GET /lists/{listId}/unsubscribed.
Annotations the server declares
- title: List unsubscribed contacts of a list
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_listsList the audience lists of the account: id, name, description, status, created date.No findings
Why it is in this group
- The name "sendlane_list_lists" says "list": a word for reading.
Description, as the server wrote it List the audience lists of the account: id, name, description, status, created date. GET /lists.
Annotations the server declares
- title: List lists
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_segment_contactsContacts in one segment: id, email, name, phone.No findings
Why it is in this group
- The name "sendlane_list_segment_contacts" says "list": a word for reading.
Description, as the server wrote it Contacts in one segment: id, email, name, phone. GET /segments/{segmentId}/contacts.
Annotations the server declares
- title: List contacts of a segment
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_segmentsThe segments of the account: id, name, list, match rule, last count.No findings
Why it is in this group
- The name "sendlane_list_segments" says "list": a word for reading.
Description, as the server wrote it The segments of the account: id, name, list, match rule, last count. GET /segments.
Annotations the server declares
- title: List segments
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_sender_profilesThe sender profiles (from name, from/reply email, postal address, default flag).No findings
Why it is in this group
- The name "sendlane_list_sender_profiles" says "list": a word for reading.
Description, as the server wrote it The sender profiles (from name, from/reply email, postal address, default flag). GET /senders.
Annotations the server declares
- title: List sender profiles
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_sms_messagesSMS messages (campaign and automation): id, name, campaign status, automation.No findings
Why it is in this group
- The name "sendlane_list_sms_messages" says "list": a word for reading.
Description, as the server wrote it SMS messages (campaign and automation): id, name, campaign status, automation. GET /sms-messages.
Annotations the server declares
- title: List SMS messages
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_tag_contactsContacts that carry one tag.No findings
Why it is in this group
- The name "sendlane_list_tag_contacts" says "list": a word for reading.
Description, as the server wrote it Contacts that carry one tag. GET /tags/{tagId}/contacts.
Annotations the server declares
- title: List contacts with a tag
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_tagsThe contact tags of the account: id, name, audience count.No findings
Why it is in this group
- The name "sendlane_list_tags" says "list": a word for reading.
Description, as the server wrote it The contact tags of the account: id, name, audience count. GET /tags.
Annotations the server declares
- title: List tags
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
sendlane_list_unsubscribed_contactsContacts that unsubscribed from the account.No findings
Why it is in this group
- The name "sendlane_list_unsubscribed_contacts" says "list": a word for reading.
Description, as the server wrote it Contacts that unsubscribed from the account. GET /contacts/unsubscribed.
Annotations the server declares
- title: List unsubscribed contacts
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http sendlane https://sendlane.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__sendlane__sendlane_list_lists",
"mcp__sendlane__sendlane_get_list",
"mcp__sendlane__sendlane_list_list_contacts",
"mcp__sendlane__sendlane_list_list_unsubscribed",
"mcp__sendlane__sendlane_list_contacts",
"mcp__sendlane__sendlane_get_contact",
"mcp__sendlane__sendlane_list_unsubscribed_contacts",
"mcp__sendlane__sendlane_get_contact_subscriptions",
"mcp__sendlane__sendlane_get_contact_tags",
"mcp__sendlane__sendlane_get_contact_custom_fields",
"mcp__sendlane__sendlane_list_tags",
"mcp__sendlane__sendlane_get_tag",
"mcp__sendlane__sendlane_list_tag_contacts",
"mcp__sendlane__sendlane_list_custom_fields",
"mcp__sendlane__sendlane_list_segments",
"mcp__sendlane__sendlane_list_segment_contacts",
"mcp__sendlane__sendlane_list_campaigns",
"mcp__sendlane__sendlane_get_campaign",
"mcp__sendlane__sendlane_get_campaign_report",
"mcp__sendlane__sendlane_list_sms_messages",
"mcp__sendlane__sendlane_get_sms_report",
"mcp__sendlane__sendlane_list_sender_profiles"
],
"ask": [],
"deny": [
"mcp__sendlane__sendlane_create_list",
"mcp__sendlane__sendlane_update_list",
"mcp__sendlane__sendlane_add_contacts_to_list",
"mcp__sendlane__sendlane_remove_contact_from_list",
"mcp__sendlane__sendlane_unsubscribe_contact",
"mcp__sendlane__sendlane_create_tag",
"mcp__sendlane__sendlane_add_contact_tags",
"mcp__sendlane__sendlane_remove_contact_tag",
"mcp__sendlane__sendlane_set_contact_custom_fields"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as sendlane. Review it before you use it.