SMS Everyone MCP by usefulapi

Send confirmed SMS, check credits, delivery and replies, and manage opt-outs with SMS Everyone.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
Naming quality
76%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'smseveryone_get_campaign_status' name length outside 3-30 rangein smseveryone_get_campaign_status
  • LOWTool 'smseveryone_get_delivery_status' name length outside 3-30 rangein smseveryone_get_delivery_status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,675Tokens (tool definitions)
~1.5 KBTypical response size
Significant attention impact (2.09% 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": {
    "sms-everyone": {
      "url": "https://sms-everyone.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://sms-everyone.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢smseveryone_get_account

Show the SMS Everyone account: user id, remaining SMS credits, whether unicode (emoji, non-English text) is enabled and whether international messaging is allowed. SMS Everyone REST: POST /api/RetrieveUserSettings.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_get_campaign_status(campaign_id)

Show whether a sent or scheduled campaign is Scheduled, Running, Paused or Deleted. SMS Everyone REST: POST /api/campaign with Action status.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "The CampaignId SMS Everyone returned when the message was sent or scheduled."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_get_delivery_status(campaign_id, destination, limit, offset)

Delivery receipts of a campaign: one entry per destination with a timestamp, a DeliveryReceiptStatusId and a carrier code. Pass destination to see one number only. An empty list means no receipt has arrived yet (carriers can take up to 24 hours) or the campaign id is not on this account. SMS Everyone asks for no more than one request per minute in production. SMS Everyone REST: POST /api/DRStatus.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "The CampaignId SMS Everyone returned when the message was sent or scheduled."
    },
    "destination": {
      "description": "Optional single phone number in international format, e.g. 61400123456.",
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "description": "Show at most this many destinations, default 500.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries (for paging: use next_offset of the previous result). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_list_replies(days, date_start, date_end, limit, offset)

List SMS replies received on the account: received time, the sender's number (Originator), the account number it was sent to (Recipient), the text and a reference id. Always asks for a time window (the last `days` days, 1 to 7, counted back to 12am yesterday for 1, or a date range of at most 30 days), which leaves the replies available for later calls. Default: days 1. Production polling is limited to once per minute per account through this MCP; five minutes is recommended. SMS Everyone REST: POST /api/replies.

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "description": "The last N days, 1 to 7 (1 = back to 12am yesterday in the account's time zone). Default 1. Ignored when date_start is given. For longer periods use date_start/date_end (up to 30 days).",
      "type": "integer",
      "minimum": 1,
      "maximum": 7
    },
    "date_start": {
      "description": "Start date, YYYY-MM-DD.",
      "type": "string"
    },
    "date_end": {
      "description": "End date, YYYY-MM-DD (default: today). Needs date_start.",
      "type": "string"
    },
    "limit": {
      "description": "Show at most this many replies, default 100.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "description": "Skip this many entries (for paging: use next_offset of the previous result). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_list_optouts(limit, offset)

List phone numbers in the account's optout database (messages to them are never sent): number, date added, reason. The API returns the whole list; this tool shows the first `limit` entries and the total. SMS Everyone REST: POST /api/optouts with Action list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Show at most this many entries, default 200.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries (for paging: use next_offset of the previous result). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_list_contact_lists(limit, offset)

List the stored lists (CRM groups) of mobile numbers: list id (CrmId), description and number count. SMS Everyone REST: POST /api/crm with Action list.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Show at most this many lists, default 500.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries (for paging: use next_offset of the previous result). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢smseveryone_get_contact_list(list_id, limit, offset)

Show the mobile numbers stored in one list. The API returns the whole list; this tool shows the first `limit` numbers and the total count. SMS Everyone REST: POST /api/crm with Action details.

Input Schema

{
  "type": "object",
  "properties": {
    "list_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "The CrmId from list_contact_lists."
    },
    "limit": {
      "description": "Show at most this many numbers, default 200.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries (for paging: use next_offset of the previous result). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "list_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴smseveryone_send_sms(confirm, originator, destinations, message, time_scheduled)

WRITE: SENDS REAL SMS to real people and SPENDS CREDITS from the user's SMS Everyone account; a sent message cannot be recalled (a campaign scheduled for later can be cancelled with cancel_campaign). One message text to 1 to 25 phone numbers in international format without "+" (e.g. 61400123456 for Australia, 6421123456 for New Zealand). Cost = credits per part x number of parts x recipients: a text is 160 characters per part (153 when longer), and one emoji or non-English character makes it unicode: 70 characters per part (67 when longer), more credits. Numbers on the account's optout list are skipped. The originator is where the message appears to come from and must be one registered with SMS Everyone for the account (an Australian alphanumeric sender must be ACMA registered). Optional time_scheduled (YYYYMMDDHHmm in the account's time zone; a time in the past sends at once). Only send what the user explicitly asked for; confirm the text, recipients and sender first. No stored lists, no bulk. SMS Everyone REST: POST /api/campaign with Action create.

Input Schema

{
  "type": "object",
  "properties": {
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user confirms this exact write and its affected recipients/campaign."
    },
    "originator": {
      "type": "string",
      "minLength": 1,
      "maxLength": 15,
      "description": "Sender: the registered originator exactly as SMS Everyone gave it (a mobile number without +, a 4 to 6 digit short code, or a registered alphanumeric name; names are case sensitive)."
    },
    "destinations": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "1 to 25 recipient numbers in international format with country code, no leading 0, e.g. 61400123456."
    },
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "The message text (long texts are split into several parts and cost more)."
    },
    "time_scheduled": {
      "description": "Optional send time YYYYMMDDHHmm in the account's time zone, e.g. 203507301300 = 30 July 2035, 1pm. Omit to send now.",
      "type": "string",
      "pattern": "^\\d{12}$"
    }
  },
  "required": [
    "confirm",
    "originator",
    "destinations",
    "message"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴smseveryone_cancel_campaign(campaign_id, confirm)

WRITE: deletes a scheduled SMS campaign so it is not sent. Only works before the campaign start time (afterwards SMS Everyone refuses it with an error code). It cannot be undone. SMS Everyone REST: POST /api/campaign with Action delete.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "The CampaignId SMS Everyone returned when the message was sent or scheduled."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user confirms this exact write and its affected recipients/campaign."
    }
  },
  "required": [
    "campaign_id",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴smseveryone_pause_campaign(campaign_id, confirm)

WRITE: pauses a scheduled campaign (or one that is sending; SMS Everyone sends over 1000 messages a second, so a running campaign usually finishes first). A campaign scheduled in the past cannot be paused. This server has no way to resume it: the user must do that in SMS Everyone. SMS Everyone REST: POST /api/campaign with Action pause.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991,
      "description": "The CampaignId SMS Everyone returned when the message was sent or scheduled."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user confirms this exact write and its affected recipients/campaign."
    }
  },
  "required": [
    "campaign_id",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴smseveryone_add_optouts(confirm, numbers)

WRITE: adds 1 to 25 phone numbers to the account's optout database, so no later campaign is sent to them. This server cannot opt a number back in. Do it only when the user asks. SMS Everyone REST: POST /api/optouts with Action add.

Input Schema

{
  "type": "object",
  "properties": {
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true only after the user confirms this exact write and its affected recipients/campaign."
    },
    "numbers": {
      "minItems": 1,
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Numbers in international format, e.g. 61400123456."
    }
  },
  "required": [
    "confirm",
    "numbers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools