mcpField
I
IRL Gateway

IRL Gateway

本地服务
irl.macropulse.live金融数据03 周前更新

关于 IRL Gateway

IRL Gateway 是一个 MCP 服务,在 AI Agent 的现货订单送往交易场所前检查交易授权,并记录理由与执行结果。它面向使用模拟或交易所账户的 Agent,提供本地停机开关和防篡改交易记录。

主要功能

  1. 01下单前检查交易授权
  2. 02封存理由并记录交易轨迹
  3. 03核对成交并给出判定
  4. 04本地停机开关
  5. 05模拟及交易所现货订单
  6. 06查询策略、报价、余额和历史

适用场景

  1. 01限制可交易资产和订单金额
  2. 02审查 Agent 记录的交易理由
  3. 03核对获准订单与交易所成交

MCP 相关

它向 MCP 客户端提供交易和账户工具,包括 execute_trade、get_policy 和 get_balances。订单发送至配置的交易场所前会经过 IRL 检查。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"macropulse-lab-irl-gateway": {
"command": "uvx",
"args": [
"irl-gateway"
],
"env": {
"IRL_BASE_URL": "<IRL_BASE_URL>",
"IRL_API_TOKEN": "<IRL_API_TOKEN>",
"IRL_AGENT_ID": "<IRL_AGENT_ID>",
"IRL_MODEL_HASH": "<IRL_MODEL_HASH>",
"GATEWAY_BROKER": "<GATEWAY_BROKER>",
"PAPER_BALANCES": "<PAPER_BALANCES>"
}
}
}
}
启动命令uvx irl-gateway
需要配置的环境变量
IRL_BASE_URLYour IRL server, e.g. https://irl.example.com
IRL_API_TOKEN密钥Bearer token for the IRL server
IRL_AGENT_IDThe agent registered on IRL (its mandate)
IRL_MODEL_HASHThe model hash the agent was registered with (64 hex)
GATEWAY_BROKERpaper (default, live prices, no keys) or exchange
PAPER_BALANCESStarting paper balances, e.g. USDT=1000

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiirl-gateway0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

IRL Gateway

为 AI Agent 提供一个无法被滥用的交易账户,并留下每个无法篡改的决策记录。

IRL Gateway 是一个 MCP 服务,位于 AI Agent(Claude、ChatGPT 或你自己的 Agent)与交易所账户之间。Agent 下达的每笔订单都会经过 IRL Engine:

  1. 执行前先检查策略。 IRL 会先根据 Agent 的授权范围(启用状态、名义金额上限、允许的资产和交易场所)检查订单,再将订单发送到交易所。超出授权范围就不会下单。
  2. 交易理由会被封存。 Agent 必须说明交易理由。网关会将该理由与交易输入一并哈希,并把哈希封存到 IRL 的防篡改追踪记录中,每日锚定到 Bitcoin。明文会保留在你的本地日志中。
  3. 核对意图与成交情况。 交易所成交后,IRL 会比较已授权的内容与实际执行的内容,并记录为 MATCHED 或 DIVERGENT。

出现问题时,你可以证明 Agent 获准执行哪些操作、声称自己在做什么,以及实际发生了什么。

AI agent ── MCP ──> irl-gateway ──> IRL: authorize (policy + sealed rationale)
                         │
                         ├──────> exchange: market order (client id = sealed intent)
                         │
                         └──────> IRL: bind fill -> MATCHED / DIVERGENT

工具

工具功能
execute_trade(symbol, side, rationale, quantity | notional)唯一会转移资金的工具。通过授权 → 下单 → 绑定,在现货市场下单。返回 filled、denied、blocked 或 failed,并附上 IRL 的 trace_id 和判定结果。
get_policy()获取 IRL 实际执行的 Agent 授权范围,以及本地紧急停止开关状态。
get_quote(symbol)获取网关交易场所的最新价格。
get_balances()获取可用余额(模拟交易或交易所)。
get_trace(trace_id)获取 IRL 封存的一笔交易记录。
list_recent_trades(limit)本地日志:列出每笔交易的理由、上下文哈希、追踪 ID 和结果。

Agent 可以依赖以下行为:

  • 故障时拒绝执行。 如果 IRL 无法访问或拒绝该意图,就不会发送订单。
  • 紧急停止开关。 创建文件 ~/.irl-gateway/KILL 后,每笔交易都会在调用 IRL 前被拒绝。删除该文件即可恢复。
  • 不会悄悄成交。 如果交易所已成交,但 IRL 绑定失败,结果仍会报告成交情况,并标记为需要核对。
  • 封存的数量就是发送的数量。 在 IRL 封存订单数量之前,数量会按交易场所的步长取整,并检查是否满足其最低要求,因此封存的数量与发送到交易所的数量完全一致。交易场所会拒绝的订单会被拦截,并给出明确原因。

快速开始(模拟交易,大约一分钟)

