SimpleTexting MCP by usefulapi

Send SMS/MMS, manage contacts, and read campaigns, messages and media on SimpleTexting.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,815Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.42% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "simpletexting": {
      "url": "https://simpletexting.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://simpletexting.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢simpletexting_list_contacts(page, size, since, direction)

List the account's contacts as a paged collection, optionally filtered by a `since` cursor and sort `direction`. SimpleTexting REST: GET /contacts.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Zero-based page number.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Page size (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "since": {
      "description": "Return contacts created/updated since this cursor or timestamp.",
      "type": "string"
    },
    "direction": {
      "description": "Sort direction (e.g. ASC | DESC).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_get_contact(contact)

Get a single contact by its id or phone number, including profile fields, list memberships, and custom fields. SimpleTexting REST: GET /contacts/{contactIdOrNumber}.

Input Schema

{
  "type": "object",
  "properties": {
    "contact": {
      "type": "string",
      "description": "Contact id or phone number."
    }
  },
  "required": [
    "contact"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_list_campaigns(page, size, accountPhone, state, listNameOrId, ...)

List the account's campaigns as a paged collection, optionally filtered by sending number, state, list, and start-date range. Note: only immediate campaigns are returned — scheduled/recurring campaigns are NOT included. SimpleTexting REST: GET /campaigns.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Zero-based page number.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Page size (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "accountPhone": {
      "description": "Filter by the sending account phone number.",
      "type": "string"
    },
    "state": {
      "description": "Filter by campaign state (e.g. SENT | SCHEDULED | DRAFT).",
      "type": "string"
    },
    "listNameOrId": {
      "description": "Filter by recipient list name or id.",
      "type": "string"
    },
    "startDateFrom": {
      "description": "Filter to campaigns starting on/after this date.",
      "type": "string"
    },
    "startDateTo": {
      "description": "Filter to campaigns starting on/before this date.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_get_campaign(campaign_id)

Get a single campaign by its id, including its message, recipients, and status. SimpleTexting REST: GET /campaigns/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "description": "Campaign id."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_list_messages(page, size)

List the account's messages as a paged collection (inbound + outbound message history). SimpleTexting REST: GET /messages.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Zero-based page number.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Page size (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_get_message(message_id)

Get a single message by its id, including its text, direction, status, and timestamps. SimpleTexting REST: GET /messages/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "string",
      "description": "Message id."
    }
  },
  "required": [
    "message_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_list_media(page, size)

List the account's media items (MMS assets) as a paged collection. SimpleTexting REST: GET /media.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Zero-based page number.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Page size (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_get_media(media_id)

Get a single media item (MMS asset) by its id, including its URL and metadata. SimpleTexting REST: GET /media/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "media_id": {
      "type": "string",
      "description": "Media item id."
    }
  },
  "required": [
    "media_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢simpletexting_evaluate_message(text, mode)

DRY-RUN a message body to compute its segment count, whether it sends as SMS or MMS, and its estimated cost — WITHOUT sending anything. Safe and read-only. SimpleTexting REST: POST /messages/evaluate with JSON body {text, mode?}.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The message body to evaluate."
    },
    "mode": {
      "description": "Optional send mode to evaluate against (e.g. AUTO | SMS | MMS).",
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴simpletexting_send_message(contactPhone, text, accountPhone, mode, subject, ...)

SENDS A REAL SMS or MMS to a recipient — this MODIFIES live data and consumes message credits. Provide only the optional fields you need. SimpleTexting REST: POST /messages with JSON body {contactPhone, text, accountPhone?, mode?, subject?, fallbackText?, mediaItems?}.

Input Schema

{
  "type": "object",
  "properties": {
    "contactPhone": {
      "type": "string",
      "description": "Recipient phone number (E.164 or national format)."
    },
    "text": {
      "type": "string",
      "description": "Message body to send."
    },
    "accountPhone": {
      "description": "Sending account phone number — omit to use the account default.",
      "type": "string"
    },
    "mode": {
      "description": "Send mode: AUTO | SMS | MMS | MMS_PREFERRED.",
      "type": "string"
    },
    "subject": {
      "description": "MMS subject line.",
      "type": "string"
    },
    "fallbackText": {
      "description": "Fallback text if MMS cannot be delivered.",
      "type": "string"
    },
    "mediaItems": {
      "description": "Media URLs or media ids to attach (makes it an MMS).",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "contactPhone",
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴simpletexting_update_contact(contact, contactPhone, firstName, lastName, email, ...)

UPDATES a live contact — its profile fields, list memberships, and custom fields. This MODIFIES live data. Provide only the fields you want to change. SimpleTexting REST: PUT /contacts/{contactIdOrNumber}.

Input Schema

{
  "type": "object",
  "properties": {
    "contact": {
      "type": "string",
      "description": "Contact id or phone number to update."
    },
    "contactPhone": {
      "description": "New phone number for the contact.",
      "type": "string"
    },
    "firstName": {
      "description": "Contact first name.",
      "type": "string"
    },
    "lastName": {
      "description": "Contact last name.",
      "type": "string"
    },
    "email": {
      "description": "Contact email address.",
      "type": "string"
    },
    "birthday": {
      "description": "Contact birthday (YYYY-MM-DD).",
      "type": "string"
    },
    "comment": {
      "description": "Free-text note on the contact.",
      "type": "string"
    },
    "listIds": {
      "description": "List ids or names to assign the contact to.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "customFields": {
      "description": "Custom field values, as a map of field name → value.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "contact"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
failed observationversion not recorded—
failed observationversion not recorded—