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 中:- 先复制「通用规则」,它是必选的。
- 再按平台开通的能力,复制对应的模块,依次拼接在通用规则后面。没有复制的模块,Agent 不会使用对应能力。
- Browser Pay、UCP Pay 和 Quick Pay 都会用到用户钱包里的卡,接入任何一种支付时都建议同时复制 Wallet Services。
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,并重新走用户授权流程;不能绕过用户授权直接创建新的连接。
tokenStore 应连接服务端数据库或密钥存储;withUserTokenRefreshLock 应使用数据库锁或分布式锁,确保同一用户、同一环境不会并发刷新:
tokenStore 需要以 platformUserId + environment 建立唯一记录;生产实现还应使用密钥管理服务加密 Token,并避免在异常、日志和监控中输出 Token 内容。撤销或刷新失败时删除失效凭据,并重新引导用户完成授权。
在 Agent 框架中把 Clink 注册为远程 MCP Server:
url:所选环境的{MCP_URL}。Authorization:Bearer {USER_ACCESS_TOKEN},即当前用户的 Access Token,在运行时按用户注入。
/platform/sessions:
- 返回
authorized:读取响应中的access_token,持久化 Token,然后启动本次 Agent 运行。 - 返回
authorization_required:不要启动 Agent 或连接 MCP;将响应中的authorization_url原样交给当前用户,等待用户完成登录和授权。OAuth 回调校验成功后,再重试/platform/sessions,拿到authorized响应并持久化 Token。
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 或工具参数。
- Claude Agent SDK
- OpenAI Agents SDK
- LangChain
- MCP TypeScript SDK
get_account_state 做一次只读检查:能读到 paymentMethods 即表示连接成功,列表为空只说明钱包里还没有卡。遇到 401 时刷新用户 Token;遇到 403 insufficient_scope 时,联系 Clink 补充 Scope 后让用户重新授权。
相关文档
- 如何获取平台凭据:申请
client_id和client_secret,以及三种注册方式。 - Browser Pay 指南:商户结账、凭证保护、结果上报和恢复。
- Wallet Service:钱包、卡片和购买授权的关系。
- Agent Platform MCP 登录:
/platform/sessions的字段和错误处理。 - Browser Pay 工具:MCP 工具字段和响应结构。
- Operation 与恢复:Operation 状态和恢复规则。
- 加密凭证解密:解密
key/payload的示例。 - 如何对接 RESTful API:不经过 MCP,通过 Agent Portal API 接入。
- 如何对接 Vault SDK:Agent 只接触占位卡的 SDK 接入方式。