关于 AgenticRail Gate - sequence enforcement and verifiable audit receipts for AI agent compliance
AgenticRail Gate 是面向 AI Agent 的 MCP 适配层,用于确定性地执行步骤顺序。它在每步运行前进行判定,并提供签名回执和验证报告以支持合规审计。
主要功能
- 01运行前允许或拒绝步骤
- 02执行声明的步骤顺序
- 03拒绝跳步和重放步骤
- 04生成签名序列回执
- 05验证回执链完整性
适用场景
- 01约束 Agent 工作流中的步骤顺序
- 02阻止执行跳过或重放的步骤
- 03审计允许与拒绝决定
- 04验证已完成序列的回执链
MCP 相关
通过 `evaluate_step` 和 `verify_receipt` 工具向 MCP 客户端提供 AgenticRail 执行能力。服务使用无状态 Streamable HTTP 端点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.agenticrail.nz/claude mcp add --transport http nz-agenticrail-gate https://mcp.agenticrail.nz/{"mcpServers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}在 Cursor 中打开{"servers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}在 VS Code 中打开{"mcpServers":{"nz-agenticrail-gate":{"type":"http","url":"https://mcp.agenticrail.nz/"}}}{"mcpServers":{"nz-agenticrail-gate":{"serverUrl":"https://mcp.agenticrail.nz/"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| step | string | 是 | 正在尝试的步骤,例如 'intake' 或 'review_and_sign'。这是一个 NAME,而非描述。每次调用中拼写必须完全相同,必须出现在 step_order 中(自定义序列时),并且必须等于 `function`。gate 会逐字节比较,因此随主题变化的句子永远无法匹配,并会被拒绝,错误为 UNKNOWN_STEP。请将面向用户的句子放在 `action` 中。 |
| nonce | string | 否 | 可选的、每个步骤唯一的 UUID,用于重放保护。省略时自动生成。 |
| action | string | 否 | 操作的可选易读标签。 |
| inputs | object | 否 | 步骤的可选自由格式上下文。不会存储在回执中:回执仅保留整个请求的 SHA-256 哈希。任何必须作为证据留存的内容都应放在 `attestation` 中(会原样发布;在匿名演示通道中任何人都可读取)。 |
| function | string | 否 | 默认为 `step`。规则 step === function 始终成立。 |
| step_order | array | 否 | CUSTOM 序列的完整有序步骤名称列表。每次调用都必须发送,且每次完全相同。仅在使用 AgenticRail 内置的 MSMD 主干时省略。它会在序列的首次调用时锁定:之后提供不同列表将被拒绝,并返回 STEP_ORDER_MISMATCH;该拒绝会返回 locked_step_order,即此序列必须遵循的列表。不要尝试省略此字段来解除锁定;这会选择 MSMD 主干,导致你的步骤返回 UNKNOWN_STEP。若要更改计划,请启动新的 sequence_id。一个步骤也是有效序列。UNKNOWN_STEP 拒绝会返回 expected_step_order(你的步骤必须属于的列表)和 step_order_source('caller' 或 'msmd_spine');msmd_spine 表示你完全没有发送 step_order,并使用了内置主干。 |
| action_type | enum | 是 | 此步骤的操作类别。词汇表严格限定为以下八项,不接受其他值:CHECK_STATE、CLARIFY_NEXT_STEP、SELECT_NEXT_STEP、RECORD_RESULT、WAIT_FOR_SIGNAL、VALIDATE_INPUT、PAUSE_CYCLE、REDUCE_STIMULUS。这些是执行类别,不是对步骤用途的描述。READ、QUERY、LOOKUP、SEARCH、EXECUTE、ANALYZE 和 TOOL_CALL 是最常见的错误猜测,且全部会被拒绝:搜索、起草、查询或分析的步骤,如果读取状态,仍属于 CHECK_STATE;如果写入结果,则属于 RECORD_RESULT。每个步骤只接受这八项中的一个子集——例如,intake 只接受 VALIDATE_INPUT、CHECK_STATE 或 CLARIFY_NEXT_STEP,不接受其他项。错误值会在步骤运行前以 ACTION_NOT_ALLOWED 拒绝,拒绝响应会通过 allowed_action_types 准确列出该步骤接受的值;请查看后重试,不要猜测。拒绝不会破坏序列,也不会运行任何内容。CHECK_STATE | CLARIFY_NEXT_STEP | SELECT_NEXT_STEP | RECORD_RESULT | WAIT_FOR_SIGNAL | VALIDATE_INPUT | PAUSE_CYCLE | REDUCE_STIMULUS |
| sequence_id | string | 是 | 此序列运行的稳定标识符。同一序列的每个步骤都重复使用它。匿名调用会被改写为 'demo-mcp-<your id>',经过身份验证的演示调用会被改写为 'demo-<your id>';从响应中取回该 id,并从此使用它。每次运行都要使用新的 id——是每次运行,不是每次尝试:封存是永久性的,而且在共享演示通道上,固定 id 会与其他所有人共享。被拒绝的步骤不会破坏序列,也不会运行任何内容,因此拒绝不是启动新序列的理由:修正调用即可。 |
详细介绍
agenticrail-mcp
一个 Model Context Protocol 服务,可将实时的 AgenticRail 执行门作为两个工具提供给任何 MCP 客户端。
AgenticRail 是面向 AI Agent 的确定性执行层:它会要求 Agent 按声明的步骤顺序执行,拒绝重放和跳步,并为每个完成的序列生成带签名的收据。本服务是其前端 MCP 适配器。
通常人们会这样描述这个问题:它是 AI Agent 工具调用的策略执行点。它会在乱序步骤运行前拒绝该步骤,从而拦截跳步和流程幻觉(Agent 报告某个从未运行过的步骤已成功);每个决策,无论是 ALLOW 还是 DENY,都会成为防篡改审计跟踪记录。
端点: https://mcp.agenticrail.nz/(Streamable HTTP,无状态)
协议: 2026-07-28 — 此版本取消了 initialize 握手和 Mcp-Session-Id。本服务从一开始就是无状态设计,不使用二者,因此无需迁移。仍会响应旧客户端的 initialize 请求。
注册表: 官方 MCP 注册表中的 nz.agenticrail/gate
工具
| 工具 | 功能 | 调用 |
|---|---|---|
evaluate_step | 在单个 Agent 步骤运行之前对其执行 ALLOW/DENY 判定;生成带签名的收据 | POST https://api.agenticrail.nz/v1/evaluate |
verify_receipt | 获取序列的验证报告;确认收据链完整无损 | POST https://report.agenticrail.nz/report |
在运行序列的每个步骤之前调用 evaluate_step,不要运行执行门判定为 DENY 的步骤。
DENY 会告诉你如何修正
每次拒绝都会在响应封套中附带相应的补救信息——仅适用于 DENY,且不带签名,因为这些信息描述的是序列当前的状态,而不是已经作出的判定:
| 拒绝原因 | 返回内容 |
|---|---|
ACTION_NOT_ALLOWED | allowed_action_types — 此步骤确切接受的操作类型 |
SEQUENCE_VIOLATION | next_expected_step — 序列正在等待的步骤 |
STEP_ORDER_MISMATCH | locked_step_order — 首次调用时为此序列锁定的步骤顺序 |
UNKNOWN_STEP | expected_step_order + step_order_source(caller 或 msmd_spine) |
action_type 是一个恰好包含八个值的枚举,每个步骤只接受其中的一个子集。工具架构中的枚举只是提示,不是控制机制——它仅对会自行验证参数的客户端起约束作用;自造动词是最常见的首次拒绝原因:READ、QUERY、TOOL_CALL、LOOKUP、EXECUTE 等都不是操作类型,无论它们多么贴切地描述了你的步骤。执行门才是真正的控制机制。它拒绝请求时,allowed_action_types 会返回此步骤原本会接受的操作类型。
被拒绝的调用不会锁定任何内容。 拒绝会在写入序列存储之前返回,因此不会破坏本次运行:错的是调用,而不是序列。修正拒绝信息指出的字段,然后重新发送该步骤。 只有在获准的调用中实际发送 step_order 后,步骤顺序才会锁定;此后将强制执行该顺序,发送不同顺序会被 STEP_ORDER_MISMATCH 拒绝。省略 step_order 不会设置任何锁定——这只意味着本次调用会按照内置的 MSMD 主干进行判定,而其中的步骤名称几乎肯定与你的不一致。
因此,如果你的流程有自己的步骤名称,请发送包含这些名称的 step_order,执行门就会改为强制执行你的步骤顺序。一个步骤也可以构成有效序列。
连接
在 Claude Code 中:
# zero config — uses the public demo key
claude mcp add --transport http agenticrail https://mcp.agenticrail.nz/
# with your own key
claude mcp add --transport http agenticrail https://mcp.agenticrail.nz/ \
--header "Authorization: Bearer <your-agenticrail-key>"
任何 Streamable-HTTP MCP 客户端都可使用——将其指向该 URL 即可。
无需安装即可试用
BASE=https://mcp.agenticrail.nz/
curl -s -X POST "$BASE" -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq .
# ⚠️ Use a sequence_id nobody else will pick. On the shared demo key the id is
# GLOBAL and sealing is PERMANENT — a fixed one in an example works once for one
# person on earth and returns SEALED_SEQUENCE for everyone after.
SEQ="mcp-smoke-$(date +%s)-$RANDOM"
curl -s -X POST "$BASE" -H 'content-type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{
\"name\":\"evaluate_step\",
\"arguments\":{\"sequence_id\":\"$SEQ\",\"step\":\"intake\",
\"action_type\":\"CHECK_STATE\"}}}" | jq .
如果没有 Authorization 标头,系统会使用公共演示密钥,并将你的 sequence_id 改写为 demo-mcp-<your id>——demo- 表示公共通道,mcp- 表示匿名 MCP 流量。**之后请使用响应中返回的 ID;你发送的 ID 将无法解析。**这是有意为之,并非信息泄露。
读取 demo- 序列的报告无需密钥,因此请将你在其中发送的任何内容都视为公开信息。
设计——更改前请阅读
- 仅作协议适配器。此工作器不持有任何内部机密,也没有通往执行核心的特权路径。它调用外部调用方使用的同一公共 API,因此工具逻辑既与 AgenticRail 的内部实现解耦,也与 MCP 传输版本解耦。
- 使用服务绑定,而非 fetch。
mcp.agenticrail.nz与api.和report.位于同一个区域,因此普通的fetch()会形成同区域环回(Cloudflare 错误 1002)。这些绑定会访问相同的公共处理程序——它们不是内部绕过机制。 - **无状态 Streamable HTTP。**不会签发或要求
Mcp-Session-Id;每个 POST 都是独立完整的。传输外壳是handleRpc+fetch处理程序——规范修订只会影响这一部分。承载实际值的调用(callEvaluate/callVerify)使用普通 HTTPS,不会改变。 - **
GET /提供发现卡片;其他所有 GET 路径均返回 404。**有意允许POST使用任意路径,以便客户端在端点 URL 后附加路径时仍可正常工作。 /.well-known/oauth-*返回 404 是正确的——这是 MCP 服务表明无需身份验证的方式。agent.json、agent-card.json、x402和ai-plugin.json都是本服务未实现的协议;响应这些请求就等于声称已实现。
部署
npx wrangler deploy
链接
- 文档 — https://agenticrail.nz/docs/
- 自行验证序列 — https://report.agenticrail.nz/report
- OpenAPI — https://agenticrail.nz/openapi.json
- 执行规范 — https://agenticrail.nz/spec/
由 TUARA KURI LIMITED(NZBN 9429053582867)运营,位于新西兰 Aotearoa 的 Hokianga。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。