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、簡訊與電子郵件、驗證 OTP 驗證碼,並執行與監控行銷活動。

可以做什麼
  • 向最多 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 分