uvx irl-gateway init

这条命令会从 norve.dev 获取免费的模拟交易层级令牌,为你的 Agent 注册带有初始授权范围的账户(BTC/USDT 和 ETH/USDT,每笔订单最多 1,000 USDT,在 paper-binance 上交易),将凭证保存到 ~/.irl-gateway/agent.json,并输出:

  • 一行用于 Claude Code 的 claude mcp add irl-gateway ... 命令;以及
  • 一个适用于 Claude Desktop、Cursor 或任何 MCP 客户端的 mcpServers 配置块。

粘贴其中一项,然后让 Agent 调用 get_policy 并进行首次模拟交易。模拟成交基于 Binance 实时公开价格,并遵循 Binance 的实际订单数量规则,因此无需交易所密钥。

选项:--name、--assets BTC/USDT,SOL/USDT、--max-notional 250、--contact [email protected](方便我们联系你)、--server(使用你自己的 IRL 引擎)。

免费层级限制: 仅限模拟交易场所;每个令牌最多支持 3 个 Agent,每日最多进行 500 次授权。想进行实盘交易或不受限制地运行?请自托管引擎,或申请完整令牌。

改为手动操作
curl -X POST https://norve.dev/irl/signup -H "Content-Type: application/json" -d '{"client_name": "my-claude-trader"}'
# -> {"token": "...", "tier": "paper", ...}  (shown once)

curl -X POST https://norve.dev/irl/agents -H "Authorization: Bearer $IRL_API_TOKEN"   -H "Content-Type: application/json" -d '{
    "name": "my-claude-trader",
    "model_hash_hex": "<sha256 of your agent config>",
    "max_notional": 100,
    "allowed_assets": ["BTC/USDT", "ETH/USDT"],
    "allowed_venues": ["paper-binance"]
  }'

然后将网关添加到你的 MCP 客户端:

{
  "mcpServers": {
    "irl-gateway": {
      "command": "uvx",
      "args": ["irl-gateway"],
      "env": {
        "IRL_BASE_URL": "https://norve.dev",
        "IRL_API_TOKEN": "…",
        "IRL_AGENT_ID": "<agent_id from registration>",
        "IRL_MODEL_HASH": "<the same model_hash_hex>",
        "AGENT_MODEL_ID": "claude-opus-5-5",
        "PAPER_BALANCES": "USDT=1000"
      }
    }
  }
}
## 配置
变量默认值含义
IRL_BASE_URL, IRL_API_TOKEN必填IRL 服务和 bearer token
IRL_AGENT_ID, IRL_MODEL_HASH必填已注册的 Agent 及其模型哈希
AGENT_MODEL_IDunspecified-model写入每条轨迹的模型名称(Agent 可针对每笔交易覆盖此值)
AGENT_CONFIG_CHECKSUMnone可选的 Agent 配置校验和,写入每条轨迹
IRL_L2_MODEoff如果 IRL 服务要求绑定 Layer 2 regime,则设为 regime
GATEWAY_BROKERpaperpaper 或 exchange
EXCHANGE_IDbinance任意 ccxt 交易所 ID;也是模拟交易的价格来源
EXCHANGE_API_KEY, EXCHANGE_API_SECRETexchange 模式下必填
EXCHANGE_TESTNETtrue使用交易所的测试网
PAPER_BALANCESUSDT=1000模拟账户初始余额(仅在 paper_state.json 不存在时使用;之后模拟账户会在重启后继续保留)
IRL_GATEWAY_HOME~/.irl-gateway日志(journal.jsonl)、紧急停止开关(KILL)和模拟账户(paper_state.json)的位置

IRL 看到的交易场所是交易所 ID(binance),或模拟交易时的 paper-<exchange>,因此授权许可可以允许模拟交易,同时禁止真实账户交易。

如何封存理由

对于每笔交易,网关都会构建一个包含理由、交易对、方向、数量、参考价格、交易场所、模型 ID 和客户端订单 ID 的上下文。它会将此上下文作为规范 JSON(键排序、不含空格)使用 SHA-256 哈希,并将哈希作为 prompt_version = "ctx-sha256:<hex>" 发送给 IRL,IRL 会将其封存到轨迹的 reasoning_hash 中。

日志会在哈希旁存储完整上下文,因此任何持有日志行的人都可以重新计算哈希,并将其与已封存的轨迹进行比对。IRL 本身永远不会看到理由文本。

开发

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
pytest --cov=irl_gateway
ruff check src tests && black --check src tests && isort --check-only src tests && mypy src

状态

早期版本(0.1)。仅支持现货市价单。支持模拟交易和 ccxt 交易所;接下来将支持 Alpaca。不构成投资建议,也不包含任何策略:网关负责控制和记录 Agent 的操作,但不负责做出决策。

采用 MIT 许可。

评论

支持 Markdown

第一次接触 MCP?

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

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