为代理设置 Sendmux,选择 MCP、CLI、SDK 或 HTTP,验证作用域凭证,并进行首次无害调用。
Sendmux 正在启动是一项面向实际任务的技能,主要用于ClawHub 账户注释;此 ClawHub 技能将 OpenClaw 代理连接到 Sendmux. 有些工作流程需要 Sendmux 账户和适当的 Sendmux API 密钥或代理符。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
本 ClawHub 技能用于将 OpenClaw 智能体连接至 Sendmux。部分工作流需要一个 Sendmux 账户以及对应的 Sendmux API 密钥或智能体令牌(agent token)。Sendmux 账户的使用独立于 ClawHub;请勿要求用户将密钥粘贴到聊天窗口中。
使用此技能,可帮助用户从“我有一个 Sendmux 任务”出发,快速定位到正确的接入面(surface)、密钥类型、软件包,并完成首次经验证的调用。
claim_token 或智能体凭证绝不可仅通过聊天记录、日志、代码仓库文件、截图或仅驻留内存的状态进行传递或存储。identity_assertion 或预申领(pre-claim)的 smx_agent_* 令牌需持续可用,直至所有者邀请返回 202 状态码;claim_token 仅用于审批通过后的交换流程。若当前智能体支持 Skills 功能,且尚未安装 Sendmux 相关技能,请先安装技能包:
npx skills add Sendmux/skills
Skills 为可选功能。若智能体不支持安装 Skills,请直接从 https://app.sendmux.ai/auth.md 开始操作。
| 任务类型 | 密钥前缀 | 起始入口 |
|---|---|---|
| 通过 Sending API 发送邮件 | 具备发送能力的 smx_mbx_ 密钥,或经所有者批准的 Sending 资源型 smx_agent_ 令牌 |
sendmux-send-email(用于真实发送);本技能可先验证软件包/API 发现流程。 |
| 读取、搜索、同步、分类或回复单个邮箱中的邮件 | smx_mbx_ 密钥,或作用域受限的 smx_agent_ 令牌 |
邮箱(Mailbox)MCP、CLI 或 SDK。 |
| 管理域名、邮箱、邮箱密钥、邮件服务商、Webhook、日志、账单或指标数据 | smx_root_ 密钥 |
管理(Management)MCP、CLI 或 SDK。 |
| 让智能体自行注册并邀请其所有者 | 暂无已有密钥,随后生成 smx_agent_ 令牌 |
智能体访问路径:/auth.md、挑战端点(challenge endpoint)、identity_endpoint、令牌端点(token endpoint)、/api/v1/mailbox/me 及邀请端点(invite endpoint)。 |
若任务同时涉及管理类与邮箱类操作,请分别使用独立密钥及对应客户端或配置文件。切勿在邮箱作用域场景中使用 root 密钥。
sendmux-mcp 服务,且所需工具已被精选收录时,优先选用 MCP。sendmux CLI。建议添加 --json 参数,以便下游智能体解析响应结构。CLI:
npm install -g @sendmux/cli
MCP:
pipx install sendmux-mcp
TypeScript SDK 软件包:
npm install @sendmux/mailbox npm install @sendmux/management npm install @sendmux/sending
请根据任务类型选择并安装唯一匹配的软件包;除非项目确实需要全部三类功能,否则无需安装全部三个包。
MCP 工具调用:
mailbox_get_me
CLI:
SENDMUX_API_KEY="$SENDMUX_MBX_KEY" sendmux profiles:set mailbox --default --json sendmux mailbox:me:get --json
SDK:
import { createMailboxClient, mailboxGetMe } from "@sendmux/mailbox";
const client = createMailboxClient({ apiKey: process.env.SENDMUX_API_KEY! });
const response = await mailboxGetMe({ client });
console.log(response.data);
该调用将解析承载令牌(bearer token)所关联的邮箱身份,是针对 smx_mbx_ 及作用域受限的 smx_agent_ 邮箱工作流默认且安全的首调接口。
适用于智能体尚无任何人手工创建密钥的情形。
https://app.sendmux.ai/auth.md 文档。/auth.md 中提供的复制粘贴式证明辅助工具(copy-paste proof helper)。POST /agent-auth/agent/identity/challenge 端点提交匿名注册请求体(intended anonymous registration body),以获取注册挑战(registration challenge)。proof_of_work 编码为 Base64 UTF-8 格式的 JSON 字符串,格式如下:{ "challenge": , "solution": { "counter": , "derivedKey": } } 。identity_endpoint(即 POST /agent-auth/agent/identity)处,使用相同请求体并附加 proof_of_work 创建匿名身份。claim_token 与智能体凭证包(agent credential bundle)安全持久化存储;随后使用返回的 identity_assertion 向 POST /agent-auth/oauth2/token 发起令牌交换。smx_agent_ 令牌调用 GET /api/v1/mailbox/me。identity_assertion 或预申领令牌(pre-claim token)须保持可用,直至所有者邀请返回 202;claim_token 本身无法触发邀请流程。POST /agent-auth/agent/identity/invite 发起邀请;若未知,则询问:我应邀请哪位所有者邮箱进行审批?claim_token 完成申领授权(claim grant);在调用 Sending API 前,需指定 resource=https://smtp.sendmux.ai/api/v1。预申领的 smx_agent_ 令牌仅具备 mailbox.read 与 email.receive 权限,不具备 email.send;经所有者批准的 Sending 资源型 smx_agent_ 令牌方可从所分配邮箱发送邮件。Sendmux 通过邀请端点(invite endpoint)向所有者发送邀请邮件。同一时刻仅允许存在一个有效的预申领邀请;重试时需复用相同的幂等性键(idempotency key)。若令牌交换返回预期的 503 状态,应遵循 Retry-After 或 retry_after 响应头等待重试;若注册返回 503 server_error,请立即中止并上报错误,而非循环重试;若智能体认证(agent auth)返回 429,也须等待 Retry-After 或 retry_after 后再重试。
claim_token 仅在注册成功后显示一次,且所有者审批通过后必须使用该值。Sendmux 无法在之后恢复该令牌。注册完成后,须立即安全存储完整的智能体凭证包,包含:claim_token、registration_id、mailbox.email、claim_token_expires、identity_assertion、token_endpoint、应用资源 URL 与发送资源 URL。推荐使用 1Password、操作系统密钥链(OS keychain)或智能体平台提供的加密密钥存储服务。令牌交换后,应保留预申领令牌,或持续维护 identity_assertion 的可用性直至邀请返回 202。若无可用安全存储,请中止流程并询问用户:“凭证包应存于何处?” 再发送所有者邀请。若 claim_token 遗失,需重新执行注册与邀请流程,并生成新的智能体身份;若在邀请返回 202 前已丢失 identity_assertion 和预申领令牌,请立即在同一上下文中重跑注册与邀请流程。
MCP 工具调用:
management_list_mailboxes
CLI:
SENDMUX_API_KEY="$SENDMUX_ROOT_KEY" sendmux profiles:set root --default --json sendmux management:mailboxes:list --query limit=1 --json
SDK:
import {
createManagementClient,
managementListMailboxes,
} from "@sendmux/management";
const client = createManagementClient({ apiKey: process.env.SENDMUX_API_KEY! });
const response = await managementListMailboxes({
client,
query: { limit: 1 },
});
console.log(response.data);
建议以小规模列表查询作为首次管理类检查,既可验证 root 密钥有效性,又避免误创建或修改资源。
发送(Sending)接入面需使用具备 email.send 权限的发送能力型 smx_mbx_ 密钥,或经所有者批准的 Sending 资源型 smx_agent_ 令牌。除非用户明确要求发送测试邮件并提供完整消息内容,否则不应以真实邮件发送作为健康检查手段。
CLI 端软件包/API 发现:
SENDMUX_API_KEY="$SENDMUX_MBX_KEY" sendmux sending:get-open-api-spec --json
SDK 端软件包/API 发现:
import { createSendingClient, sendingGetOpenApiSpec } from "@sendmux/sending";
const client = createSendingClient({ apiKey: process.env.SENDMUX_API_KEY! });
const response = await sendingGetOpenApiSpec({ client });
console.log(response.data.info);
如需真实发送邮件,请路由至 sendmux-send-email 并附带 Idempotency-Key 请求头。
smx_mbx_ 或作用域受限的 smx_agent_;发送类操作使用具备发送能力的 smx_mbx_ 密钥或经所有者批准的 Sending 资源型 smx_agent_;管理类操作使用 smx_root_。401:密钥缺失、无效或已被撤销。403:密钥有效,但缺少当前调用所需的权限或接入面支持。429 或 503:请严格依据响应头中的重试策略执行,切勿手动循环重试。ok: true:身份认证已成功,仅表示当前暂无对应资源。sendmux-send-email。sendmux-mailbox-agent。sendmux-management。sendmux-cli。sendmux-mcp-setup。sendmux-token-efficient-usage。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134万人学习
共49课时 | 82.5万人学习
最新文章