mcpField
S
Sanction

Sanction

远程服务
getsanction.com安全31 天前更新

关于 Sanction

Sanction 是面向团队的 AI Agent 授权服务,用于治理支出、工具调用、凭证和资源配置。它可批准、拒绝或转交人工处理,并记录可审计的决策,支持策略重放。

主要功能

  1. 01支出与预算授权
  2. 02允许、拦截或升级工具调用
  3. 03人工审批及限时单次授权
  4. 04带范围限制的凭证库
  5. 05不可变策略版本与可重放凭证
  6. 06基于历史决策模拟策略

适用场景

  1. 01要求 Agent 购买前先获批准
  2. 02控制 Agent 可调用的 MCP 工具
  3. 03在团队及 Agent 钱包间实施预算
  4. 04依据历史决策评估策略变更

MCP 相关

Sanction 提供供 Agent 连接并请求授权的 MCP 钱包服务,也提供可拦截工具调用、筛选工具列表的 MCP 代理。宿主必须主动请求并遵守其决策;仅建立连接不会强制执行其他工具的规则。

配置

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

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

全部服务地址
Streamable HTTPhttps://getsanction.com/mcp需要授权
安装包
npmsanction-mcp0.10.0

工具

详细介绍

Sanction

面向 AI Agent 的独立授权平面。

在 Agent 花钱、调用工具、接触凭证或配置资源之前,它会先向 Sanction 申请授权。Sanction 会批准、升级至人工审批,或拒绝。每项决策都会记录并可审计。Sanction 不隶属于任何平台:一个策略引擎即可跨模型提供商、支付渠道、身份体系和 Agent 生态系统作出响应。

需要一次人工审批?

将 Sanction 连接到你的 Agent,然后让它调用 sanction_authorize_tool,并设置 require_approval: true,同时提交确切的拟执行操作。通过现有审批链接或已配置的 Slack 频道批准或拒绝。批准后,该请求会获得一个限时、仅可使用一次的授权;Agent 必须先兑换授权才能执行操作。无需修改策略,被拦截的操作仍会被拦截。

个人用户可以免费使用 Sanction,无需银行卡。宿主必须询问并遵循决策;仅建立连接并不会强制执行对其他工具的授权。 选择你的宿主并尝试一次审批。

谁在使用 Sanction

  • 治理自身 AI 的组织 — 这是主要应用场景。团队和部门会成为树状结构中的钱包;预算、工具规则和审批等级会得到强制执行,而不仅仅是在仪表板上展示 — 底层还提供可用于分摊费用的报告。警报会告知发生了什么;决策则会先行作出。
  • 嵌入治理功能的平台和代理机构 — 你交付或为客户运行的 Agent,无论在哪里执行,都携带一个钱包:MCP 宿主、Bedrock,或通过 SDK 或 REST 接入你自己的技术栈。
  • 个人用户 — 免费,无需银行卡,可用于个人和生产环境。

功能

一个策略决策引擎即可治理各类 Agent 操作:

受治理的操作Sanction 强制执行的内容
支出 (/authorize)自动批准额度、人工升级区间、单笔交易硬上限、每日和每月预算 — 检查和扣款以原子方式完成。
工具 (/authorize/tool)针对任意 MCP 工具或外部操作的阻止/允许/升级列表。升级请求会像支出请求一样进入审批收件箱。
凭证 (/exec + /mandate/verify + /credentials/inject)使用信封加密的 AES-256-GCM 凭证库(由 KMS 封装,密钥轮换)。注入凭证需要具有指定范围、有效期为 15 分钟的 mandate JWT,且权限级别 ≥ 凭证要求的级别。交易对手无需 API 密钥即可验证该授权。每次访问都会记录在审计日志中。
资源配置 (/authorize/provision)一次调用即可授权席位、许可证、基础设施 — 包括资源、条目、数量和金额。
能力 (/authorize/capability)技能、插件、新 API — 获取能力的治理方式与花钱相同。一份有序规则列表(阻止/允许/升级,前缀 glob 模式)会在新能力进入 Agent 之前对其进行限制。

实际决策流程如下 — 一次 POST /authorize 请求包含金额,并会产生三种可能结果,均为终结状态或可恢复状态:

  • 已批准 → { "status": "approved" };预算计数器会在决策持久化的同一事务中扣减(咨询锁会让同级 Agent 排队,而非争抢)。
  • 已升级 → { "status": "escalated", "request_id": "…" };人工审批者会在审批收件箱中看到请求。批准后会签发一次性授权,Agent 重试并附上 grant_id 即可兑换。策略会决定超时意味着什么(批准或拒绝)— 不会有请求无限期挂起。
  • 已拒绝 → { "status": "denied", "decision_code": "PER_TXN_LIMIT", "remediation": "金额超过单笔交易限额。请拆分为更小的扣款,或请所有者提高限额。" }。代码是稳定的机器字符串(DAILY_BUDGET_EXCEEDED、 CATEGORY_BLOCKED、WALLET_FROZEN、…),因此 Agent 可以据此分支并重新规划,而不必解析说明文字。同一请求的重放会返回相同代码。

