Voodoo SMS MCP by usefulapi
Read Voodoo SMS credits, reports, inbox and lists; send one SMS; manage the opt-out blacklist.
我该使用它吗
质量与安全性
发现(3)
- LOW在 voodoosms_list_delivery_reports 中
- LOW在 voodoosms_list_scheduled_messages 中
- LOW在 voodoosms_cancel_scheduled_message 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"voodoo-sms": {
"url": "https://voodoo-sms.usefulapi.io/mcp"
}
}
}远程端点
https://voodoo-sms.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(13)
🟢voodoosms_get_credits
Get the SMS credit balance of the account. One credit pays for one 160-character SMS part (153 characters per part in a long message). Voodoo SMS REST: GET /credits.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_delivery_reports(message_id, sender_id, to, sent_at, delivered_at, ...)
List delivery reports of sent messages (message_id, sender_id, to, sent_at, delivered_at, price, status), optionally filtered. Use it to check whether a message was delivered. Dates accept a UNIX timestamp, ISO 8601 (2026-10-01T09:00:00+00:00) or plain English ('yesterday', '2 weeks'). Voodoo SMS REST: GET /report.
输入模式
{
"type": "object",
"properties": {
"message_id": {
"description": "The messages[].id returned when the SMS was sent.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sender_id": {
"description": "The sender id the messages were sent with.",
"type": "string",
"minLength": 1,
"maxLength": 30
},
"to": {
"description": "Only messages sent to this number (international format, e.g. 447700900123).",
"type": "string"
},
"sent_at": {
"description": "Only messages sent at this date/time.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"delivered_at": {
"description": "Only messages delivered at this date/time.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"external_reference": {
"description": "The external_reference used when sending.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"description": "Only messages with this status.",
"type": "string",
"enum": [
"Delivered",
"Sent - Awaiting Delivery",
"Undelivered",
"Expired",
"Rejected"
]
},
"start": {
"description": "Start of the date range to filter on.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "End of the date range to filter on.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"limit": {
"description": "Number of reports to return (default 25, max 1000).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_scheduled_messages
List SMS that were scheduled through the send API and are still waiting to go out (messages scheduled in the portal's Web SMS are not shown). Voodoo SMS REST: GET /schedule.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_inbox(keyword, start, end, from, to, ...)
List SMS received on the account's Virtual Mobile Numbers (replies and keyword messages). Needs a purchased number; an empty inbox returns an empty result. Dates accept a UNIX timestamp, ISO 8601 or plain English. Voodoo SMS REST: GET /inbox.
输入模式
{
"type": "object",
"properties": {
"keyword": {
"description": "The keyword (first word of the message).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"start": {
"description": "Oldest date of the messages to return.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Newest date of the messages to return.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"from": {
"description": "The number the message came from (international format).",
"type": "string"
},
"to": {
"description": "The number the message was sent to: your virtual number (international format).",
"type": "string"
},
"reference": {
"description": "The external_reference of the original outgoing message.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort": {
"description": "Sort by id, ASC or DESC (default DESC).",
"type": "string",
"enum": [
"ASC",
"DESC"
]
},
"skip": {
"description": "Where to start the returned results (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Number of messages to return (default 25, max 1000).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_numbers
List the Virtual Mobile Numbers (VMNs) the account has purchased, used to receive SMS. Returns an empty result if there are none. Voodoo SMS REST: GET /numbers.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_contact_lists(skip, limit)
List the account's contact lists (id, name, status, size, created/updated times) without their contacts. Returns an empty result if there are none. Voodoo SMS REST: GET /contacts.
输入模式
{
"type": "object",
"properties": {
"skip": {
"description": "Where to start the returned results (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Number of lists to return (default 100, max 5000).",
"type": "integer",
"minimum": 1,
"maximum": 5000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_get_contact_list(contact_list_id, skip, limit)
Get one contact list including its contacts (id, number, status, dynamic_data, created_at). Voodoo SMS REST: GET /contacts?contact_list_id=.
输入模式
{
"type": "object",
"properties": {
"contact_list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact list id (id from list_contact_lists)."
},
"skip": {
"description": "Where to start the returned results (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Number of contacts to return (default 100, max 5000).",
"type": "integer",
"minimum": 1,
"maximum": 5000
}
},
"required": [
"contact_list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢voodoosms_list_blacklist(number, start, end, sort, skip, ...)
List the numbers on the account's opt-out blacklist (no SMS is ever sent to them), or look up one number (`{empty: true}` means it is not on the list). Returns an empty result when the blacklist is empty. Voodoo SMS REST: GET /blacklist.
输入模式
{
"type": "object",
"properties": {
"number": {
"description": "Look up a single number (international format, e.g. 447700900123).",
"type": "string"
},
"start": {
"description": "Oldest date a number was added.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Newest date a number was added.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"sort": {
"description": "Sort by id, ASC or DESC (default DESC).",
"type": "string",
"enum": [
"ASC",
"DESC"
]
},
"skip": {
"description": "Where to start the returned results (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Number of entries to return (default 25, max 1000).",
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴voodoosms_send_sms(to, from, msg, country_code, schedule, ...)
WRITE: SENDS A REAL SMS to ONE recipient and USES THE ACCOUNT'S CREDITS (1 credit per message part, charged whether or not it is delivered; it cannot be undone). `sandbox` is required: true validates and prices the message without sending or charging, false sends it for real. Optional `schedule` queues it for later (cancel with cancel_scheduled_message). Do not retry after an error or timeout without checking list_delivery_reports / list_scheduled_messages, or the recipient may get it twice. One recipient per call; there is no bulk or list send. Voodoo SMS REST: POST /sendsms.
输入模式
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "ONE recipient number: international format with the country code and no leading 0 (447700900123), or a national number if country_code is given."
},
"from": {
"type": "string",
"description": "Sender id shown to the recipient: 4 to 11 letters/digits or a number of up to 15 digits."
},
"msg": {
"type": "string",
"minLength": 1,
"maxLength": 918,
"description": "The message text. 160 characters per part (153 in a long message), 70 (67) if it has emoji or other non-GSM characters; maximum 918 (402 with Unicode)."
},
"country_code": {
"description": "Country calling code of the recipient (e.g. 44), when `to` has no country code.",
"type": "integer",
"minimum": 1,
"maximum": 999
},
"schedule": {
"description": "Send later: a UNIX timestamp, ISO 8601 (2026-12-25T09:00:00+00:00) or plain English ('2 weeks'). Must be in the future.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"timezone": {
"description": "Timezone for `schedule` (default UTC).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"external_reference": {
"description": "Your own reference for this SMS (e.g. an order number); shown in reports.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"sandbox": {
"type": "boolean",
"description": "REQUIRED. true = validate and price the message only: nothing is sent and no credits are used. false = really send the SMS and use credits. Use true first unless the user clearly asked to send now."
}
},
"required": [
"to",
"from",
"msg",
"sandbox"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴voodoosms_cancel_scheduled_message(id)
WRITE: cancels one SMS that was scheduled through the send API, so it will not be sent. A message that has already gone out cannot be cancelled. Whether credits are refunded for a cancelled message is not documented by the vendor. Voodoo SMS REST: DELETE /schedule/{id}.
输入模式
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The scheduled message id (id from list_scheduled_messages)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴voodoosms_add_to_blacklist(number)
WRITE: adds one number to the account's opt-out blacklist; from then on no SMS is sent to it (sends to it fail with error 20). Use it for a recipient who asked to stop. This tool cannot remove a number again. Voodoo SMS REST: POST /blacklist.
输入模式
{
"type": "object",
"properties": {
"number": {
"type": "string",
"description": "Phone number in international format with the country code and no leading 0, e.g. 447700900123."
}
},
"required": [
"number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴voodoosms_create_contact_list(name, description, country, contacts)
WRITE: creates a new contact list with up to 500 contacts (the list name must be unique, at most 32 characters). It does not send anything. Voodoo SMS REST: POST /contacts.
输入模式
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Unique list name, at most 32 characters."
},
"description": {
"description": "Optional description.",
"type": "string",
"maxLength": 255
},
"country": {
"description": "Default country calling code for the list (default 44).",
"type": "integer",
"minimum": 1,
"maximum": 999
},
"contacts": {
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "string",
"description": "Phone number in international format with the country code and no leading 0, e.g. 447700900123."
},
"dynamic_data": {
"description": "Custom fields for this contact as {name: value}, at most 7 (usable in messages as {name}).",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"additionalProperties": {
"type": "string",
"maxLength": 255
}
}
},
"required": [
"number"
]
},
"description": "Contacts to put in the list: [{number, dynamic_data?}]."
}
},
"required": [
"name",
"contacts"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴voodoosms_update_contact_list(contact_list_id, name, contacts)
WRITE: renames a contact list and/or adds up to 500 contacts to it (existing contacts are not removed). Adding dynamic data needs a list created as dynamic. It does not send anything. Voodoo SMS REST: PUT /contacts/{contact_list_id}.
输入模式
{
"type": "object",
"properties": {
"contact_list_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact list id (id from list_contact_lists)."
},
"name": {
"description": "New list name, at most 32 characters.",
"type": "string",
"minLength": 1,
"maxLength": 32
},
"contacts": {
"description": "Contacts to add: [{number, dynamic_data?}].",
"minItems": 1,
"maxItems": 500,
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "string",
"description": "Phone number in international format with the country code and no leading 0, e.g. 447700900123."
},
"dynamic_data": {
"description": "Custom fields for this contact as {name: value}, at most 7 (usable in messages as {name}).",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"additionalProperties": {
"type": "string",
"maxLength": 255
}
}
},
"required": [
"number"
]
}
}
},
"required": [
"contact_list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据