mcpField
T
token-safety-check

token-safety-check

本地服务
github.com/lx1112金融数据04 天前更新

关于 token-safety-check

token-safety-check 为 Agent 和脚本检查所列区块链上的代币风险。它提供基于规则的评分、易读原因和变化追踪;检查通过 x402 以 Base 上的 USDC 付费。

主要功能

  1. 01给出 0–100 风险评分
  2. 02说明权限与合约风险
  3. 03检查流动性和持有人集中度
  4. 04用指纹追踪变化
  5. 05通过 x402 按次付费

适用场景

  1. 01交互前检查代币
  2. 02比较代币风险详情
  3. 03监控权限或流动性变化

MCP 相关

向 MCP 客户端提供 `check_token_safety` 工具,接收代币地址及可选链或先前指纹。每次检查通过 x402 使用 Base 上的 USDC 付费。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lx1112-token-safety-check": {
"command": "npx",
"args": [
"-y",
"token-safety-check"
],
"env": {
"X402_PRIVATE_KEY": "<X402_PRIVATE_KEY>",
"TOKEN_SAFETY_MAX_USD": "<TOKEN_SAFETY_MAX_USD>"
}
}
}
}
启动命令npx -y token-safety-check
需要配置的环境变量
X402_PRIVATE_KEY密钥Private key of a dedicated wallet holding a little USDC on Base; pays $0.01 per check
TOKEN_SAFETY_MAX_USD密钥Refuse checks priced above this many USD (default 0.05)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtoken-safety-check0.4.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

token-safety-check

这个代币安全吗? 为 Base、Ethereum、Arbitrum、Optimism、Polygon 或 Solana 上的任意代币进行跑路风险检查,适用于 AI Agent 和脚本。每次检查都会返回:

  • 0–100 的风险分数和等级(低、中、高、严重),并附上通俗易懂的原因:
    • 谁可以铸造、冻结、拉黑、暂停或更改费用
    • 可升级的合约代码
    • Token-2022 永久委托、转账费用和钩子
    • 持有者集中度
    • 流动性不足或缺失
  • 支撑评分的事实:所有者、权限、供应量、主要持有者、流动性池;
  • USD 价格和流动性;
  • 一个指纹。将它作为 since 传回,下次检查就会告知发生了哪些变化:新增风险、权限变更、流动性或价格波动。这样就可以轻松按计划监控代币。

每次检查费用为 $0.01,以 Base 上的 USDC 支付,通过 x402 从你控制的钱包自动扣款。无需账户或 API 密钥。错误和无效输入不会收费,支出上限也会阻止任何超过限额的检查(默认值为 $0.05)。

评分基于规则,不构成投资建议。对于流动性充足的代币,各项权限的影响会降低,因为它们通常是大型发行方的合规控制措施(例如,USDC 可以冻结和铸造代币)。

在 Claude Desktop、Cursor 或任意 MCP 客户端中使用

专门为此新建一个钱包,并向其中转入少量 Base 上的 USDC:$1 可进行 100 次检查。然后将以下内容添加到 MCP 配置中(Claude Desktop 的配置文件为 claude_desktop_config.json):

{
  "mcpServers": {
    "token-safety-check": {
      "command": "npx",
      "args": ["-y", "token-safety-check"],
      "env": { "X402_PRIVATE_KEY": "0x<private key of the dedicated wallet>" }
    }
  }
}

该服务只有一个工具 check_token_safety(参数为 address,以及可选的 chain 和 since)。可选环境变量:

  • TOKEN_SAFETY_MAX_USD:单次检查的支出上限,默认为 0.05。
  • TOKEN_SAFETY_ENDPOINT:指定另一个部署地址。

在代码中使用

npm install token-safety-check
import { createTokenSafetyClient } from "token-safety-check";

const client = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as `0x${string}` });

const first = await client.checkToken({ chain: "base", address: "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" });
console.log(first.risk.score, first.risk.level, first.risk.summary);
// 15 low Low risk: the owner can pause all transfers; ownership is not renounced.

// Later: what changed since then?
const later = await client.checkToken({ address: first.address, chain: "base", since: first.watch.fingerprint });
if (later.watch.changes?.anythingChanged) console.log(later.watch.changes);

在 Coinbase AgentKit 中使用

import { customActionProvider } from "@coinbase/agentkit";
import { z } from "zod";
import { createTokenSafetyClient } from "token-safety-check";

const safety = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as `0x${string}` });

export const tokenSafety = customActionProvider({
  name: "check_token_safety",
  description: "Rug check a token on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana: 0-100 risk score with reasons.",
  schema: z.object({
    address: z.string().describe("Token contract or Solana mint address"),
    chain: z.enum(["base", "eth", "arbitrum", "optimism", "polygon", "solana"]).optional(),
  }),
  invoke: async (args) => JSON.stringify(await safety.checkToken(args)),
});
// Add tokenSafety to the actionProviders you pass to AgentKit.from(...).

在 LangChain(JS)中使用

import { tool } from "@langchain/core/tools";
import { z } from "zod";
import { createTokenSafetyClient } from "token-safety-check";

const safety = createTokenSafetyClient({ privateKey: process.env.X402_PRIVATE_KEY as `0x${string}` });

export const checkTokenSafety = tool(async (args) => JSON.stringify(await safety.checkToken(args)), {
  name: "check_token_safety",
  description: "Rug check a token on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana: 0-100 risk score with reasons.",
  schema: z.object({
    address: z.string(),
    chain: z.enum(["base", "eth", "arbitrum", "optimism", "polygon", "solana"]).optional(),
  }),
});

输出示例(已精简)

{
  "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed",
  "chain": "base",
  "name": "Degen",
  "symbol": "DEGEN",
  "risk": {
    "score": 15,
    "level": "low",
    "reasons": [
      { "code": "can-pause", "points": 10, "text": "The owner can pause all transfers." },
      { "code": "owner-not-renounced", "points": 5, "text": "Ownership is not renounced." }
    ],
    "summary": "Low risk: the owner can pause all transfers; ownership is not renounced."
  },
  "market": { "dex": "uniswap-v3", "pairedWith": "WETH", "priceUsd": 0.000963, "quoteSideLiquidityUsd": 134000 },
  "watch": { "fingerprint": "eyJzIjoxNSwi…", "changes": null }
}

不使用此软件包

此检查是一个普通的 x402 端点,因此任何 x402 客户端都可以直接调用: GET https://ca-tax-api-mainnet.lxtap.workers.dev/token?chain=<chain>&address=<address>[&since=<fingerprint>]。 它也已列入 x402 Bazaar。

安全说明

  • 使用余额较少的专用钱包。密钥不会离开你的设备;它只会用于签署按报价支付的 USDC 款项。
  • 每次检查的价格都会在付款前从服务的付款请求中读取,任何超过 maxUsdPerCheck / TOKEN_SAFETY_MAX_USD 的费用都会被拒绝。

采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

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

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