引擎周边:

  • 人工审批 → 一次性授权。 升级请求会进入审批收件箱 (仪表板 PWA、电子邮件、Slack)。批准后会生成一个单次使用、会过期的授权, 由 Agent 在重试时兑换。策略超时可确保最终得到明确结果。
  • 席位。 Agent 就是一个席位,可交给任何持有者:指定持有者、承包商自动过期(超过 日期后密钥会默认拒绝访问)、保留历史记录的密钥轮换,以及根据同一模板批量创建。
  • 逐级联动的预算。 钱包可嵌套成树;子树上限会以原子方式强制执行,因此同级 Agent 无法竞相突破父级限制。控制台的支出视图会绘制当月的预算续航情况——从钱包到席位, 显示累计消耗与上限、消耗速度和预计耗尽日期。
  • 能主动找到你的通知。 默认通过电子邮件发送;机器可使用带签名的 JSON Webhook; Slack 提供两种方式:粘贴传入 Webhook URL,直接链接到决策;或使用 添加到 Slack, 通过 OAuth 为每个工作区安装,并发送交互式 批准 / 拒绝 按钮。这些按钮会调用与 仪表板相同的 resolveApproval 路径,并记录操作者。每种路由都会订阅各自的事件。 指南
  • 可重放的证据。 每次策略编辑都会生成不可变的修订版本;每个决策都会存储当时生效的 修订版本,以及引擎评估的精确上下文。GET /authorize/{id}/evidence 会基于存储的上下文 重新运行纯规则,并证明结果可以复现。
  • 基于真实历史进行假设分析。 POST /policy/simulate 会在候选策略下重放已存储的决策—— 哪些调用会改变结果、哪些支出无法通过——让你在更改任何内容前先行了解。
  • 审计层。 GET /audit-events 会将每项决策、令牌日志和密钥访问合并为一个信息流 (包含 CSV 导出);GET /reporting/summary 可涵盖任意时段,按天分桶并按席位汇总; 钱包统计会预测消耗速度和预计耗尽时间;每周一会在 Slack 中发送每周摘要。
  • 防篡改导出。 GET /audit/export 会提供受治理决策的签名哈希链快照:修改、删除或 重新排序任何行都会破坏哈希链,且链头由 Sanction 使用 HMAC 签名。监管机构或受治理的 客户可运行 POST /audit/verify——无需数据库且自包含——证明签名后没有任何更改,精确 定位到第一个断裂的链接。
  • 打开即显示名册的控制台。 仪表板首页会将钱包树显示为分组,将 Agent 显示为卡片, 每张卡片都带有授权状态标记(有效 / 已暂停 / 已阻止)。钱包管理的是成员,而不仅是密钥: 团队成员身份及角色(owner / admin / viewer)、可切换查看所有成员身份的切换器, 以及只能查看、不能更改任何内容的查看者。
  • 先观察,再强制执行钱包策略。 观察模式会记录引擎本来会采取的操作,同时放宽该 钱包自身的策略和上限。祖先子树上限仍会强制执行,并计入观察到的支出;冻结和身份验证 检查也仍会生效。检查可能被拒绝的请求及其成本,然后通过一次需要确认的点击,将每个资金池 切换为强制执行模式。
  • 让支出与结果挂钩。 报告结果(POST /outcomes)后,若钱包的单项结果成本超过上限, 就会将支出限制为需人工审批的支出。钱包可直接冻结,也可在树内重新分配预算。
  • 大模型网关。 将模型 SDK 的基础 URL 指向 https://getsanction.com/api/gateway/<provider>,并使用 x-sanction-key——用量会计量并受预算上限约束,无需对每次调用进行任何埋点。

上述每项安全声明都对应着强制执行代码和回归测试,详见 docs/TRACEABILITY.md——1,100+ 项测试,覆盖率门槛为语句/行 90%、函数 94%、分支 83%,其中包括并发和 Postgres 行级安全测试。

从策略包开始,而不是从空白策略开始

11 个可安装的策略包涵盖了常见场景,其中包括 Startup defaults、 Coding agent seat、MCP tool governance、Compliance baseline、 Client-safe launch 和 No-egress(Sanction Local)。GET /policy/packs 会列出这些策略包; POST /policy/packs/{id}/preview 会在任何变更生效前,使用你最近 30 天的 真实决策模拟策略包;apply 会将其写入为一个策略修订版本。

