SlickText MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.7.3 · published by io.usefulapi
Read SlickText contacts, lists, campaigns, analytics and inbox; create and update contacts.
24 tools: 3 can delete or cancel things and 21 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads21Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http slicktext https://slicktext.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The description contains "Every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...settings and the message credit limit. Every other tool works within this brand. GET /brands."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
24 tools
Deletes or cancels 3Claude Code: deny
slicktext_add_contact_to_listsWRITE: add one contact to one or more contact lists (it does not change the contact's opt-in status; lists are also campaign audiences).No findings
Why it is in this group
- The name "slicktext_add_contact_to_lists" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add one contact to one or more contact lists (it does not change the contact's opt-in status; lists are also campaign audiences). Returns SlickText's count of memberships added. WARNING: SlickText workflows can trigger on this event (Contact Created / Contact Field Changed / Contact Added to List) and may immediately SEND REAL TEXTS or take other actions configured in the brand's workflows. POST /brands/{brand_id}/lists/contacts.
Annotations the server declares
- title: Add a contact to lists
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
slicktext_create_contactWRITE: add a contact to the brand.No findings
Why it is in this group
- The name "slicktext_create_contact" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: add a contact to the brand. By default the contact is created as 'not subscribed' and gets no text. Set opt_in_status='subscribed' ONLY for people who gave explicit permission to receive texts (SlickText has a zero-tolerance policy for unsolicited texts). force_double_opt_in=true makes SlickText SEND A REAL SMS to the number asking the person to confirm. Check slicktext_find_contact first to avoid duplicates. WARNING: SlickText workflows can trigger on this event (Contact Created / Contact Field Changed / Contact Added to List) and may immediately SEND REAL TEXTS or take other actions configured in the brand's workflows. POST /brands/{brand_id}/contacts.
Annotations the server declares
- title: Create a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
slicktext_update_contactWRITE: change fields of an existing contact (only the fields you pass are sent).No findings
Why it is in this group
- The name "slicktext_update_contact" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change fields of an existing contact (only the fields you pass are sent). opt_in_status can mark a contact unsubscribed or blocked; set it to 'subscribed' ONLY when the person explicitly agreed to receive texts. WARNING: SlickText workflows can trigger on this event (Contact Created / Contact Field Changed / Contact Added to List) and may immediately SEND REAL TEXTS or take other actions configured in the brand's workflows. PUT /brands/{brand_id}/contacts/{id}.
Annotations the server declares
- title: Update a contact
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Only reads 21Claude Code: allow
slicktext_find_contactFind contacts by mobile number or email address (exact match).No findings
Why it is in this group
- The name "slicktext_find_contact" says "find": a word for reading.
Description, as the server wrote it Find contacts by mobile number or email address (exact match). A 10-digit US number is matched as +1XXXXXXXXXX, the way SlickText stores numbers. Use it before creating a contact to avoid duplicates. GET /brands/{brand_id}/contacts?mobile_number=… or ?email=….
Annotations the server declares
- title: Find a contact by phone or email
- readOnlyHint: true
slicktext_get_analyticsBrand-level analytics.No findings
Why it is in this group
- The name "slicktext_get_analytics" says "get": a word for reading.
Description, as the server wrote it Brand-level analytics. metric: contacts (current totals), contact_growth, contact_add_delete_events, opt_in_status_events, campaigns, messages (messages sent), message_credits, inbox_users (assignments, closures, response times per user), inbox_tags. Optional group (allowed per metric — contacts: source|opt_in_status; contact_growth/campaigns: contact_source; contact_add_delete_events: contact_source|type; opt_in_status_events: contact_source|contact_unsubscribe_source|opt_in_status; messages: source|status|direction|weekday; message_credits: source|status), a start/end range, frequency (hour/day/month/year) and compare (YoY, QoQ, MoM, WoW, DoD, PoP). GET /brands/{brand_id}/analytics/….
Annotations the server declares
- title: Get brand analytics
- readOnlyHint: true
slicktext_get_brandGet the SlickText brand this API key belongs to: brand_id, name, website, sending-number registration details, opt-in / double-opt-in messages, inbox settings and the message credi…1 finding
Why it is in this group
- The name "slicktext_get_brand" says "get": a word for reading.
Findings
- Warn
The description contains "Every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...settings and the message credit limit. Every other tool works within this brand. GET /brands."
Description, as the server wrote it Get the SlickText brand this API key belongs to: brand_id, name, website, sending-number registration details, opt-in / double-opt-in messages, inbox settings and the message credit limit. Every other tool works within this brand. GET /brands.
Annotations the server declares
- title: Get the brand
- readOnlyHint: true
slicktext_get_campaignGet one campaign by id: body, media_url, status, audience_size, schedule and completion.No findings
Why it is in this group
- The name "slicktext_get_campaign" says "get": a word for reading.
Description, as the server wrote it Get one campaign by id: body, media_url, status, audience_size, schedule and completion. GET /brands/{brand_id}/campaigns/{id}.
Annotations the server declares
- title: Get a campaign
- readOnlyHint: true
slicktext_get_campaign_statsPerformance of one campaign: contacts reached, clicks, click_rate, unique clicks, unsubscribes, unsubscribe_rate, orders, revenue, average order value, revenue per message, plus th…No findings
Why it is in this group
- The name "slicktext_get_campaign_stats" says "get": a word for reading.
Description, as the server wrote it Performance of one campaign: contacts reached, clicks, click_rate, unique clicks, unsubscribes, unsubscribe_rate, orders, revenue, average order value, revenue per message, plus the campaign, its audiences and links. GET /brands/{brand_id}/analytics/campaigns/{id}.
Annotations the server declares
- title: Get campaign performance
- readOnlyHint: true
slicktext_get_contactGet one contact by id: name, mobile_number, email, birthdate, address, opt_in_status, source, custom_fields, time zone and dates.No findings
Why it is in this group
- The name "slicktext_get_contact" says "get": a word for reading.
Description, as the server wrote it Get one contact by id: name, mobile_number, email, birthdate, address, opt_in_status, source, custom_fields, time zone and dates. GET /brands/{brand_id}/contacts/{id}.
Annotations the server declares
- title: Get a contact
- readOnlyHint: true
slicktext_get_conversationGet the content of one inbox conversation by its id (the _id from slicktext_list_conversations).No findings
Why it is in this group
- The name "slicktext_get_conversation" says "get": a word for reading.
Description, as the server wrote it Get the content of one inbox conversation by its id (the _id from slicktext_list_conversations). For the message-by-message history also call slicktext_list_messages with source=InboxThread and source_id=<conversation id>. GET /brands/{brand_id}/inbox-threads/{id}/content.
Annotations the server declares
- title: Get an inbox conversation
- readOnlyHint: true
slicktext_get_credit_usageMessage credits for the current billing period: total_credits (subscription + rollover + purchased), credits_used, credits_available and the credit limit.No findings
Why it is in this group
- The name "slicktext_get_credit_usage" says "get": a word for reading.
Description, as the server wrote it Message credits for the current billing period: total_credits (subscription + rollover + purchased), credits_used, credits_available and the credit limit. GET /brands/{brand_id}/usage.
Annotations the server declares
- title: Get message credit usage
- readOnlyHint: true
slicktext_get_keywordGet one keyword by id, including the contact_list_ids that people who text it are added to.No findings
Why it is in this group
- The name "slicktext_get_keyword" says "get": a word for reading.
Description, as the server wrote it Get one keyword by id, including the contact_list_ids that people who text it are added to. GET /brands/{brand_id}/keywords/{id}.
Annotations the server declares
- title: Get a keyword
- readOnlyHint: true
slicktext_get_listGet one contact list by id plus its contact count (all statuses: subscribed, not subscribed, unsubscribed, blocked).No findings
Why it is in this group
- The name "slicktext_get_list" says "get": a word for reading.
Description, as the server wrote it Get one contact list by id plus its contact count (all statuses: subscribed, not subscribed, unsubscribed, blocked). GET /brands/{brand_id}/lists/{id} and /lists/{id}/contacts/count.
Annotations the server declares
- title: Get a contact list
- readOnlyHint: true
slicktext_list_campaignsList the brand's SMS/MMS campaigns: name, body, status (e.g.No findings
Why it is in this group
- The name "slicktext_list_campaigns" says "list": a word for reading.
Description, as the server wrote it List the brand's SMS/MMS campaigns: name, body, status (e.g. draft, scheduled, queued, sent), scheduled/started/finished times, completion_percentage and audience (lists/segments and size). GET /brands/{brand_id}/campaigns.
Annotations the server declares
- title: List campaigns
- readOnlyHint: true
slicktext_list_contactsList the brand's contacts (subscribers) with name, mobile_number, email, opt_in_status, source, custom_fields and dates.No findings
Why it is in this group
- The name "slicktext_list_contacts" says "list": a word for reading.
Description, as the server wrote it List the brand's contacts (subscribers) with name, mobile_number, email, opt_in_status, source, custom_fields and dates. Filters are exact, case-sensitive matches (SlickText has no partial search). Paged: returns count, has_more and next_offset. GET /brands/{brand_id}/contacts.
Annotations the server declares
- title: List contacts
- readOnlyHint: true
slicktext_list_conversationsList two-way inbox conversations: status (open, pending, closed), the contact, the last message and its direction/time, assigned user, tags and unread state.No findings
Why it is in this group
- The name "slicktext_list_conversations" says "list": a word for reading.
Description, as the server wrote it List two-way inbox conversations: status (open, pending, closed), the contact, the last message and its direction/time, assigned user, tags and unread state. GET /brands/{brand_id}/inbox-threads.
Annotations the server declares
- title: List inbox conversations
- readOnlyHint: true
slicktext_list_custom_fieldsList the brand's contact custom fields: name, internal_name (the key used in contact filters and writes), data_type and description.No findings
Why it is in this group
- The name "slicktext_list_custom_fields" says "list": a word for reading.
Description, as the server wrote it List the brand's contact custom fields: name, internal_name (the key used in contact filters and writes), data_type and description. GET /brands/{brand_id}/custom-fields.
Annotations the server declares
- title: List custom fields
- readOnlyHint: true
slicktext_list_inbox_tagsList the inbox tags used to label conversations (inbox_tag_id, name, color, description).No findings
Why it is in this group
- The name "slicktext_list_inbox_tags" says "list": a word for reading.
Description, as the server wrote it List the inbox tags used to label conversations (inbox_tag_id, name, color, description). GET /brands/{brand_id}/inbox-tags.
Annotations the server declares
- title: List inbox tags
- readOnlyHint: true
slicktext_list_keywordsList the brand's text-to-join keywords (word, description, active, auto-response and opt-in messages, double opt-in).No findings
Why it is in this group
- The name "slicktext_list_keywords" says "list": a word for reading.
Description, as the server wrote it List the brand's text-to-join keywords (word, description, active, auto-response and opt-in messages, double opt-in). GET /brands/{brand_id}/keywords.
Annotations the server declares
- title: List keywords
- readOnlyHint: true
slicktext_list_list_contactsList the contacts in one contact list (paged).No findings
Why it is in this group
- The name "slicktext_list_list_contacts" says "list": a word for reading.
Description, as the server wrote it List the contacts in one contact list (paged). GET /brands/{brand_id}/lists/{id}/contacts.
Annotations the server declares
- title: List contacts in a list
- readOnlyHint: true
slicktext_list_listsList the brand's contact lists (contact_list_id, name, description, created).No findings
Why it is in this group
- The name "slicktext_list_lists" says "list": a word for reading.
Description, as the server wrote it List the brand's contact lists (contact_list_id, name, description, created). Optional exact name filter. GET /brands/{brand_id}/lists.
Annotations the server declares
- title: List contact lists
- readOnlyHint: true
slicktext_list_messagesList individual SMS/MMS messages sent and received by the brand: to, from, body, direction, source (Campaign, Keyword, InboxThread, API …), status (delivered, undelivered …), credi…No findings
Why it is in this group
- The name "slicktext_list_messages" says "list": a word for reading.
Description, as the server wrote it List individual SMS/MMS messages sent and received by the brand: to, from, body, direction, source (Campaign, Keyword, InboxThread, API …), status (delivered, undelivered …), credits and the contact. Filters are exact matches; use to/from with a phone number to read one contact's history, or source=InboxThread with source_id = a conversation id. GET /brands/{brand_id}/messages.
Annotations the server declares
- title: List messages
- readOnlyHint: true
slicktext_list_segment_contactsList the contacts that currently match one segment (paged).No findings
Why it is in this group
- The name "slicktext_list_segment_contacts" says "list": a word for reading.
Description, as the server wrote it List the contacts that currently match one segment (paged). GET /brands/{brand_id}/segments/{id}/contacts.
Annotations the server declares
- title: List contacts in a segment
- readOnlyHint: true
slicktext_list_segmentsList the brand's segments (rule-based contact groups: segment_id, name, description).No findings
Why it is in this group
- The name "slicktext_list_segments" says "list": a word for reading.
Description, as the server wrote it List the brand's segments (rule-based contact groups: segment_id, name, description). GET /brands/{brand_id}/segments.
Annotations the server declares
- title: List segments
- readOnlyHint: 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.7.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http slicktext https://slicktext.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__slicktext__slicktext_get_brand",
"mcp__slicktext__slicktext_get_credit_usage",
"mcp__slicktext__slicktext_list_contacts",
"mcp__slicktext__slicktext_find_contact",
"mcp__slicktext__slicktext_get_contact",
"mcp__slicktext__slicktext_list_custom_fields",
"mcp__slicktext__slicktext_list_lists",
"mcp__slicktext__slicktext_get_list",
"mcp__slicktext__slicktext_list_list_contacts",
"mcp__slicktext__slicktext_list_segments",
"mcp__slicktext__slicktext_list_segment_contacts",
"mcp__slicktext__slicktext_list_campaigns",
"mcp__slicktext__slicktext_get_campaign",
"mcp__slicktext__slicktext_get_campaign_stats",
"mcp__slicktext__slicktext_get_analytics",
"mcp__slicktext__slicktext_list_keywords",
"mcp__slicktext__slicktext_get_keyword",
"mcp__slicktext__slicktext_list_messages",
"mcp__slicktext__slicktext_list_conversations",
"mcp__slicktext__slicktext_get_conversation",
"mcp__slicktext__slicktext_list_inbox_tags"
],
"ask": [],
"deny": [
"mcp__slicktext__slicktext_create_contact",
"mcp__slicktext__slicktext_update_contact",
"mcp__slicktext__slicktext_add_contact_to_lists"
]
}
}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 slicktext. Review it before you use it.