SendKuy

com.sendkuy由 sendkuy.com 发布v1.0.0更新于 Oct 30, 2026

Send WhatsApp, SMS and email, verify OTP codes and run campaigns with SendKuy.

已验证STDIO仅桌面沟通与协作商业与电商

概览

AI 生成的概览

SendKuy MCP 让助手通过 SendKuy 账户发送 WhatsApp、短信和邮件,校验验证码,并运行和监控营销活动。

可以做什么
  • 向最多 100 个收件人发送同一条消息,或一次批量发送最多 500 条内容各异的消息,渠道为 WhatsApp、短信或邮件
  • 发送一次性验证码,并校验用户输入的验证码
  • 按 id 查询消息状态,或按渠道、状态和时间列出近期消息,并取消尚未发送的消息
  • 查询联系人、联系人分组、模板以及号码是否注册 WhatsApp
  • 列出、启动、查看活动进度,以及暂停、恢复或取消活动
  • 读取账户套餐、额度与用量,并查看 webhook 投递尝试记录
适用场景
适合需要助手直接触达人员的场景:值班告警、按客户发送订单更新、按门店发送每日汇总,或验证码流程。在开发集成时也很有用,例如发送测试消息或排查 webhook 与消息失败原因。
运行要求
通过 npm 包以 stdio 在本地运行,需要 Node.js 和 npx。需要 SendKuy 账户,并在 SENDKUY_API_KEY 环境变量中提供 API 密钥,密钥需含 account:read 及所需工具的权限范围。需要能访问 SendKuy API 的网络;SENDKUY_BASE_URL 可指向代理或模拟服务。
安装前请注意
发送类工具会真实发送消息并消耗 SendKuy 额度,包括验证码和启动活动;向分组发送会对每位成员计费。取消活动不可撤销。只授予必要的权限范围,因为带写入权限的密钥会暴露发送工具。收件人电话号码、邮箱和消息内容会发送给 SendKuy 这一第三方。

安装

在 SourceWeft 中

  1. 打开 控制台中的 SendKuy,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[SendKuy MCP server]

SendKuy MCP server

Give AI assistants and agents a way to reach people: send WhatsApp, SMS and email, verify OTP codes and run campaigns through your SendKuy account.

[npm] [CI] [License: MIT] [sendkuy/sendkuy-mcp MCP server]

Use it while you build an integration ("send a test OTP to my number", "why is my webhook failing?"), or as the notification step of an agent that runs on its own: an on-call alert, a daily revenue summary, an order update per customer.

Full guide with scenarios: docs.sendkuy.com/mcp

Get a key

Create an API key at app.sendkuy.com/user/api. Give it account:read plus the scopes of the tools you want, and nothing more. The server lists only the tools your key can use, so a key with read scopes never sees a tool that sends.

Install

Claude Code:

bash
claude mcp add --transport stdio --env SENDKUY_API_KEY=sk_live_YOUR_API_KEY sendkuy -- npx -y @sendkuy/mcp

Cursor (.cursor/mcp.json), Windsurf and Claude Desktop:

json
{  "mcpServers": {    "sendkuy": {      "command": "npx",      "args": ["-y", "@sendkuy/mcp"],      "env": { "SENDKUY_API_KEY": "sk_live_YOUR_API_KEY" }    }  }}

VS Code (.vscode/mcp.json):

