BulkSMS MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.23.4Updated Nov 7, 2026

Read BulkSMS messages, replies, profile and webhooks; send SMS to up to 10 numbers.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableCommunication & CollaborationBusiness & Commerce

Overview

AI-generated overview

Hosted BulkSMS connector that lets an assistant read sent and received SMS, replies, account credits and webhooks, and send capped SMS.

What you can do
  • Check account profile, credit balance, daily quota and allowed sender ids
  • List and read sent and received messages with delivery status, parts and credit cost
  • List replies linked to a sent message
  • List blocked phone numbers and account webhooks
  • Send one SMS text to up to 10 numbers in international format
  • Block a phone number and manage the server's own usage plan
When to use it
Useful when you want an assistant to check BulkSMS credit and quota, review recent outbound and inbound texts and their delivery status, or send short SMS notifications to a small list of numbers without leaving the chat.
Requirements
Remote MCP endpoint over streamable HTTP; no local install. Sign-in is via OAuth, and the login page asks for your own BulkSMS credentials. Add only the server URL to the client config, with no Authorization header or API key. A free plan allows 50 tool calls per month; paid plans raise the limit.
Before you install
The send tool sends real SMS to real people and spends account credits; it cannot be undone or recalled. Blocking a number cannot be reversed through this API, and a send to a blocked number still costs credits. Webhook listings show only the URL host because paths may contain secrets. The server also offers paid subscription tools that return payment links, and the free tier is metered.

Installation

In SourceWeft

  1. Open BulkSMS MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fbulksms/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "bulksms-by-usefulapi": {
      "type": "http",
      "url": "https://bulksms.usefulapi.io/mcp"
    }
  }
}

README

BulkSMS MCP by usefulapi

Use BulkSMS from Claude, Cursor, or any MCP client — sent messages, replies, profile, blocked numbers and webhooks, plus capped SMS sends. Hosted, no local install: connect with your own BulkSMS credentials.

Live endpoint: https://bulksms.usefulapi.io/mcp · Homepage: https://usefulapi.io/bulksms

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://bulksms.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http bulksms https://bulksms.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "bulksms": {      "url": "https://bulksms.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your BulkSMS credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/bulksms/

Tools

ToolTypeWhat it does
bulksms_get_profilereadGet account profile and credits
bulksms_list_messagesreadList messages
bulksms_get_messagereadGet message
bulksms_list_repliesreadList replies to a sent message
bulksms_list_blocked_numbersreadList blocked numbers
bulksms_list_webhooksreadList webhooks
bulksms_send_messagewriteSend SMS
bulksms_block_numberwriteBlock a phone number
bulksms_usage_statusmetaUsage status (free-tier meter)
bulksms_request_featuremetaRequest a missing feature
bulksms_upgrademetaUpgrade to Pro or Pro+
bulksms_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per user)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with bulksms_upgrade (it returns a Stripe Checkout link). Cancel any time with bulksms_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running bulksms_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT © usefulapi. Not affiliated with or endorsed by BulkSMS.

Source: servers/bulksms/README.md at commit 4046075

Tools

8

bulksms_get_profile

Get account profile and credits

Show the BulkSMS account: username, credit balance, credit limit, whether credit transfer is allowed, the daily message quota (size and remaining today) and the sender ids this account may use. Company and billing details are left out. BulkSMS REST: GET /profile.

Takes no parameters.

bulksms_list_messages

List messages

List sent (SENT) and received (RECEIVED) SMS messages, newest first by default. BulkSMS limits the window to the last 7 days unless submission_date_from is given. To page newest-first, pass before_id = the smallest id of the previous page; with sort_order ASCENDING pass after_id = the largest id of the previous page. REST: GET /messages with a `filter` built from the arguments.

Parameterstypelimitafter_idbefore_idstatus_idsort_orderstatus_typesubmission_iduser_supplied_idsubmission_date_from

bulksms_get_message

Get message

Get one sent or received message by its id: body, recipient, delivery status, number of parts and credit cost. BulkSMS REST: GET /messages/{id}.

Parametersmessage_idrequired

bulksms_list_replies

List replies to a sent message

List the received (RECEIVED) replies linked to a sent message id. Only messages sent with a REPLIABLE sender have linked replies. An empty list means none or an unknown id. BulkSMS REST: GET /messages/{id}/relatedReceivedMessages.

Parametersmessage_idrequired

bulksms_list_blocked_numbers

List blocked numbers

List phone numbers the account may not send to (added via the API, by a recipient replying STOP, or by BulkSMS). To page, pass min_id = the largest id of the previous page + 1. BulkSMS REST: GET /blocked-numbers.

Parameterslimitmin_id

bulksms_list_webhooks

List webhooks

List the account's webhooks (name, trigger SENT/RECEIVED, active flag, invoke option). Only the host of each webhook URL is shown: the path and query can hold a secret. Read-only: webhooks are not changed by this server. BulkSMS REST: GET /webhooks.

Takes no parameters.

bulksms_send_message

Send SMS

WRITE: SENDS REAL SMS to real people and SPENDS CREDITS from the user's BulkSMS account; it cannot be undone or recalled. One message text to 1 to 10 phone numbers in international format (e.g. +447700900000). Cost = credits per message part x number of parts x number of recipients (about 1 credit per 160-character GSM part to a standard-route destination; the exact cost depends on the destination and appears as creditCost on the sent messages afterwards). Messages longer than one part are concatenated up to max_parts parts (default 3). Non-GSM characters (emoji, accents outside GSM 03.38) are replaced by "?" unless auto_unicode is true, which sends Unicode (shorter parts, more credits). Messages to blocked numbers still cost credits. Only send what the user explicitly asked for, confirm the text and recipients first. No groups, no scheduling. Texts containing BulkSMS template placeholders such as {F0###}, {fn###} or {sn###} are rejected (they would merge contact data). BulkSMS REST: POST /messages.

Parameterstorequiredbodyrequiredfrommax_partsauto_unicodeuser_supplied_id

bulksms_block_number

Block a phone number

WRITE: adds ONE phone number to the account's blocked list, so that no further messages are sent to it (a send to a blocked number fails with FAILED.BLOCKED and still costs credits). This API has no way to remove a block again: do it only when the user asks for it. BulkSMS REST: POST /blocked-numbers.

Parametersphone_numberrequired

Version history

19
  1. v1.23.4LatestNov 7, 2026
  2. v1.22.3Nov 5, 2026
  3. v1.22.2Nov 5, 2026
  4. v1.22.1Nov 4, 2026
  5. v1.22.0Nov 3, 2026
  6. v1.21.1Nov 3, 2026
  7. v1.20.0Nov 1, 2026
  8. v1.18.0Oct 31, 2026
  9. v1.17.0Oct 31, 2026
  10. v1.16.2Oct 30, 2026
  11. v1.16.0Oct 30, 2026
  12. v1.11.0Oct 26, 2026
  13. v1.8.3Oct 25, 2026
  14. v1.8.0Oct 25, 2026
  15. v1.7.0Oct 24, 2026
  16. v1.4.0Oct 23, 2026
  17. v1.3.4Oct 22, 2026
  18. v1.3.3Oct 21, 2026
  19. v1.0.0Oct 12, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations