跳转到主要内容
Clink MCP 让 Agent 以已授权用户的身份调用 Clink 钱包和支付工具。本页面向 Agent 平台开发者:平台服务端使用 Clink 签发的平台凭据为每位用户建立 MCP 连接,再由 Agent 通过 MCP 完成支付。个人用户可从本地 Agent 快速接入开始;如果不经过 MCP,请阅读如何对接 RESTful API。

1. 准备环境和平台凭据

Clink 为每个环境分别配置凭据。不要混用 Sandbox UAT 和 Production 的 Token、用户连接、MCP 地址或回调地址。 下文用 {API_BASE_URL} 和 {MCP_URL} 代表所选环境的地址。MCP URL 同时是 OAuth 的 resource 参数和用户 Token 的 audience。 MCP 使用 Pre-registration 签发的平台 client_id 和 client_secret,与 RESTful API 共用同一个平台 client。申请方式、Clink 登记的内容和 RSA 公钥见如何获取平台凭据。开通时要登记首次用户授权使用的 redirect_uri,以及下面的 MCP Scope。 除平台凭据外,后端还要保存 CLINK_API_BASE_URL 和 CLINK_MCP_URL。用户 Token 和解密后的卡字段只能保存在可信服务端。MCP 客户端配置只填 MCP URL,不要填 Token 或 Secret。
每位用户分别建立连接,服务端为每位用户单独保存 Token。所有用户共用同一个平台 client,不要为每个用户申请新的 client。

Scope 配置

Scope 由 Clink 按平台开通的能力统一配置,平台无需自行逐项登记或拼接 Scope。开通时请说明平台需要使用的能力;Clink 会据此配置用户授权的 Scope。平台只需在授权流程中使用 Clink 提供的配置。 如果调用未开通的能力,工具会返回 insufficient_scope。需要新增能力时,请联系 Clink 更新配置,并让用户重新授权。OAuth Scope 只决定 Agent 能调用哪些工具,不等于用户授权了某笔购买,两者的区别见 Wallet Service。

2. 配置 Agent 的 system prompt

平台的 Agent 需要一份规则,才知道怎么调用 Clink MCP 工具、怎么在几种支付方式之间选择,以及哪些操作不能做。把下面的规则复制到 Agent 的 system prompt 中:
  1. 先复制「通用规则」,它是必选的。
  2. 再按平台开通的能力,复制对应的模块,依次拼接在通用规则后面。没有复制的模块,Agent 不会使用对应能力。
  3. Browser Pay、UCP Pay 和 Quick Pay 都会用到用户钱包里的卡,接入任何一种支付时都建议同时复制 Wallet Services。
Agent 连接 MCP 后还会读取服务端的 clink://skill/rules。服务端返回的规则或 next_action 与 system prompt 不一致时,以服务端为准,这一点已经写在通用规则里。

通用规则(必选)

Wallet Services

管理卡片、默认卡、购买授权和风控规则。能力说明见 Wallet Service。

Browser Pay

在任意商户网站上用卡支付。流程说明见 Browser Pay。

UCP Pay

UCP 商品搜索、UCP 结账和权益兑换。流程说明见 UCP Pay。

Quick Pay

在 Clink 商户处直接下单,以及查询订单和退款。流程说明见 Quick Pay。

3. 代码集成

Clink MCP 使用 Streamable HTTP 传输,协议版本为 2026-07-28。请使用支持该版本的 MCP Client SDK 或 Agent 框架,由它们处理协议协商、请求头和流式响应。 用户完成首次 OAuth 授权并换取 Token 后,平台服务端必须按平台用户和环境持久化保存返回的 access_token、refresh_token、过期时间和已授予的 Scope。不要只把 Token 放在当前请求或 Agent 进程的内存中,否则服务重启后无法继续使用用户的 MCP 连接。
  • access_token:调用 MCP 时使用;过期或收到 401 时,用对应的 refresh_token 获取新 Token。
  • refresh_token:加密保存。每次刷新都会返回新的 Refresh Token,先原子保存新值,再使用新的 Access Token;同一用户、同一环境的刷新必须串行,避免并发刷新导致旧 Token 被重复使用。
  • 用户标识:用平台自己的稳定用户 ID 作为主键,并按环境隔离;不要用邮箱作为主键,也不要跨用户或环境复用 Token。
  • 撤销或刷新失败后,删除本地失效 Token,并重新走用户授权流程;不能绕过用户授权直接创建新的连接。
Token 是服务端凭据,只能在可信服务端加密保存和使用。不要写入 Agent 配置文件、system prompt、浏览器存储、日志、工具参数或用户消息。 下面是一个服务端持久化和刷新 Token 的示例。tokenStore 应连接服务端数据库或密钥存储;withUserTokenRefreshLock 应使用数据库锁或分布式锁,确保同一用户、同一环境不会并发刷新:
tokenStore 需要以 platformUserId + environment 建立唯一记录;生产实现还应使用密钥管理服务加密 Token,并避免在异常、日志和监控中输出 Token 内容。撤销或刷新失败时删除失效凭据,并重新引导用户完成授权。 在 Agent 框架中把 Clink 注册为远程 MCP Server:
  • url:所选环境的 {MCP_URL}。
  • Authorization:Bearer {USER_ACCESS_TOKEN},即当前用户的 Access Token,在运行时按用户注入。
首次运行不能直接获取用户 Access Token。服务端应先调用 /platform/sessions:
  • 返回 authorized:读取响应中的 access_token,持久化 Token,然后启动本次 Agent 运行。
  • 返回 authorization_required:不要启动 Agent 或连接 MCP;将响应中的 authorization_url 原样交给当前用户,等待用户完成登录和授权。OAuth 回调校验成功后,再重试 /platform/sessions,拿到 authorized 响应并持久化 Token。
用户已经完成过授权后,每次启动新的 Agent 运行或 MCP 会话时,按平台用户 ID 和环境读取持久化记录,并调用下面的 getAccessToken()。它会返回仍然有效的 Access Token,或在即将过期时串行刷新后返回新的 Access Token,再把这个值注入 Agent 框架的 MCP 配置。
收到 authorization_required 时,平台把 authorizationUrl 交给当前用户;用户完成授权并通过回调后,重新调用 startAgentRun()。服务端回调处理器应先校验 state、iss 和 PKCE,再重试 /platform/sessions,并将 authorized 响应中的 access_token、refresh_token、过期时间和 Scope 持久化。 不要在服务启动时获取一个 Token 并供所有用户共用,也不要把 Token 写死在 Agent 配置中。MCP 会话建立后,如果请求返回 401,先结束或重建当前 MCP 连接,再刷新该用户 Token 并重试一次;不要把 Token 放入工具参数。 用户 Access Token 由平台服务端通过 /platform/sessions 和 OAuth 取得并刷新,流程见 Agent Platform MCP 登录。Token 只在服务端注入,不要写进配置文件、system prompt 或工具参数。
配置完成后,用 get_account_state 做一次只读检查:能读到 paymentMethods 即表示连接成功,列表为空只说明钱包里还没有卡。遇到 401 时刷新用户 Token;遇到 403 insufficient_scope 时,联系 Clink 补充 Scope 后让用户重新授权。

相关文档