在生产环境中更改策略

策略编辑绝非盲目尝试:

  1. 起草变更(或选择一个策略包)。
  2. POST /policy/simulate 会根据候选策略重放已存储的决策历史——准确查看哪些调用会改变结果,以及哪些支出无法通过审批。
  3. 应用变更。编辑内容会成为不可变的修订版本;之后的每项决策都会记录当时生效的修订版本。
  4. 如果有人质疑某项决策,GET /authorize/{id}/evidence 会基于已存储的上下文重新运行规则,并证明结果可以复现。
何时使用凭证保险库

当凭证需要与支出和工具遵循同一套策略、审批和审计流程时,请使用 Sanction 的保险库——统一的审批模型, 无需单独的机密集群。如果你需要独立于 Agent 治理的大规模机密生命周期管理,请继续使用现有的 Vault 或 Secrets Manager;Sanction 会使用上游身份和机密,而不是取代它们。威胁模型:docs/SECURITY.md。


分发方式

平台供应商只管理其自身环境中的 Agent。Sanction 则可在 Agent 运行的任何地方进行授权。选择与你的技术栈集成所需的最短路径:

你想要……使用第一步
管理任何 MCP 宿主(Claude Desktop、Cursor、……)MCP 钱包粘贴 https://getsanction.com/mcp 或运行 npx sanction-mcp
在 MCP 服务上拦截 tools/call 并过滤 tools/listMCP broker注册上游服务,将宿主指向 /mcp/broker/<name>
无需修改代码即可统计大模型支出大模型网关将 SDK 基础 URL 指向 /api/gateway/<provider>
在 TypeScript 应用中管理 AgentSDKnpm install sanction-sdk
从其他任何环境调用引擎REST API使用 x-api-key 调用 POST /v1/authorize
接入 AuthZEN 执行点PDP将其指向 /api/access/v1/evaluation
在 AWS Bedrock 上编排Action Groupdocs/BEDROCK.md

完整选项:

  • MCP(Agent 钱包) — 在任何 MCP 宿主中粘贴 https://getsanction.com/mcp(Streamable HTTP,x-api-key)或运行 npx sanction-mcp。Agent 会携带钱包。Wallet Card · 指南
  • AuthZEN PDP — 任何 OpenID AuthZEN 1.0 执行点都可以将 Sanction 用作其决策点,无需编写自定义代码(指南)
  • TypeScript SDK — npm install sanction-sdk(源代码):SanctionClient(Agent 平面)和 SanctionAdminClient(管理平面),以及框架适配器(SanctionMiddleware、sanctionTool)
  • REST API — 直接集成;OpenAPI 3.0 规范位于 /api/openapi.json(兼容 Bedrock)
  • AWS Bedrock Action Group — 企业级 Agent 编排(设置指南)
  • 大模型网关 — 无需修改代码即可统计跨提供商用量

最快体验首次决策的方式:运行 bash examples/setup.sh——只需一条命令即可创建钱包、Agent 和演示策略,并打印 Agent 所需的环境变量导出命令 (examples/ 中提供了可运行的客户端,可指向该环境)。

Agent 钱包 · 快速入门 · 入门套件 · LangChain · CrewAI · Vercel AI SDK · Bedrock Agents · Agent 集群 · AuthZEN PDP · 多租户运行手册 · 通知


API

基础 URL:https://getsanction.com/api/v1 — 按工作流分组。Agent 端点使用 x-api-key pxy_…;管理端点使用所有者的 x-mgmt-key sk_…。

请求许可 — Agent 调用的数据平面:

POST  /authorize                — Authorize a spend action (grant_id redeems an approval)
POST  /authorize/quote          — Authorize an x402 payment challenge before the wallet signs
POST  /authorize/tool           — Authorize a tool invocation
POST  /authorize/provision      — Authorize provisioning (resource + line item + $)
POST  /authorize/capability     — Authorize acquiring capability (skill/plugin/API)
GET   /authorize/{id}           — Poll an escalated decision (grant receipt included)
POST  /tokens                   — Log LLM token consumption against the daily budget
POST  /outcomes                 — Report an outcome; spend becomes answerable to results

升级交由人工处理 — 事情已上报,由人来决定:

GET/POST /approvals             — The approval inbox; approving mints a one-use grant

携带凭证 — 使用范围受限的授权,而非原始密钥:

POST  /exec                     — Mint a scoped mandate JWT (15-min TTL)
POST  /mandate/verify           — Counterparty checks a presented mandate (no API key)
POST  /credentials/inject       — Inject a decrypted credential (Bearer JWT)
POST  /credentials/vault        — Store an encrypted credential (owner)
POST  /exec/revoke              — Kill a live execution token (owner)

