mcpField
V
Veyra

Veyra

远程服务
veyra.money金融数据06 周前更新

关于 Veyra

Veyra 是用于 Agent 支付的 MCP 服务和类型化客户端,通过服务器端策略限制 Base 上的 USDC 支出,并支持人工审批。

主要功能

  1. 01创建和查询支付
  2. 02设置单笔及每日限额
  3. 03按规则自动执行或请求审批
  4. 04限制可收款地址
  5. 05查看预算、支付来源和记录
  6. 06支持模拟支付与审计日志

适用场景

  1. 01限制 Agent 的 API 或数据采购支出
  2. 02让超出自动额度的支付由用户审批
  3. 03在模拟模式中测试支付流程
  4. 04查询支付状态并避免重复付款

MCP 相关

MCP 服务向 Agent 提供预算、能力和支付来源查询,以及创建、查看、列出和取消支付的工具。支出策略由服务器执行;用户可通过 MCP 端点连接。

配置

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

服务地址https://veyra.money/api/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://veyra.money/api/mcp需要授权
安装包
npmveyra-mcp0.1.1

工具

7

此工具无需参数。

详细介绍

Veyra — 为 AI Agent 提供带消费限额的钱包

veyra-mcp

为你的 AI Agent 提供带消费限额的钱包。
Veyra 的 MCP 服务 + 类型化客户端:在 Base 上进行非托管 USDC 支付,支持单笔支付上限、每日上限、人工审批区间和收款方允许列表——所有规则均由服务端执行,而非由模型执行。

npm CI MIT 文档


问题所在

Agent 越来越需要为各种事项付款:API 调用、数据集、悬赏,或另一个 Agent。目前的选择都不理想:

  • 把私钥交给 Agent。 一次提示词注入就可能让钱包分文不剩。
  • 给它一张卡。 没有单次调用限额,没有允许列表,而且银行不会告诉你是哪次工具调用花掉了钱。
  • 手动批准每笔付款。 那它就算不上真正的 Agent。

Veyra 位于两者之间。你连接一个自己已有的钱包,设置 Agent 可以花费的金额,然后为它提供一个 MCP 端点。Agent 可以使用 create_payment 等工具。它永远看不到密钥,也无法超出你设置的限额,因为限额由 Veyra 的服务端执行,而不是依赖模型遵循指令。

  agent  ──MCP──▶  veyra.money  ──policy──▶  your wallet  ──USDC on Base──▶  recipient
                    │
                    ├─ under auto-max      → executes from your capped on-chain allowance
                    ├─ in the ask band     → you approve in your own wallet (one link)
                    └─ over the limits     → blocked, agent is told why

60 秒快速设置

  1. 在 veyra.money 注册,连接钱包(也可以先选择模拟来源,不会发生实际资金转移)。
  2. 创建一个带有限额的 MCP 端点。复制凭证(以 veyra_ 开头)。
  3. 将其添加到你的宿主:
Claude Code
claude mcp add --transport http veyra https://veyra.money/api/mcp \
  --header "Authorization: Bearer veyra_..."
Cursor(.cursor/mcp.json)
{
  "mcpServers": {
    "veyra": {
      "url": "https://veyra.money/api/mcp",
      "headers": { "Authorization": "Bearer veyra_..." }
    }
  }
}
OpenAI Codex
export VEYRA_TOKEN=veyra_...
codex mcp add veyra --url https://veyra.money/api/mcp --bearer-token-env-var VEYRA_TOKEN
Claude Desktop,以及任何无法发送 bearer 标头的宿主(claude_desktop_config.json)
{
  "mcpServers": {
    "veyra": {
      "command": "npx",
      "args": ["-y", "veyra-mcp"],
      "env": { "VEYRA_TOKEN": "veyra_..." }
    }
  }
}

veyra-mcp 二进制文件是一个 stdio 桥接程序:它在本地保存凭证,并将每次调用转发到托管端点。桥接程序不承载任何策略。

其他任何客户端(纯 JSON-RPC)
curl -s https://veyra.money/api/mcp \
  -H "Authorization: Bearer veyra_..." \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_budget","arguments":{}}}'

然后让 Agent 执行一项需要花钱的操作,看看策略如何作出判断。

Agent 可使用的工具

工具功能
get_capabilities当前生效的支付轨道、网络、资产、限额和收款方允许列表
get_budget每日限额、今日已支出金额、单笔支付限额、自动支付和需询问的额度区间
list_payment_sources已屏蔽的资金来源,以及每个来源是否可以在无需人工介入的情况下完成结算
create_payment创建支付意图。策略由服务器端应用,结果会说明发生了什么
get_payment单笔支付的权威状态,包括通过哪个支付轨道完成结算
list_payments此端点的近期支付记录
cancel_payment在仍可取消时取消支付

每笔支付都会报告以下状态之一:

状态含义
confirmed资金已在链上转移
confirmed_simulated已通过模拟支付轨道结算。**没有资金转移。**系统会明确告知 Agent
awaiting_approval支付金额处于需询问的额度区间。next_action.url 是一次性链接,由所有者在自己的钱包中打开
submitted交易已发送,正在等待链上回执
pending已创建,但尚未评估或执行
failed / cancelled / expired终止状态。被策略阻止的支付会标记为 failed,并包含 policy_reason

