Skip to content

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.

Deletes · 3

24 tools: 3 can delete or cancel things and 21 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The description contains "Every other tool", wording about other tools or servers.

    Matched text

    description: "...settings and the message credit limit. Every other tool works within this brand. GET /brands."

    What this check looks for

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.

      Matched text

      description: "...settings and the message credit limit. Every other tool works within this brand. GET /brands."

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.