证明发生了什么 — 审计、证据、报告:

GET   /authorize/{id}/evidence  — Audit proof: re-run the pure rules over the stored
                                  context and confirm the recorded outcome reproduces
GET   /audit-events             — Unified audit feed (decisions, tokens, secret access; ?format=csv)
GET   /reporting/summary        — Any range ≤92 days: totals, day buckets, per-agent
GET   /reporting/daily-summary  — One-day rollup
GET   /audit/export             — Signed, hash-chained decision export (owner; ?download=1)
POST  /audit/verify             — Verify a tamper-evident export (recompute chain + signature)

制定策略 — 安全编辑,先证明影响(所有者):

GET/PATCH /wallets/policy       — Read / update budgets, thresholds, lists, capability rules
POST  /policy/simulate          — Replay real history under a candidate policy (what-if)
GET   /policy/packs             — List installable policy packs (public)
POST  /policy/packs/{id}/preview — Simulate a pack against your last 30 days
POST  /policy/packs/{id}/apply  — Install a pack as the wallet policy (writes a revision)

管理整个集群 — 钱包、席位、密钥(所有者):

POST  /wallets                  — Create a wallet + policy (management key shown once)
GET   /wallets/stats            — Today + month-to-date stats + burn projections
GET   /wallets/tree             — Subtree spend rollup
POST  /wallets/keys/rotate      — Rotate the wallet's data-encryption key
POST  /agents                   — Register a seat (holder, expiry; key shown once)
POST  /agents/batch             — Stamp one template across up to 50 seats
GET/PATCH /agents               — List / per-seat budgets, clearance, holder, expiry
POST  /agents/rotate            — Rotate a seat's key (optionally pass to a new holder)
POST  /webhooks                 — Register a notification route (per-event subscriptions)
POST/GET/DELETE /broker/upstreams — Register the MCP servers the broker may front (BROKER-1)
POST  /wallets/freeze           — Pause every agent action in this wallet and its subtree
POST  /wallets/unfreeze         — Resume exactly where the fleet stopped
POST  /wallets/reallocate       — Move budget across the wallet tree
POST  /wallets/bootstrap-key    — Mint a management key for a legacy wallet
GET   /outcomes                 — Reported outcomes + cost-per-outcome state
GET   /activity                 — Recent decision activity for the console

使用标准协议 — AuthZEN PDP + AARP(Agent 密钥;基础 https://getsanction.com/api — 规范规定的路径):

POST  /access/v1/evaluation     — OpenID AuthZEN 1.0 evaluation (decision-only)
POST  /access/v1/evaluations    — AuthZEN batch, all three evaluation semantics
POST  /access/v1/access-request — AARP: open an escalation from a signed binding token
GET   /access/v1/access-request/{id} — AARP task status (maps to the profile's states)

完整架构: /api/openapi.json。


MCP 设置

Agent 携带 Sanction 钱包。发现方式:GET /.well-known/wallet-card.json。 stdio MCP 采用协作模式——主机必须在执行操作前询问。 Cursor 插件(MCP + skills):cursor-plugin/。

{
  "mcpServers": {
    "sanction": {
      "command": "npx",
      "args": ["sanction-mcp"],
      "env": {
        "SANCTION_API_URL": "https://getsanction.com/api/v1",
        "SANCTION_API_KEY": "pxy_..."
      }
    }
  }
}

技术栈

Next.js 16(App Router)+ TypeScript · Neon Postgres 上的 Prisma 7(在数据库层强制执行行级安全)· Vercel · jose(HS256,固定 alg)· AES-256-GCM 信封加密,生产环境中以 AWS KMS 为信任根。

贡献与安全

CONTRIBUTING.md 将指导你从克隆代码到提交绿色 PR (npm install && npm run check — 单元测试无需数据库)。 安全模型与漏洞披露:docs/SECURITY.md。 术语表:docs/DOMAIN.md。

定价

免费,或签订协议。个人用户可免费使用——无需信用卡,可用于个人和生产环境。 除此之外,可根据你的部署需求定制企业协议:SSO、策略管理、审计导出、SLA。 联系我们。

许可证

  • packages/sanction-mcp(MCP 客户端)— MIT。可将其嵌入任何地方。
  • 其他所有内容(服务端、仪表板、API)— Functional Source License 1.1(FSL-1.1-MIT)。源代码可用:可用于任何用途,也可自托管,但不得提供竞争性服务。发布两年后转为 MIT 许可证。
  • 超出 FSL 范围的商业用途 — Commercial License guide(在线查看)。

评论

支持 Markdown

第一次接触 MCP?

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

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