在代码中使用

npm install veyra-mcp
import {
  VeyraClient,
  VeyraToolError,
  idempotencyKey,
  movedRealMoney,
  paymentOutcome,
} from "veyra-mcp";

const veyra = new VeyraClient({ token: process.env.VEYRA_TOKEN! });

const budget = await veyra.getBudget();
console.log(`spent ${budget.spent_today} of ${budget.daily_limit} USDC today`);

const payment = await veyra.createPayment({
  amount: "1.25",
  recipient: "0x1234…abcd",          // USDC on Base
  reason: "Weather API, 500 calls",
  idempotency_key: idempotencyKey("weather"),
});

switch (paymentOutcome(payment)) {
  case "settled":
    // The only case where value actually moved.
    console.log("paid —", (await veyra.getPayment(payment.payment_id)).tx_ref);
    break;
  case "simulated":
    console.log("settled on the simulated rail; no money moved");
    break;
  case "awaiting_approval": {
    console.log("owner must approve:", payment.next_action?.url);
    const settled = await veyra.waitForPayment(payment.payment_id);
    console.log(movedRealMoney(settled) ? "paid" : paymentOutcome(settled));
    break;
  }
  case "blocked":
    console.log("policy refused it:", payment.policy_reason);
    break;
}
策略拒绝不是异常

这一点值得再读一遍。策略拒绝的支付会以普通结果返回,状态为 status: "failed"——调用已按要求执行,只是结果为拒绝。只有参数格式错误、凭据无效或 ID 未知时才会抛出异常。

因此,用 try/catch 检测拒绝是错误的做法:它会漏掉所有被阻止的支付,并将其误判为成功。请使用 paymentOutcome;在告知任何人资金已转移前,请使用 movedRealMoney——即使状态以 "confirmed" 开头,只要是模拟结算,它就会返回 false。

只有确实发生错误时才使用 catch:

try {
  await veyra.createPayment({ /* … */ });
} catch (e) {
  if (e instanceof VeyraToolError) {
    console.log(e.code, e.message);   // VALIDATION_ERROR, UNKNOWN_CREDENTIAL, NOT_FOUND
  } else throw e;
}
不确定时,绝不要重试

如果无法判断支付是否成功,请查询状态——不要再创建一笔支付。真实支付结算后,getPayment 会返回 tx_ref;这既是确认凭据,也是向收款方提供的支付证明。重复使用相同的 idempotency_key 会返回原支付;使用新密钥则会再次支出。若向同一收款方发起的相同支付仍在处理中,Veyra 也会设置 possible_duplicate_of。

VEYRA_TOOLS 会以 JSON Schema 格式导出工具定义,因此你可以将其注册到 Vercel AI SDK、LangChain,或通过普通函数调用使用,无需进行网络往返。如需查看使用 Claude Agent SDK 和 Vercel AI SDK 构建的完整 Agent,请参阅 veyra-examples。

你需要信任什么

这是在处理资金,所以有必要直言不讳。

  • Veyra 绝不托管你的资金。 支付直接从你的钱包转到收款方。资金不会经过 Veyra 余额。
  • 超过自动批准限额后,不会委托任何操作。你需要在自己的钱包中通过批准链接为每笔转账签名。Veyra 会验证链上回执是否与请求相符。
  • 在自动批准限额内,你会向 Veyra 运营的中继器授予有额度上限的 ERC-20 授权。这与每个 DeFi 应用使用的 approve 原语相同。代币合约会强制执行额度上限。Veyra 的策略引擎会在该额度内决定收款方,因此请将授权额度设定在你能够承受损失的范围内;如果你知道 Agent 应该向谁付款,请使用收款方允许列表。你可以随时撤销授权。
  • 模拟支付轨道可让你在动用真实资金前接好所有流程。它会在所有位置明确标示:状态为 confirmed_simulated,simulated: true。
  • 每项决策都会记录在审计日志中,包括限额更改和凭据轮换。

完整详情请参阅:支付实际上如何完成 和 你究竟需要信任什么。

常见问题

支持哪些网络和资产? Base 上的 USDC。只使用一种稳定币,无需价格预言机即可精准设定美元限额;而 Base 已是 Agent 支付生态的结算网络。更多支付通道已列入路线图;如有需要,请提交 issue。

这能用于 x402 或按调用付费的 API 吗? 可以,就实际所需而言:Agent 会请求 Veyra 向卖方地址付款,并获取收据。Veyra 负责支出策略,而非对端使用的协议。

可以自行托管吗? 目前不行。此仓库包含客户端和桥接层;策略引擎是托管在 veyra.money 的服务。无论如何,钱包审批流程都是完全非托管的。

费用是多少? 提供免费方案。请参阅定价。

如果策略决策有误,应在哪里反馈? 请通过控制面板反馈,以便支持团队查看你的审计日志。此仓库的 issue 用于反馈客户端和桥接层相关问题。

开发

npm install
npm test     # builds, then runs the suite against a local mock of the endpoint

请参阅 CONTRIBUTING.md 和 SECURITY.md。

链接

MIT © Veyra

评论

支持 Markdown

第一次接触 MCP?

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

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