关于 Oakallow
Oakallow 是托管的远程 MCP 服务,为 AI Agent 的工具调用加入权限检查、人工审批和审计记录。它提供签名决策回执,并可通过 OakGuard 在获准后转发调用。
主要功能
- 01检查工具权限并列出工具
- 02创建及查询人工审批请求
- 03签发决策回执并记录审计
- 04OakGuard 获准后转发调用
- 05提供状态与额度资源
适用场景
- 01在执行高风险工具操作前要求人工审批
- 02按组织权限规则控制 Agent 的工具调用
- 03查询待处理审批并跟踪其状态
MCP 相关
Oakallow 向 MCP 客户端提供权限检查、审批、工具清单和状态资源。通过 OakGuard 注册的 MCP 服务,其工具调用可在获准后由 Oakallow 转发。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.oakallow.io/mcpclaude mcp add --transport http oakallow-oakallow https://api.oakallow.io/mcp{"mcpServers":{"oakallow-oakallow":{"type":"http","url":"https://api.oakallow.io/mcp"}}}在 Cursor 中打开{"servers":{"oakallow-oakallow":{"type":"http","url":"https://api.oakallow.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"oakallow-oakallow":{"type":"http","url":"https://api.oakallow.io/mcp"}}}{"mcpServers":{"oakallow-oakallow":{"serverUrl":"https://api.oakallow.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Oakallow MCP 服务
为 AI Agent 工具执行提供运行时权限、审批和审计治理。
Oakallow 是托管的远程 MCP 服务。它位于 Agent 与其希望执行的操作之间,可在执行时检查具体操作,在有风险时要求人工审批,使用一次性签名令牌进行授权,并将操作记录到不可变的审计日志中。
- 网站: https://oakallow.com
- MCP 端点:
https://api.oakallow.io/mcp(Streamable HTTP) - OAuth 2.1 合规性: https://oakallow.com/docs/oauth
- MCP 协议详情: https://oakallow.com/docs/mcp
此连接器的用途
Oakallow 会在可能还使用其他连接器的工作流中注入一个治理检查点。Agent 先进行调查(例如,通过其他连接器查询账户),然后形成建议,并调用 Oakallow 请求对该操作进行审批。人工审批者随后会在 Oakallow 控制面板或移动应用中,在强制执行多因素身份验证的情况下做出决定。
该连接器是请求方和传递通道,而非决策者:
- 它可以列出你的工具、检查权限、请求审批、为每项决定返回签名回执;对于通过 OakGuard 网关连接的服务,它还可以在审批通过后转发调用。
- 它不能代替人工审批或拒绝。决定会在单独的、绑定 MFA 的界面(控制面板)中做出,绝不会通过连接器进行。
标准工具
| 工具 | 用途 | 仅读取 |
|---|---|---|
list_my_tools | 列出已登录用户在指定组织中可用的工具(org 参数;见下文) | 是 |
check_permission | 查询给定工具调用是否会被允许、需要审批或被拦截(接受 org 参数;见下文) | 是* |
list_pending_approvals | 列出仍在等待人工决定的审批请求 | 是 |
check_approval_status | 通过参考编号查询待处理审批请求的状态 | 是 |
* check_permission 只会返回只读判定。它不会创建审批请求或参考编号。(审批请求及其 REF-… 会在你通过 oakallow 调用受管控工具时创建。)它确实有一个有意设计的副作用:检查未注册的工具时,Oakallow 会自动为其创建一个受管控的草稿条目(采用保守的默认设置,在无法确定时拒绝),以确保之后的调用受到治理,并让所有者能在控制面板中进行分流处理。这是有意为之:未知工具绝不会被默默信任。
选择组织
一个 Oakallow 账户可以加入多个组织,每个组织都有自己的工具、权限规则、审批者和提醒渠道。因此,必须针对正确的组织检查操作,因为这决定了会向谁请求审批,以及将依据哪些规则进行审批。
check_permission 和 list_my_tools 接受一个可选的 org 参数:组织的外部 ID(例如 org_oak_…)。规则如下:
- **账户中只有一个组织:**省略
org。连接器会使用你唯一的组织。 - **账户中有多个组织:**传入目标组织的
org。如果省略此参数,调用会被拒绝,并返回指引,而不是猜测错误的组织。
不要要求连接器列出你的组织;它没有组织枚举工具。请改为**从该组织的控制面板下载组织专属技能。**每个组织的技能都包含其自身的组织 ID,并会指示 Agent 传入该 ID。为你参与的每个组织各安装一个技能;Agent 会读取匹配的技能,并在每次调用时传入正确的 org。
连接器会根据你已登录的身份验证你传入的 org:你只能指定自己实际有权操作的组织(你是该组织的团队所有者或管理员,或者属于该组织的审批者组)。指定无权访问的组织会被拒绝。技能只是为了方便使用,并不会授予访问权限。
调用受治理的工具
除了四个标准工具外,tools/list 还会返回组织批准的客户自定义工具。通过 oakallow 调用其中一个工具,就会创建审批请求:没有单独的“请求审批”工具。直接调用工具接受两个可选参数,以及上文所述的 org:
| 参数 | 用途 |
|---|---|
reason | 对调用原因的简短、非敏感概述。人工审批者会看到这段内容。Oakallow 会在存储前对 SSN、卡号、电子邮件、电话号码和地址模式进行脱敏处理。 |
agent | 发起调用的 Agent 标识符(名称、代码或数字)。组织的治理报告会使用此标识符显示提交每次调用的 Agent,而不是将所有调用都归因于已登录的账户。请始终使用相同的值。调用者使用 oak_agent_ 令牌进行身份验证时,此参数会被忽略,并使用令牌自身的身份。 |
响应为 allowed(在对应的连接器上执行操作)、requires_approval(已创建审批请求,并返回一个 REF-…,可通过 check_approval_status 轮询)或 disabled(停止;该操作受策略阻止)之一。
已签名的决策凭证
每次对已批准工具做出的权限决策都会返回已签名的决策凭证,无论结果如何:allowed、requires_approval 和 disabled 都以相同方式签名。该凭证是对决策、工具、调用参数哈希值、租户、资源、方法和组织生成的 HMAC-SHA256 签名,并会被存储,以便稍后重新验证决策。disabled 凭证证明 oakallow 阻止了该操作。
如果决策无法签名或记录,检查会采取失败关闭策略:oakallow 不会返回无法证明的结果。
OakGuard 网关
默认情况下,oakallow 是工具旁的检查点:它负责决策,由你执行操作。OakGuard 允许组织向 oakallow 注册自己的 MCP 服务,让 oakallow 转而成为连接这些服务的传输层:
- 下游必须使用 OAuth 2.1。 除非服务声明了 OAuth 2.1 的必备项(使用 S256 PKCE 的授权码流程、RFC 9728 和 RFC 8414 发现机制、不支持密码授权),否则注册会被拒绝。oakallow 会将自身注册为服务的 OAuth 客户端,并加密保存下游令牌。
- 工具会以实际名称和架构显示在
tools/list中。新发现的工具会作为草稿添加,在管理员启用前必须经过审批。 - 只有在权限规则允许或经人工批准后,调用才会转发。 每项审批只会向下游传递一次。
- 负载会被传递,但不会留存。 oakallow 会通过两段 TLS 连接传递请求和响应,不会存储或记录它们。凭证和审计日志记录的是决策,而非数据。
可在控制面板的 OakGuard 选项卡中注册、暂停和撤销服务。
资源
oakallow 提供两个只读 MCP 资源。它们是预检信号,Agent(或客户端 UI)可在决定是否通过 oakallow 路由操作前读取。两者都需要 mcp:read 范围,都不是工具调用,也都不收费。
| 资源 | 返回内容 | 仅读取 |
|---|---|---|
oakallow://status | 已登录会话的连接器运行状态:状态、端点、服务版本、协议版本和已授予的范围。读取成功本身即可证明会话有效。不返回账户身份或个人身份信息。 | 是 |
oakallow://credits | 对于本会话所解析到的组织,受治理的调用当前是否有资金支持,便于 Agent 在请求无法支付的审批前快速失败。 | 是 |
oakallow://credits 的范围仅限调用方自己的账单组织,并且与真实工具调用采用相同的组织解析方式,因此 can_fund: true 的结果确实意味着后续审批会获得资金支持(包括团队资金池回退)。它只返回 can_fund 布尔值以及组织名称和外部 ID。它有意不披露余额:金额仅会显示在仪表板中,供团队所有者查看,绝不会通过连接器提供。如果会话未解析到任何组织,或解析到多个组织,它会返回 can_fund: false 和原因,而不会猜测应向哪个组织收费。
连接
不支持匿名访问。 连接前必须先拥有 oakallow 账户;端点接受两种凭据类型:供人工操作的客户端使用的交互式 OAuth 2.1(PKCE),或供自主 Agent 使用的 oak_agent_ bearer 令牌(参见下文的自主 Agent)。
对于人工操作的 OAuth 流程,请在 MCP 客户端(Claude、Claude Desktop、Cowork、ChatGPT 或任何 Streamable HTTP MCP 主机)中,将 https://api.oakallow.io/mcp 添加为自定义连接器。系统会将你重定向至 Oakallow 登录页面,并请求你批准所需范围:
mcp:read:列出工具、查看待处理的审批、检查权限、读取活动记录。mcp:write:创建审批请求并签发运行令牌。
无需手动配置这些内容:未经身份验证的请求会返回 401,并附带一个 WWW-Authenticate 标头,指向端点的 RFC 9728 受保护资源元数据(/.well-known/oauth-protected-resource),因此符合规范的 MCP 客户端会自动发现授权服务器并运行 OAuth 流程。
请参见 examples/,其中包含 Claude Desktop 配置、OAuth 流程指南和 oak_agent_ 令牌使用指南。tools.json 包含标准工具的准确架构。
自主 Agent(oak_agent_ 令牌)
OAuth 要求人工完成交互式登录。独立运行的自主 Agent 则使用预先签发的 bearer 令牌进行身份验证,连接到同一个 https://api.oakallow.io/mcp 端点:Authorization: Bearer oak_agent_...。端点会在 OAuth 提供方之前检查 oak_agent_ bearer,因此无需同意页面或交互式登录。
Agent 身份仅限于一个组织,可以提交权限请求并检查请求,但绝不能批准请求;请求频率按身份限制;令牌仅以 SHA-256 哈希形式存储(原始令牌仅在创建时显示一次)。请在仪表板的 Account → Agents 页面创建令牌(仅限所有者/管理员)。完整模型请参见 oakallow.io/info/agents。
技能
SKILL.md 是一份 Agent 技能文档,说明何时以及如何使用 oakallow 工具:请求、批准、轮询和执行工作流,如何表述审批理由,以及遇到 allowed、requires_approval 或 disabled 判定时应采取的操作。请让你的 Agent 参考该文档,以正确管控工具操作。
触发提示词
PROMPT.md 中提供了简短的一行提示,可复制粘贴到 Agent 的系统提示词中,让它确实调用该技能。技能是操作流程;触发提示词则负责让 Agent 注意到它。这里有三个选项,从“每次工具调用都必须经过审批”到“指定的一组客户名称必须经过审批”,另有一个适用于实际请求的内联示例模式。
受管控调用的工作方式
- Agent 使用自己的凭据、
reason和agentID,通过 Oakallow 调用工具。 - Oakallow 为指定的工具、租户和资源解析权限规则,并为判定结果签署一份决策凭证。
- 如果允许执行该操作,Agent 就会执行:对于直接工具,通过自己的连接器执行;对于 OakGuard 网关工具,则由 Oakallow 转发执行。
- 如果需要审批,系统会创建审批请求、通知人工审批者,并向 Agent 返回一个
REF-…,供其轮询。人工审批者通过 MFA 批准后,该操作会恰好执行一次。 - Oakallow 会写入不可变的审计记录,记录处理结果。
对于直接工具,Oakallow 位于执行路径之外:它管控并记录上报的内容,不会运行你的工具,也不会收到除经过 PII 清理的原因之外的任何工具参数。对于 OakGuard 网关工具,Oakallow 会传输获批的调用,但仍不会保留任何有效负载。
在 MCP 之外,REST API(POST /v1/tokens/mint)还可以签发一次性、采用 HMAC 签名的运行令牌,将工具与其参数绑定,供你的后端在执行前验证。
许可证
请参阅 LICENSE。
更新日志
请参阅 CHANGELOG.md。
© Islemonics Studios LLC。专利申请中。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。