smsmode MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read smsmode balance, messages, replies, campaigns and usage; send SMS to up to 10 numbers.
13 tools: 2 can delete or cancel things and 11 only read.
Scanned Oct 21, 2026
- Deletes or cancels2Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads11Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http smsmode https://smsmode.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
13 tools
Deletes or cancels 2Claude Code: deny
smsmode_cancel_scheduled_messageWRITE: cancels ONE message that is still scheduled (status SCHEDULED, sent with send_at) so it is not sent; smsmode refuses messages already sent.No findings
Why it is in this group
- The name "smsmode_cancel_scheduled_message" says "cancel": a word for removing or ending something.
- The description says "Cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: cancels ONE message that is still scheduled (status SCHEDULED, sent with send_at) so it is not sent; smsmode refuses messages already sent. Cannot be undone. DELETE /sms/v1/messages/{id}.
Annotations the server declares
- title: Cancel a scheduled message
- destructiveHint: true
smsmode_send_smsWRITE, SPENDS CREDIT: sends one SMS text to 1 to 10 recipients (one message each, a batch of unit messages) and texts REAL people immediately, or at send_at.No findings
Why it is in this group
- The name "smsmode_send_sms" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE, SPENDS CREDIT: sends one SMS text to 1 to 10 recipients (one message each, a batch of unit messages) and texts REAL people immediately, or at send_at. Cost: every message is charged to the account at its destination's price per SMS part (GSM7: 160 characters for 1 part, 306 for 2, 459 for 3...; UNICODE: 70, 134, 201...); the accept reply returns each message's id and status (the price may only appear later on smsmode_get_message / smsmode_list_messages; total_price is given when present). A batch can partly fail: failures lists the refused numbers, which are not charged. A message is never retried: after a timeout or error, check smsmode_list_messages (ref_client) before sending again. Max 10 recipients, no campaigns or lists. Check smsmode_get_balance first. POST /sms/v1/messages.
Annotations the server declares
- title: Send an SMS to 1-10 recipients
- destructiveHint: true
Only reads 11Claude Code: allow
smsmode_get_balanceThe credit balance of the connected smsmode account (and sub-organisations an administrator key can see): amount and currency (negative = owed on a POST_PAY account), payment type …No findings
Why it is in this group
- The name "smsmode_get_balance" says "get": a word for reading.
Description, as the server wrote it The credit balance of the connected smsmode account (and sub-organisations an administrator key can see): amount and currency (negative = owed on a POST_PAY account), payment type (PRE_PAY / POST_PAY), state, monthly consumption and its limit. Good first call; check it before sending SMS. GET /commons/v1/organisations.
Annotations the server declares
- title: Get the account balance
- readOnlyHint: true
smsmode_get_campaignOne campaign: state, period, recipients count, text, price and delivery counts per status.No findings
Why it is in this group
- The name "smsmode_get_campaign" says "get": a word for reading.
Description, as the server wrote it One campaign: state, period, recipients count, text, price and delivery counts per status. Use smsmode_list_messages with campaign_id for its individual messages. GET /sms/v1/campaigns/{id}.
Annotations the server declares
- title: Get an SMS campaign
- readOnlyHint: true
smsmode_get_channelDetails of one channel: type, flow, default sender ID and authorized sender IDs, limits and consumption.No findings
Why it is in this group
- The name "smsmode_get_channel" says "get": a word for reading.
Description, as the server wrote it Details of one channel: type, flow, default sender ID and authorized sender IDs, limits and consumption. GET /commons/v1/channels/{id}.
Annotations the server declares
- title: Get a channel
- readOnlyHint: true
smsmode_get_consumptionOne consumption record broken down by country (mcc) or network (mccMnc) with quantity and price per sub-item, optionally with delivery statuses.No findings
Why it is in this group
- The name "smsmode_get_consumption" says "get": a word for reading.
Description, as the server wrote it One consumption record broken down by country (mcc) or network (mccMnc) with quantity and price per sub-item, optionally with delivery statuses. GET /commons/v1/consumptions/{id}.
Annotations the server declares
- title: Get a consumption with its breakdown
- readOnlyHint: true
smsmode_get_messageOne message: delivery status and detail, delivery date, recipient network, text, parts and price.No findings
Why it is in this group
- The name "smsmode_get_message" says "get": a word for reading.
Description, as the server wrote it One message: delivery status and detail, delivery date, recipient network, text, parts and price. GET /sms/v1/messages/{id}.
Annotations the server declares
- title: Get a message and its delivery status
- readOnlyHint: true
smsmode_get_organisationFull details of one organisation: contacts, addresses, company information, balance, monthly limit and consumption.No findings
Why it is in this group
- The name "smsmode_get_organisation" says "get": a word for reading.
Description, as the server wrote it Full details of one organisation: contacts, addresses, company information, balance, monthly limit and consumption. GET /commons/v1/organisations/{id}.
Annotations the server declares
- title: Get an organisation
- readOnlyHint: true
smsmode_list_campaignsExisting SMS campaigns (grouped sends) with status SCHEDULED / ONGOING / ENDED, quantity, price and per-status delivery counts.No findings
Why it is in this group
- The name "smsmode_list_campaigns" says "list": a word for reading.
Description, as the server wrote it Existing SMS campaigns (grouped sends) with status SCHEDULED / ONGOING / ENDED, quantity, price and per-status delivery counts. Read only: this server does not send campaigns. GET /sms/v1/campaigns.
Annotations the server declares
- title: List SMS campaigns
- readOnlyHint: true
smsmode_list_channelsList messaging channels (SMS or RCS; flow TRANSACTIONAL / MARKETING / OTP) with default sender, daily and monthly limits and consumption.No findings
Why it is in this group
- The name "smsmode_list_channels" says "list": a word for reading.
Description, as the server wrote it List messaging channels (SMS or RCS; flow TRANSACTIONAL / MARKETING / OTP) with default sender, daily and monthly limits and consumption. A channel id is needed to scope messages or consumption to one channel. GET /commons/v1/channels.
Annotations the server declares
- title: List channels
- readOnlyHint: true
smsmode_list_consumptionsSent-message counts and money spent per month or per day (price amount and currency), optionally for one channel.No findings
Why it is in this group
- The name "smsmode_list_consumptions" says "list": a word for reading.
Description, as the server wrote it Sent-message counts and money spent per month or per day (price amount and currency), optionally for one channel. Default: monthly, the last 3 months. GET /commons/v1/consumptions.
Annotations the server declares
- title: List consumption statistics
- readOnlyHint: true
smsmode_list_messagesMessages with delivery status (SCHEDULED, ENROUTE, DELIVERED, UNDELIVERABLE, UNDELIVERED; status.detail names the cause), recipient, sender, text, parts and price.No findings
Why it is in this group
- The name "smsmode_list_messages" says "list": a word for reading.
Description, as the server wrote it Messages with delivery status (SCHEDULED, ENROUTE, DELIVERED, UNDELIVERABLE, UNDELIVERED; status.detail names the cause), recipient, sender, text, parts and price. Default window: the last 10 days. Filter by direction (MT = sent, MO = replies received), recipient, your reference, channel or campaign. Paged: pass next_page as page. GET /sms/v1/messages.
Annotations the server declares
- title: List sent and received messages
- readOnlyHint: true
smsmode_lookup_numberCountry and mobile network (mcc/mnc, operator) of a phone number.No findings
Why it is in this group
- The name "smsmode_lookup_number" says "lookup": a word for reading.
Description, as the server wrote it Country and mobile network (mcc/mnc, operator) of a phone number. Only for customers with a premium smsmode subscription and, for now, only French numbers (403 otherwise). GET /commons/v1/lookup/{msisdn}.
Annotations the server declares
- title: Look up a phone number's network
- 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.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http smsmode https://smsmode.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__smsmode__smsmode_get_balance",
"mcp__smsmode__smsmode_get_organisation",
"mcp__smsmode__smsmode_list_channels",
"mcp__smsmode__smsmode_get_channel",
"mcp__smsmode__smsmode_list_consumptions",
"mcp__smsmode__smsmode_get_consumption",
"mcp__smsmode__smsmode_lookup_number",
"mcp__smsmode__smsmode_list_messages",
"mcp__smsmode__smsmode_get_message",
"mcp__smsmode__smsmode_list_campaigns",
"mcp__smsmode__smsmode_get_campaign"
],
"ask": [],
"deny": [
"mcp__smsmode__smsmode_send_sms",
"mcp__smsmode__smsmode_cancel_scheduled_message"
]
}
}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 smsmode. Review it before you use it.