Stillos Kya

io.github.stillmarcus24由 GitHub 账号 stillmarcus24 发布v0.4.3更新于 Nov 2, 2026

Counterparty due-diligence infrastructure: OFAC screening, on-chain risk, signed verdicts.

已验证Streamable HTTP可网页运行金融安全与监控AI 与机器学习

概览

AI 生成的概览

在付款前筛查交易对手 AI 代理,依据 OFAC 制裁名单与链上钱包信号给出 CLEAR、REVIEW 或 BLOCK 的失败即关闭判定。

可以做什么
  • 按名称和钱包地址筛查交易对手代理,得到 CLEAR、REVIEW 或 BLOCK 判定。
  • 在一次检查中结合 OFAC SDN 制裁筛查与实时链上钱包信号。
  • 在付费档获取 Ed25519 签名的尽职调查凭证,可用于争议举证。
  • 在代码中为支付路由加闸门,使被拦截或无法识别的对手无法进入处理逻辑。
适用场景
适用于代理即将向另一个代理或钱包付款或交易、并希望先留下制裁与钱包风险核查记录的场景。适合需要签名审计凭证的代理间商业流程。
运行要求
可作为远程端点运行,也可通过 npx 作为本地 npm 包运行。未声明身份验证。免费档每个代理 id 每天 2 次检查;付费档每次 0.25 USDC(经 x402)或使用 API 密钥,付款需要签名器或支持支付的 fetch。可用 STILLOS_KYA_AGENT 设置持久代理身份。
安装前请注意
付费档每次检查都会花费真实 USDC,应谨慎设置支出上限与签名器。以钱包参数或 STILLOS_KYA_WALLET_KEY 传入原始私钥是最弱的付款方式,优先使用签名器对象或带支付的 fetch。对手名称与钱包地址会发送给第三方服务。免费档判定不带签名。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Stillos Kya,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.stillmarcus24%2Fstillos-kya/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "stillos-kya": {
      "type": "http",
      "url": "https://stillos-kya-edge.stillos.workers.dev/mcp"
    }
  }
}

README

stillos-kya — Know Your Agent

The trust toll for agent-to-agent commerce. Before your AI agent pays another agent, run one check: is the counterparty sanctioned? Is its wallet a scam/contract/drained? StillOS returns a fail-closed CLEAR / REVIEW / BLOCK verdict — OFAC SDN screen + live on-chain wallet signals — with an Ed25519-signed receipt you can attach to the transaction as proof-of-diligence.

a16z (Big Ideas 2026) calls "Know Your Agent" — signed agent credentials + counterparty trust — the prerequisite for merchants to let agents onto payment rails. This is a working drop-in for it.

Install

bash
npm install stillos-kya

Use — one call

js
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)

Use — gate an x402 / express route in one line

js
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});

What the gate lets through (0.4.2)

kyaGate requires a positive clearance. It does not merely block BLOCK.

Endpoint returnsreq.kya.verdictGate
{"verdict":"CLEAR"}CLEARpasses to your handler
{"verdict":"REVIEW"}REVIEWpasses, unless blockOnReview: true -> 403
{"verdict":"BLOCK"}BLOCK403
402 / 4xx / 5xx / network failure—502, fail-closed
200 with no recognized verdict ({}, {"verdict":null}, {"verdict":"UNKNOWN"})UNKNOWN502, fail-closed

That last row changed in 0.4.2. Through 0.4.1 the gate asked "is this BLOCK?" rather than "is this CLEAR?", so any 200 carrying no verdict it recognised fell through to your handler with blocked: false. allowed was already computed correctly and simply never consulted. If you were relying on that behaviour, kyaGate({ failOpen: true }) restores it explicitly — as an opt-in, which is the only form it should ever have had.

0.4.2 also stops the MCP server minting a new agent id on every single call. Set STILLOS_KYA_AGENT for a durable identity across restarts; otherwise one id is minted per process. The free tier meters per source IP, so this never affected quota — it affected whether your repeat usage was legible as repeat usage.

Tiers

  • Free: 2 checks/agent id/day — unsigned verdict, the answer, for triage.
  • Paid ($0.25 USDC via x402, or an API key): the signed, independently-verifiable receipt — the proof-of-diligence that matters in a dispute.

Pricing + full endpoint reference: https://stillosdigitalholdings.com/notary

Past the free tier

Payment support is already installed. x402-fetch and viem ship as optionalDependencies, so npm install stillos-kya installs them for you. There is no second install step. Check it yourself:

js
const { paymentCapability } = require('stillos-kya');paymentCapability(); // { available: true, deps: { 'x402-fetch': true, viem: true }, reason: null }

Paying — pass a signer, not a secret

Preferred, in order. StillOS never receives, stores, or logs your key in any of them:

js
// 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 USDCconst 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 });

On a 402 the SDK pays and retries exactly once (MAX_PAYMENT_RETRIES === 1). It refuses to sign for a network, asset, or scheme it does not recognise rather than trusting the challenge blindly.

Agent-readable recovery

With no payment capability configured, kya() throws a KyaHttpError carrying everything an autonomous caller needs to act — branch on err.code, never on message text:

js
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: '...' }  }}

Codes: PAYMENT_REQUIRED · PAYMENT_CAPABILITY_MISSING · PAYMENT_CONSTRUCTION_FAILED · PAYMENT_REJECTED · PAYMENT_UNSUPPORTED · BAD_402 · BAD_REQUEST · SERVER_ERROR.

Security

StillOS never asks for, receives, transmits, or stores your private key. Payment is signed entirely on your side and reaches us only as a standard x402 X-PAYMENT authorization header. Your own wallet pays your own request.

Key material is never placed in an error message, a log line, or telemetry — including when a malformed key fails to parse, where the underlying library's own error text is deliberately suppressed rather than re-thrown.

STILLOS_KYA_WALLET_KEY remains supported for the CLI and for backward compatibility. It is a legacy convenience, not the recommended architecture: prefer fetch or account in code.

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

Why signed matters

An unsigned "looks fine" is worthless if a counterparty later turns out sanctioned or fraudulent. A StillOS signed receipt is cryptographic proof that you screened before you paid — the audit artifact that protects you.

来源:README.md,提交 196e5fa

工具

1

kya_check

Know Your Agent (KYA): screen a counterparty agent BEFORE paying it. Returns a fail-closed verdict -- CLEAR, REVIEW, or BLOCK -- from an OFAC SDN sanctions screen plus live on-chain wallet signals, with an Ed25519-signed proof-of-diligence receipt on the paid tier. Call this before any agent-to-agent payment.

输入参数namewallet

版本历史

2
  1. v0.4.3最新Sep 23, 2026
  2. v0.3.1Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。