{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
Stripe Link Cli
通过 Stripe Link 做 agent 支付:银行卡、SPT、审批。
Skill 元数据
| 来源 | 可选——使用 hermes skills install official/payments/stripe-link-cli 安装 |
| 路径 | optional-skills/payments/stripe-link-cli |
| 版本 | 0.1.0 |
| 作者 | Teknium (teknium1), Hermes Agent |
| 许可证 | MIT |
| 平台 | linux, macos |
| 标签 | Payments, Stripe, Link, Checkout, MPP |
| 相关 skill | mpp-agent、stripe-projects |
参考:完整 SKILL.md
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
Stripe Link CLI Skill
封装 @stripe/link-cli,让 Hermes 能替用户使用一次性虚拟卡或共享支付令牌(SPT)完成购买。每笔消费都要在 Link 移动/Web 应用里通过应用内审批——Hermes 不能自己批准。
目前仅限美国(需要 Link 账户)。上游 CLI 不支持 Windows——本 skill 限定 [linux, macos]。
使用时机
触发短语:
- "buy X"、"pay for X"、"make a purchase"、"complete checkout"
- "get me a card"、"I need a payment method"
- "log in to Link"、"connect my Link wallet"
- 商户 API 返回 HTTP 402,且
www-authenticate: ... method="stripe"
如果用户想要一次付费 API 调用(HTTP 402,没有 checkout 表单),card 路径不对——改用本 skill 的 SPT,或交给 mpp-agent skill。
前提条件
PATH上有 Node.js 20+(node --version)- 位于美国(需要 Link 账户)
Link 账户、支付方式和消费审批应用不需要在 Hermes 尝试付款之前就配好——CLI 会在首次运行时引导用户完成:
- https://app.link.com 的 Link 账户——在首次
link-cli认证时创建/关联 - 至少一种支付方式——首次运行时在 https://app.link.com/wallet 添加
- Link 移动/Web 应用——首次消费请求发出时打开它来审批
无需环境变量——认证状态由 CLI 存在它自己的配置目录下。
安装
全局安装一次:
npm install -g @stripe/link-cli
或通过 npx @stripe/link-cli 临时调用。下面的 skill 使用已安装的 link-cli 形式。
运行方式
所有命令通过 terminal 工具运行。CLI 自动检测非 TTY 调用者,默认输出紧凑的 toon 格式——对模型足够。如果某步需要结构化字段,传 --format json。
发现命令:link-cli --llms-full。调用前先查某命令的 schema:link-cli <command> --schema。
流程
1. 检查 / 建立认证
link-cli auth status
如果未认证,用一个清晰的客户端名登录(这个标签会显示在用户的 Link 应用里):
link-cli auth login --client-name "Hermes" --interval 5 --timeout 300
--interval/--timeout 形式内联轮询,这样 agent 不需要管理 _next 步骤。把验证 URL + 短语打印给用户,等待 CLI 返回。
在 auth status 确认登录之前,不要越过这一步。
2. 创建消费请求前先评估商户
决定凭据类型:
| 商户形态 | --credential-type |
|---|---|
| 标准网页 checkout 表单 / Stripe Elements | card(默认) |
返回 HTTP 402,www-authenticate 里带 method="stripe" | shared_payment_token |
返回 HTTP 402 但不带 method="stripe" | 不支持——停止 |
对于 402 响应,不要手动解码挑战。传原始头:
link-cli mpp decode --challenge '<full WWW-Authenticate header>'
这会校验挑战并提取网络 ID + 解码后的请求体。
3. 列出支付方式 + 配送地址
link-cli payment-methods list
link-cli shipping-address list
除非用户指定,否则用第一条。payment-methods list 里的 id 就是下一步的 --payment-method-id。
4. 创建消费请求
发出此命令前,与用户确认最终总额。金额单位是美分。
link-cli spend-request create \
--payment-method-id <pm_id> \
--merchant-name "<name>" \
--merchant-url "<url>" \
--context "<一句话:买的是什么、为什么>" \
--amount <cents> \
--line-item "name:<item>,unit_amount:<cents>,quantity:1" \
--total "type:total,display_text:Total,amount:<cents>" \
--request-approval
对于 MPP 商户,加 --credential-type shared_payment_token。
--request-approval 会 ping 用户的 Link 应用并轮询,直到他们批准或拒绝。CLI 在拒绝/超时时以非零退出码退出。
5. 取回凭据——安全地
不要把卡面信息打印到 stdout。 用 --output-file,让 PAN 永不进入 agent 对话记录或日志:
link-cli spend-request retrieve <lsrq_id> \
--include card \
--output-file ~/.hermes/cache/scratch/link-card.json \
--format json
文件以 0600 权限写入;stdout 只显示脱敏字段(品牌、后四位、有效期)外加一个 card_output_file 路径。
6. 使用凭据
-
网页 checkout:把文件路径交给用户,或传给一个浏览器驱动工具,让它直接从磁盘填表。永远不要
read_file或cat把卡文件读进 agent 的推理上下文。 -
对于 MPP 商户:
link-cli mpp pay <merchant-url> \ --spend-request-id <lsrq_id> \ --method POST \ --data '<json body>'
7. 清理
购买完成后立即删除卡文件:
rm -f ~/.hermes/cache/scratch/link-card.json
可选:改为作为 MCP 服务器运行
@stripe/link-cli --mcp 通过 stdio 把同样的命令暴露为 MCP 工具。要注册到 Hermes 原生 MCP:
hermes mcp add stripe-link --command "npx" --args "@stripe/link-cli --mcp"
然后 hermes mcp list 应显示 stripe-link。同样的审批规则适用——MCP 不绕过 Link 应用审批这一步。
常见陷阱
- 仅限美国。 在美国以外,
auth login会失败。告诉用户,不要反复重试。 - 卡 PAN 绝不能进入 agent 上下文。 每次都用
--output-file。如果你已经没用它取回,立刻link-cli auth logout还不够——卡是一次性的,但轮换卫生很重要。 --request-approval会阻塞直到用户行动。 如果用户睡着了,CLI 会超时。提前打好招呼。- 多步
_next命令。 有些命令返回必须执行才能继续的_next.command。拿不准时,优先用内联轮询标志(--interval/--timeout)。 - 非 TTY 模式下输出格式默认
toon。 对 prose 没问题,但如果下游步骤要解析某个字段,传--format json。 - 不要默认
card。 商户评估步骤(第 2 节)之所以存在,就是因为选错凭据类型会让购买静默失败或泄露超出需要的数据。
验证
link-cli --version && link-cli auth status
退出码 0 表示已安装且已登录。