mcpField
T
Tokensafe

Tokensafe

远程服务
github.com/ampactor-labs金融数据02 天前更新
代码仓库

关于 Tokensafe

Tokensafe 是面向交易者和 Agent 的 Solana SPL 代币风险筛查 API。它根据链上数据和兑换报价评分,提供免费简查并为完整报告签名;其 MCP 端点目前仅开放免费检查。

主要功能

  1. 01依据链上信号评估代币风险
  2. 02检查权限、流动性和卖出能力
  3. 03返回风险等级与可读摘要
  4. 04为完整报告签名以供验证
  5. 05提供免费简查和阈值决策

适用场景

  1. 01交易前筛查 Solana 代币
  2. 02比较多个候选代币的风险
  3. 03按风险阈值决定是否继续操作

MCP 相关

MCP 端点提供免费的 `solana_token_safety_check` 工具,返回简查结果。付费完整检查工具尚未启用。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://tokensafe-production.up.railway.app/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

1
参数类型必填说明
mint_addressstring是Solana 代币 mint 地址,采用 base58 格式

详细介绍

TokenSafe

一个根据链上数据评估 Solana 代币 Rug Pull 风险的 API,并通过 x402 微支付以 $0.02 出售完整报告。Rug Pull 指代币创建者抽走其价值的行为;链上指记录在公开账本上的数据。x402 是一种 HTTP 支付流程:服务端返回 402,调用方的钱包使用 USDC(一种美元稳定币)付款,然后重试请求即可获得签名报告。该项目使用 TypeScript 和 Express;九项检查中有七项通过 Helius RPC 查询 Solana 数据,另两项使用 Jupiter 兑换报价。

状态:已上线。 此仓库没有 CI;在确认通过 MCP 端点(AI Agent 调用的接口)完成真实的 x402 结算之前,付费工具将保持关闭。

线上服务:https://scry-production.up.railway.app/ · 文档:docs/API.md · INTEGRATION.md

快速开始

API 位于 https://tokensafe-production.up.railway.app。轻量检查免费且无需钱包(mint 是代币在 Solana 上的地址;以下示例为封装 SOL):

curl 'https://tokensafe-production.up.railway.app/v1/check/lite?mint=So11111111111111111111111111111111111111112'

它会返回 risk_score、risk_level、summary、can_sell 和 authorities_renounced 等标志,以及 full_report 指针;封装 SOL 在 2026-09-27 的风险评分为 5(LOW)。完整检查在付款前会返回 402:

curl -sS -D - -o /dev/null 'https://tokensafe-production.up.railway.app/v1/check?mint=So11111111111111111111111111111111111111112'

PAYMENT-REQUIRED 标头(base64 JSON)要求支付 20000 个 USDC 基础单位。USDC 有六位小数,因此这相当于 $0.02。任何 x402 客户端都可以完成付款并重试,例如 INTEGRATION.md 中展示的 @x402/fetch。

对于 AI Agent,MCP 端点提供一个免费工具 solana_token_safety_check,用于返回轻量检查结果:

claude mcp add --transport http tokensafe https://tokensafe-production.up.railway.app/mcp

Claude Code 也可以通过 /plugin marketplace add ampactor-labs/tokensafe,然后运行 /plugin install tokensafe@ampactor-labs,将其安装为插件。

用法

付费端点接受 x402 或 X-API-Key 标头。GET /v1/check 的费用为 $0.02。最多检查 5、20 或 50 个 mint 的批量请求(POST /v1/check/batch/{small,medium,large})分别收费 $0.07、$0.20 或 $0.40。最多检查 10 或 50 个 mint 的资金库审计(POST /v1/audit/{small,standard})分别收费 $0.15 或 $0.60,并会增加策略检查和签名报告。POST /v1/subscribe 收费 $49,可购买有效期为 30 天的 Pro 密钥,每月可进行 6,000 次检查,每分钟最多 200 个请求;密钥以 tks_ 开头。轻量检查、/v1/decide、/v1/verify、/health、/mcp 和发现文档均免费。付费路由和 /health 每个 IP 每分钟允许 60 个请求;免费检查和 /mcp 每分钟允许 30 个请求。价格只在 src/discovery/catalog.ts 中声明一次,并由支付门控和发现文档共同使用,因此调用方支付的价格不会与公布的价格不一致。

对于只需要门控的调用方,/v1/decide 会根据阈值将轻量评分转换为是或否:

