mcpField
S
stillos-kya

stillos-kya

远程服务
github.com/stillmarcus24安全05 周前更新
代码仓库

关于 stillos-kya

stillos-kya 是用于 Agent 付款前检查交易对手的 JavaScript 包,结合 OFAC 筛查与链上钱包信号,返回失败时默认拦截的判定;付费检查还提供可验证的签名回执。

主要功能

  1. 01OFAC SDN 名称筛查
  2. 02实时链上钱包风险信号
  3. 03CLEAR、REVIEW 或 BLOCK 判定
  4. 04Ed25519 签名筛查回执
  5. 05使用 kyaGate 门控支付路由

适用场景

  1. 01付款前筛查 Agent 交易对手
  2. 02依据判定门控 x402 支付路由
  3. 03留存签名筛查凭证以备争议

MCP 相关

该包包含用于执行交易对手检查的 MCP 服务。设置 STILLOS_KYA_AGENT 可在重启后保持持久的 Agent 身份。

配置

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

服务地址https://stillos-kya-edge.stillos.workers.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmstillos-kya0.4.3

工具

1
参数类型必填说明
namestring否用于制裁筛查的交易对手法定名称/显示名称(可选)
walletstring否用于链上风险信号的交易对手 EVM 钱包地址(可选)

详细介绍

stillos-kya — 了解你的 Agent

Agent 间交易的信任通行费。 在你的 AI Agent 向另一个 Agent 付款前,先做一项检查:交易对手是否受到制裁?它的钱包是否涉及诈骗、合约风险或资金被盗?StillOS 会返回 fail-closed 的 CLEAR / REVIEW / BLOCK 判定——结合 OFAC SDN 筛查和实时链上钱包信号——并生成一份 Ed25519 签名回执,可附在交易中,作为尽职调查的证明。

a16z(Big Ideas 2026)指出,「了解你的 Agent」——签名的 Agent 凭证加上交易对手信任——是商家允许 Agent 使用支付通道的前提。这是一套可直接接入的实现。

安装

npm install stillos-kya

使用 — 一次调用

const { kya } = require('stillos-kya');

const r = await kya({ name: 'Acme Agent', wallet: '0xabc...' });
if (!r.allowed) throw new Error(`counterparty ${r.verdict}`); // CLEAR | REVIEW | BLOCK
// r.receipt -> { hash, signature, verify }  (signed, verifiable proof-of-screening)

使用 — 一行代码即可为 x402 / express 路由设置门控

const { kyaGate } = require('stillos-kya');

// Every payment through this route runs a counterparty trust-check first.
app.post('/pay-agent', kyaGate({ blockOnReview: false }), async (req, res) => {
  // req.kya = { verdict, allowed, checks, receipt, ... }
  // ...proceed to pay; blocked counterparties never reach here
});
门控放行条件(0.4.2)

kyaGate 要求判定为明确通过,而不仅仅是拦截 BLOCK。

端点返回值req.kya.verdict门控结果
{"verdict":"CLEAR"}CLEAR放行至你的处理函数
{"verdict":"REVIEW"}REVIEW放行,除非设置了 blockOnReview: true -> 403
{"verdict":"BLOCK"}BLOCK403
402 / 4xx / 5xx / 网络故障—502,fail-closed
200,但没有可识别的判定({}、{"verdict":null}、{"verdict":"UNKNOWN"})UNKNOWN502,fail-closed

最后一行的行为在 0.4.2 中发生了变化。在 0.4.1 及更早版本中,门控检查的是「是否为 BLOCK」,而不是「是否为 CLEAR」,因此任何 200 响应只要没有包含可识别的判定,就会放行至你的处理函数,并将 blocked: false。allowed 的计算本来就是正确的,只是从未被检查。如果你依赖这种行为,kyaGate({ failOpen: true }) 可以显式恢复它——但这只能作为可选设置,而它也本该一直如此。

0.4.2 还修复了 MCP 服务在每次调用时都会生成新 Agent ID 的问题。设置 STILLOS_KYA_AGENT 可确保 Agent 身份在重启后保持稳定;否则,每个进程会生成一个 ID。免费套餐按来源 IP 计量,因此这不会影响配额,只会影响系统能否将你的重复使用识别为重复使用。