json
{  "inputs": [    {      "type": "promptString",      "id": "sendkuy-key",      "description": "SendKuy API key",      "password": true    }  ],  "servers": {    "sendkuy": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@sendkuy/mcp"],      "env": { "SENDKUY_API_KEY": "${input:sendkuy-key}" }    }  }}

Claude Desktop can also install sendkuy-mcp.mcpb from the latest release with one click.

Tools

ToolWhat it doesScopes
sendkuy_get_accountPlan, credits per channel, usage this period, the key's scopesaccount:read
sendkuy_send_messageOne body to 1–100 recipients, contacts or a group, on one channelmessages:write
sendkuy_send_batchUp to 500 messages with different content, answered row by rowmessages:write
sendkuy_get_messagesStatus of up to 20 messages by idmessages:read
sendkuy_list_messagesRecent messages by channel, status and timemessages:read
sendkuy_cancel_messageCancel a message not sent yetmessages:write
sendkuy_send_verificationSend an OTP codeverifications:write
sendkuy_check_verificationCheck the code a user typedverifications:write
sendkuy_check_whatsapp_numbersWhich numbers are on WhatsAppnumbers:read
sendkuy_find_contactsA contact by phone or external_idcontacts:read
sendkuy_list_templatesSaved message templatestemplates:read
sendkuy_list_groupsContact groups and their sizegroups:read
sendkuy_list_campaignsCampaigns prepared in the dashboardcampaigns:read
sendkuy_start_campaignStart a campaigncampaigns:write
sendkuy_get_campaignProgress and delivery statscampaigns:read
sendkuy_control_campaignPause, resume or cancelcampaigns:write
sendkuy_list_webhook_deliveriesWebhooks and their latest delivery attemptswebhooks:read

Tools that send really send and spend credit. They take an optional dedupe_key: an agent that repeats a step with the same key gets the first answer back instead of sending twice.

Examples

  • On-call alert. "When the health check fails, WhatsApp the on-call group with the service name and the error." The agent sends to the group's grp_ id with dedupe_key set to the incident id.
  • Daily revenue summary. "Every evening, send each branch manager their own numbers." One sendkuy_send_batch call, a different body per manager.
  • Debugging an integration. "Which WhatsApp messages failed in the last hour, and why?" sendkuy_list_messages, then sendkuy_list_webhook_deliveries.

Configuration

Variable
SENDKUY_API_KEYYour API key. Without it, or when the key is invalid or SendKuy can't be reached at start-up, the server still starts and lists its tools, and every call answers with the reason until you fix it and restart the client.
SENDKUY_BASE_URLOnly for a proxy or a mock server in tests. Defaults to https://app.sendkuy.com/api/v1.

License

MIT

来源:README.md,提交 bdf9282

工具

17

sendkuy_get_account

Get SendKuy account

Read the SendKuy account behind this API key: plan, remaining credits per channel (WhatsApp, SMS, email), messages used this billing period, the rate limit, and the scopes this key holds. Check credits before a large send. plan, credits and usage are null for SendKuy staff keys.

无需输入参数。

sendkuy_send_message

Send a message

Send one message body to 1 to 100 recipients on one channel: WhatsApp, SMS or email. Use it for an alert, a summary or a one-off notification where everyone gets the same text. To reach a saved contact group, put its grp_ id in to. When each recipient needs different content (a summary per branch, a notification per order) use sendkuy_send_batch. A campaign prepared in the SendKuy dashboard is started with sendkuy_start_campaign and can be paused or cancelled midway. Phone numbers must be E.164 with the leading + (for example +6281234567890). This really sends and spends SendKuy credit. A recipient on the suppression list or who unsubscribed still gets a message id and fails later; read the final status with sendkuy_get_messages. One recipient is sent while you wait; several are queued and sent in the background, paced per number. Pass dedupe_key so a retried step does not send twice. The answer counts every message per status and lists the first 20; read the rest with sendkuy_list_messages.

输入参数to必填body必填mediachannel必填subjectdedupe_keygateway_idattachmentsschedule_attemplate_idtemplate_parameters

sendkuy_send_batch

Send a batch of messages

Send up to 500 independent messages in one call, each with its own channel, recipient and body. Use it when the content differs per recipient: a revenue summary per branch, a notification per order, a reminder per invoice. Every row is answered on its own: one bad number or a channel out of credit fails that row only, and the rest still go out. The answer lists the message id of every row in input order (null where the row failed) and each failed row with its error. Messages are queued and sent in the background, paced per number. This really sends and spends SendKuy credit. A recipient on the suppression list or who unsubscribed still gets a message id and fails later; read the final status with sendkuy_get_messages. Pass dedupe_key so a retried step does not send the batch twice.

输入参数messages必填dedupe_key

sendkuy_get_messages

Get message status

Read the current status of 1 to 20 messages by id (msg_...): queued, scheduled, sending, sent, delivered, read, failed, cancelled and so on, with the error when one failed. Use it after a send to confirm delivery, or to find out why a message failed.

输入参数ids必填

sendkuy_list_messages

List recent messages

List recent messages, newest first, filtered by channel, status and creation time. Use it to answer "which WhatsApp messages failed in the last hour?" while debugging an integration. To check specific messages, use sendkuy_get_messages.

输入参数limitcursorstatuschannelcreated_aftercreated_before

sendkuy_cancel_message

Cancel a message

Cancel a message that has not been sent yet, such as a scheduled one or one still queued in a batch. A message already handed to the provider cannot be called back.

输入参数id必填

sendkuy_send_verification

Send an OTP code

Send a one-time code to a phone number or email address and get a verification id (vrf_...). SendKuy generates the code, sends it, and falls back through the channels you list in order. Check what the user typed with sendkuy_check_verification. This really sends and spends SendKuy credit. Pass dedupe_key so a retried step does not send a second code.

输入参数tottlbrandemaillocalechannelsdedupe_keycode_length

sendkuy_check_verification

Check an OTP code

Check the code a user typed against a verification from sendkuy_send_verification. status approved means the code was right. A wrong code answers verification_code_invalid and uses up one of checks_remaining.

输入参数id必填code必填

sendkuy_check_whatsapp_numbers

Check WhatsApp numbers

Check whether up to 50 phone numbers are registered on WhatsApp before you send to them. Numbers must be E.164 with the leading +; a local number without the country code comes back registered: null. Limited to 10 calls a minute per key.

输入参数numbers必填gateway_id

sendkuy_find_contacts

Find a contact

Find one saved contact by phone number (E.164) or by external_id, the id your own system gave the customer. Returns contact: null when nobody matches. Use the contact id (con_...) as a recipient in sendkuy_send_message.

输入参数phoneexternal_id

sendkuy_list_templates

List message templates

List the message templates saved in SendKuy, with their channel, subject and body. Variables in a body are written as placeholders the template fills in. Pass a WhatsApp template id as template_id to sendkuy_send_message.

输入参数limitcursor

sendkuy_list_groups

List contact groups

List the contact groups in SendKuy with how many contacts each holds. Put a group id (grp_...) in the to field of sendkuy_send_message to send to every member; check contact_count first, because every member is charged.

输入参数limitcursor

sendkuy_list_campaigns

List campaigns

List campaigns, newest first, with their status and audience size (total_contacts). Campaign content is written in the SendKuy dashboard; a draft found here is ready to run with sendkuy_start_campaign.

输入参数limitcursor

sendkuy_start_campaign

Start a campaign

Start a draft or scheduled campaign. An instant campaign starts sending to every eligible contact in its group, is refused with insufficient_credits when the balance does not cover them, and spends real SendKuy credit. A scheduled or recurring campaign waits for its time. If a person is in the conversation, tell them the campaign name and total_contacts before you start it. Pause or cancel it with sendkuy_control_campaign.

输入参数id必填

sendkuy_get_campaign

Get campaign progress

Read a campaign: status, progress (processed_contacts of total_contacts), why it is paused, and delivery stats (sent, delivered, failed, opened, replied, unsubscribed) overall and per channel.

输入参数id必填

sendkuy_control_campaign

Pause, resume or cancel a campaign

Pause a running campaign, resume a paused one, or cancel it for good. Pause is the emergency brake when a campaign is going out wrong: messages not yet sent stay unsent until you resume. Cancel cannot be undone.

输入参数id必填action必填

sendkuy_list_webhook_deliveries

List webhook deliveries

Show the webhooks on this account and their latest delivery attempts: the HTTP status your endpoint answered, the error, an excerpt of the response, and when the next retry is due. Use it to answer "why is my webhook failing?". Without webhook_id it reads the first five webhooks.

输入参数limitwebhook_id

版本历史

1
  1. v1.0.0最新Oct 29, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分