curl 'https://tokensafe-production.up.railway.app/v1/decide?mint=So11111111111111111111111111111111111111112&threshold=30'

在 2026-09-27,该端点返回 "decision":"SAFE","risk_score":5,"risk_level":"LOW","threshold_used":30,"score_reliable":true。结果降级时会返回 UNKNOWN,而不是猜测。所有端点、响应格式、评分权重和支付流程均见 docs/API.md;Webhook、管理员密钥管理和错误代码见 INTEGRATION.md。

工作原理

src/app.ts 是一个 Express 应用。请求先经过发现文档和 /health,然后是免费路由(/v1/check/lite、/v1/decide、/v1/verify、管理和审计读取路由),接着进行 API 密钥检查,然后通过 x402 门控(src/x402/middleware.ts,基于 @x402/express 构建),最后才进入付费路由。一次检查(src/analysis/token-checker.ts)会先通过 Helius(一家托管的 Solana RPC 提供商)读取铸币账户,再并行执行最大持有者检查、在 Jupiter(一款 Solana 兑换聚合器)上进行买入和卖出报价往返检查、元数据检查和代币年龄检查,随后检测流动性和 LP 锁定,最后评分、签名,并将结果与该铸币地址的上一次检查结果进行差异比较。一次未命中缓存的检查会发起 6 到 11 次 RPC 调用,以及 1 到 3 次 HTTP 调用;这些数量根据检查模块统计,不包括重试。结果保存在含 10,000 个条目的 5 分钟内存 LRU 缓存中(降级结果缓存 30 秒),对同一铸币地址的并发请求会共用一次分析。

检查项检测内容来源
铸币权限供应量仍可被增发RPC getAccountInfo 和 getMint
冻结权限持有者的账户可能被冻结同一次读取
最大持有者最大 10 个账户的集中度,排除由已知 DeFi 程序拥有的账户RPC getTokenLargestAccounts 和 getMultipleAccounts
流动性是否存在兑换路径及其深度Jupiter 报价;失败时回退到 DexScreener(一家市场数据网站)
LP 锁定Raydium(一家 Solana 交易所)AMM v4 池的 LP 代币(代表池内资金的凭证)是否存放在已知的锁仓合约或销毁地址中RPC,对照 9 个锁仓程序地址检查
貔貅盘买入成功但卖出失败,或存在卖出税Jupiter 买入报价与卖出报价的对比
元数据名称和图像仍可被更改通过 RPC 读取 Metaplex 元数据账户(Solana 元数据标准)
代币年龄是否在 1 小时或 24 小时内上线RPC getSignaturesForAddress
Token-2022(较新的代币程序)转账费用、永久委托权限、转账钩子铸币账户中的类型-长度-值(TLV)扩展数据

评分(src/analysis/risk-score.ts)会为每项发现加上固定罚分,并将总分上限设为 100:活跃且不受信任的铸币权限会扣除 15 到 30 分,具体取决于成熟度信号(流动性充足、代币已运行一段时间、持有者分布广泛);无流动性扣 30 分,卖出失败扣 30 分,永久委托权限扣 30 分,依此类推。0 到 20 分为 LOW,21 到 40 分为 MODERATE,41 到 60 分为 HIGH,61 到 80 分为 CRITICAL,超过 80 分为 EXTREME。无法执行的检查会增加不确定性罚分,而不会被悄然视为通过。完整的权重表见 docs/API.md。

有两个设计决策影响了这一方案。我选择根据链上读取结果和兑换报价计算分数,而不是依赖第三方安全 API 或模型,因为输入项明确的分数可复现,也值得签名:每份完整报告都会对 {mint, checked_at, rpc_slot, risk_score} 使用 Ed25519(一种公钥签名方案)签名;响应会携带 response_signature 和 signer_pubkey(也会显示在 /health 中);POST /v1/verify 可免费验证签名,因此转发的判定结果就是一份证明,即任何人都能确认的签名声明。第二个决策是让支付同时承担身份验证功能:x402 默认取代 API 密钥;对于没有钱包的调用方,则提供订阅密钥。

部署