套餐

  • 免费: 每个 Agent ID 每天可检查 2 次——提供未签名的判定,即检查结果,用于初步筛查。
  • 付费(通过 x402 支付 $0.25 USDC,或使用 API 密钥): 提供可独立验证的签名回执——这才是发生争议时至关重要的尽职调查证明。

定价和完整端点参考:https://stillosdigitalholdings.com/notary

超出免费套餐后

已内置支付支持。 x402-fetch 和 viem 作为 optionalDependencies 随包提供,因此 npm install stillos-kya 会自动为你安装它们。无需 额外安装。你可以自行检查:

const { paymentCapability } = require('stillos-kya');
paymentCapability(); // { available: true, deps: { 'x402-fetch': true, viem: true }, reason: null }
付款 — 传入签名器,而非密钥

按以下优先顺序使用。StillOS 在任何一种方式下都不会接收、存储或记录你的密钥:

// BEST — you own the whole payment transport. This package never touches a key or signer.
const { wrapFetchWithPayment } = require('x402-fetch');
const payingFetch = wrapFetchWithPayment(fetch, myAccount, 500000n); // 500000 = $0.50 USDC
const r = await kya({ name: 'Acme Agent' }, { fetch: payingFetch });

// GOOD — hand us a signer object; the key stays inside it.
const r = await kya({ name: 'Acme Agent' }, { account: myViemAccount, maxUsd: 0.5 });

// LEGACY — a raw hex private key. Still supported, deliberately last. A raw key in an
// env var is the weakest of these: anything that can read your process env can spend it.
const r = await kya({ name: 'Acme Agent' }, { wallet: process.env.MY_WALLET_KEY });

遇到 402 时,SDK 会完成付款并仅重试一次(MAX_PAYMENT_RETRIES === 1)。对于它不认识的网络、资产或方案,它会拒绝签名,而不会盲目信任挑战内容。

面向 Agent 的错误恢复

如果未配置付款能力,kya() 会抛出一个 KyaHttpError,其中包含自主调用方执行后续操作所需的全部信息——根据 err.code 分支判断,切勿根据消息文本判断:

const { kya, KyaHttpError, CODES } = require('stillos-kya');
try {
  await kya({ name: 'Acme Agent' });
} catch (e) {
  if (e instanceof KyaHttpError && e.code === CODES.PAYMENT_REQUIRED) {
    e.payment;      // { mechanism:'x402', scheme, network, asset, asset_name,
                    //   pay_to, amount_usd, amount_base_units, resource, max_timeout_seconds }
    e.remediation;  // { action:'configure_payment_capability', accepted:[...],
                    //   free_tier_alternative: '...' }
  }
}

错误代码:PAYMENT_REQUIRED · PAYMENT_CAPABILITY_MISSING · PAYMENT_CONSTRUCTION_FAILED · PAYMENT_REJECTED · PAYMENT_UNSUPPORTED · BAD_402 · BAD_REQUEST · SERVER_ERROR。

安全

**StillOS 绝不会索要、接收、传输或存储你的私钥。**付款完全在你这边签名,我们收到的仅是标准的 x402 X-PAYMENT 授权标头。你用自己的钱包支付自己的请求。

密钥材料绝不会出现在错误消息、日志行或遥测数据中——即使格式错误的密钥解析失败也是如此;此时我们会刻意屏蔽底层库自身的错误文本,而不是重新抛出。

STILLOS_KYA_WALLET_KEY 仍受支持,可用于 CLI 和向后兼容。它是旧式便捷方式,并非推荐架构:在代码中优先使用 fetch 或 account。

CLI:STILLOS_KYA_WALLET_KEY=0x... stillos-kya check "Acme Agent"

签名为何重要

如果交易对手后来被发现受到制裁或存在欺诈行为,那么未签名的“看起来没问题”毫无价值。StillOS 签名回执是加密证明,表明你在付款之前进行了筛查——这份审计凭证能保护你。

评论

支持 Markdown

第一次接触 MCP?

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

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