API 运行在 Railway 上;https://tokensafe-production.up.railway.app/health 是其存活检查页面(根路径会返回 404,因为没有根路由)。它由 Dockerfile 构建:这是一个多阶段 node:22-slim 镜像,使用 tsc 编译,通过 npm ci --omit=dev 安装生产依赖,并运行 node dist/index.js,同时配置了 /health 容器健康检查。部署触发器和密钥(财库钱包、Helius 密钥、Coinbase CDP 辅助程序密钥、签名密钥)都存放在 Railway 中;此仓库没有部署工作流。/health 会报告网络、签名者公钥和缓存统计信息;2026-09-27 时,它显示运行在主网且已正常运行 58 天。Scry(Live 链接中的 Web 端、Telegram:https://t.me/ScryTokenBot)是独立服务,其前端会调用此 API。

如需运行自己的实例,请参阅 docs/SELF-HOSTING.md。简而言之,你需要一个财库钱包地址、一个 Helius API 密钥,以及 Coinbase CDP 密钥或 FACILITATOR_URL=https://facilitator.payai.network,因为默认辅助程序在没有 CDP 密钥时会返回 401,导致服务器在启动时退出。

测试

npm test 会运行 vitest:在 Node 24.21.0 上共有 19 个文件、537 项测试,耗时 16.5 秒(测量于 2026-10-26)。测试涵盖评分权重和阈值、针对模拟 RPC 和 Jupiter 响应的每个检查模块、LP 锁定检测、delta 检测和告警、策略引擎、通过 supertest 测试 HTTP 路由(禁用了检查器和 x402 门控的模拟)、API 密钥、审计、webhook 和监控器的边沿触发告警、MCP 支付门控、通过 /v1/verify 进行响应签名,以及发现文档。测试套件中的任何测试都不会连接 Solana、Jupiter、DexScreener 或辅助程序,也不会结算任何付款。

SMOKE_URL=https://tokensafe-production.up.railway.app npm run test:smoke 会针对运行中的实例执行 25 项只读检查:健康检查标头、402 挑战及其 $0.02 金额、批量和发现路由、MCP tools/list 和工具调用、针对真实代币的 lite 和 decide 端点,以及错误格式。2026-09-27 在生产环境中通过了 25 项检查,耗时 19 秒。该测试不会付款。付费路径为 SVM_PRIVATE_KEY=<base58 keypair> npm run test:x402,需要已充值的钱包,此处未运行。

此仓库没有 CI 工作流;测试在开发者的计算机上运行。

局限性

此工具读取链上状态,因此只能发现链上状态所反映的问题。开发者直接抛售,或团队钱包遭到入侵,在事情发生之前都会生成一份干净的报告。SAFE 判定意味着检查未发现问题,并不代表代币安全。

蜜罐检测会比较 Jupiter 对 0.1 SOL 的买入报价和卖出报价,因此无法发现只拒绝部分卖家或仅在一段时间后才拒绝卖出的逻辑;没有 Jupiter 路由的代币会被判为未知(10 分),而非蜜罐。LP 锁定检测仅针对 Raydium AMM v4 池,并识别来自两个锁仓服务 Streamflow 和 UNCX 的 9 个程序地址,以及发送到销毁地址(无人控制的销毁地址)的 LP 代币;在此类池中,锁定在其他任何地方的流动性都会被视为未锁定,并扣 15 分;其他所有池类型均不会检查锁定情况。

流动性和蜜罐检测依赖 Jupiter 和 DexScreener 这两项链下服务:如果它们超时,检查会被标记为降级,系统会施加不确定性惩罚,结果缓存 30 秒。正常结果会缓存 5 分钟,因此正在发生的 Rug 事件可能会被缓存为过时结果。持仓集中度根据 20 个最大的代币账户计算;如果 RPC 无法列出某个代币过多的账户,该代币会被标记为 WIDELY_HELD,集中度为 0%。

除非设置了 RESPONSE_SIGNING_KEY,否则签名密钥是临时的;/v1/verify 只会使用当前密钥进行验证,因此未设置该变量时,重启前生成的签名无法验证。CI 不会运行此代码库中的任何内容,部署及其机密信息托管在 Railway 上,因此凭证是签名响应和链上付款。

路线图

  • 通过 MCP 提供付费的完整检查工具。src/mcp/payment.ts 在 JSON-RPC 层使用 x402 为 solana_token_safety_check_full 工具设限,但在 npm run test:x402-mcp 确认真实结算之前,PAID_MCP_TOOL_ENABLED 仍为 false,因此目前端点只公布免费工具(已通过 2026-09-27 的实时 tools/list 确认)。

许可证

尚未选择许可证。代码库没有 LICENSE 文件,package.json 也没有 license 字段;.claude-plugin/plugin.json 声明使用 MIT,因此所有者应添加许可证文件或更正该声明。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。