原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Veyra

作者:zapxlabs版本 0.1.2i★ –i电脑或云端
注册名称io.github.zapxlabs/veyra

安装

概览

作者提供的说明(英文原文)

Give AI agents a wallet with a spending limit. Non-custodial USDC on Base, server-enforced limits.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 电脑或云端
  • 传输方式: stdio, Streamable HTTP
  • 分类: 其他
  • 你需要填写:VEYRA_TOKEN, Authorization

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • 在云端运行无需安装任何东西,通过互联网连接
  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。

或者在你的电脑上运行

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "veyra": {
      "command": "npx",
      "args": [
        "-y",
        "veyra-mcp"
      ],
      "env": {
        "VEYRA_TOKEN": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add --transport http veyra https://veyra.money/api/mcp --header 'Authorization: your-value'

或者在你的电脑上运行

claude mcp add veyra --env VEYRA_TOKEN=your-value -- npx -y veyra-mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "veyra": {
      "url": "https://veyra.money/api/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

或者在你的电脑上运行

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "veyra": {
      "command": "npx",
      "args": [
        "-y",
        "veyra-mcp"
      ],
      "env": {
        "VEYRA_TOKEN": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "veyra": {
      "type": "http",
      "url": "https://veyra.money/api/mcp",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

或者在你的电脑上运行

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "veyra": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "veyra-mcp"
      ],
      "env": {
        "VEYRA_TOKEN": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • VEYRA_TOKEN 机密 必填 env
    Endpoint credential from https://veyra.money/dashboard (starts with veyra_)
  • Authorization 机密 必填 HTTP header
    Bearer . Create one at https://veyra.money/dashboard; it starts with veyra_.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

工具名称和描述与服务器在 2026年11月9日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。

  • get_capabilities

    Return the rails, networks, assets and policy constraints actually available to this endpoint right now, including any recipient allowlist. Read-only.

  • get_budget

    Return remaining daily allowance and policy summary. Read-only. If blocked by limits, ask the human user — do not retry.

  • list_payment_sources

    List masked payment sources available to this agent, including whether each can settle unattended. Never request secrets.

  • create_payment

    Create a payment intent. Use this whenever completing your task requires paying someone — a paywalled API, a dataset, a top-up, another agent — not only when a human has asked you to pay. Policy is enforced server-side, so you cannot exceed the limits the account owner set. Statu

  • get_payment

    Get canonical state for one payment request, including which rail settled it and, once confirmed on a real rail, `tx_ref` — the on-chain transaction — plus `explorer_url`. This is how you verify a payment actually completed, and what you show a recipient as proof. Always call thi

  • list_payments

    List this agent's recent payments.

  • cancel_payment

    Cancel a payment only while still cancellable.

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月10日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 zapxlabs 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • ✓ 通过

    端点有响应

    在 255 毫秒内响应(HTTP 200)

  • – 不适用

    使用 OAuth 登录

    无需登录

  • ✓ 通过

    工具描述中没有隐藏指令

    已读取 7 个工具描述,未发现针对 AI 的隐藏指令

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18935 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18935 个服务器的 47% 更新
  • 基础检查结果等于或优于此分类中其他 18935 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Veyra 安全吗?

它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:VEYRA_TOKEN, Authorization

它在我的电脑上运行还是在云端?

两种方式都可以:安装在你的电脑上,或者连接云端版本。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.2)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Calendesk

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry起步阶段↓ 66/周★ 44014个月前更新

在你的电脑上运行

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander正在增长★ 2114天前更新

在云端运行✓ desktopcommander.app

Calendesk

Manage Calendesk bookings, customers, employees and services from AI assistants. OAuth sign-in.

作者:Calendesk今天更新

在云端运行✓ calendesk.com

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

veyra-mcp

Give your AI agent a wallet with a spending limit.

MCP server + typed client for Veyra : non-custodial USDC payments on Base, with per-payment caps, daily caps, human approval bands and a recipient allowlist — all enforced server-side, never by the model.


The problem

Agents increasingly need to pay for things: an API call, a dataset, a bounty, another agent. Today the choices are bad:

  • Hand the agent a private key. One prompt injection away from an empty wallet.
  • Hand it a card. No per-call limits, no allowlist, and your bank will not tell you which tool call spent the money.
  • Approve every payment by hand. Then it is not really an agent.

Veyra is the layer in between. You connect a wallet you already own, set what an agent may spend, and hand the agent one MCP endpoint. The agent gets tools like create_payment. It never sees a key, and it cannot exceed the limits you set because the limits are enforced by Veyra's server, not by the model following instructions.

  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-second setup

  1. Sign up at veyra.money, connect a wallet (or start with the simulated source, which moves no money).
  2. Create an MCP endpoint with limits. Copy the credential (it starts with veyra_).
  3. Add it to your host:

Claude Code

claude mcp add --transport http veyra https://veyra.money/api/mcp \

--header "Authorization: Bearer veyra_..."

</details>

Cursor ( .cursor/mcp.json )

{

"mcpServers": { "veyra": { "url": "https://veyra.money/api/mcp", "headers": { "Authorization": "Bearer veyra_..." } } } }

</details>

OpenAI Codex

export VEYRA_TOKEN=veyra_...

codex mcp add veyra --url https://veyra.money/api/mcp --bearer-token-env-var VEYRA_TOKEN

</details>

Claude Desktop and any host that cannot send a bearer header ( claude_desktop_config.json )

{

"mcpServers": { "veyra": { "command": "npx", "args": ["-y", "veyra-mcp"], "env": { "VEYRA_TOKEN": "veyra_..." } } } }

The veyra-mcp binary is a stdio bridge: it holds the credential locally and relays every call to the hosted endpoint. No policy lives in the bridge.

Anything else (plain 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":{}}}'

</details>

Then ask the agent to do something that costs money and watch the policy decide.

Tools the agent gets

ToolWhat it does
get_capabilitiesRails, networks, assets, limits and the recipient allowlist in force right now
get_budgetDaily limit, spent today, per-payment limit, auto and ask bands
list_payment_sourcesMasked sources and whether each can settle without a human
create_paymentCreate a payment intent. Policy is applied server-side and the result says what happened
get_paymentCanonical state for one payment, including which rail settled it
list_paymentsRecent payments for this endpoint
cancel_paymentCancel while still cancellable

Every payment reports one of these statuses:

StatusMeaning
confirmedValue moved on-chain
confirmed_simulatedSettled on the simulated rail. No money moved. The agent is told this explicitly
awaiting_approvalIn the ask band. next_action.url is a one-time link the owner opens in their own wallet
submittedTransaction sent, waiting for the chain receipt
pendingCreated, not yet evaluated or executed
failed / cancelled / expiredTerminal. Blocked-by-policy payments are failed with a policy_reason

Use it from code

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; }

Policy refusals are not exceptions

This is the one thing worth reading twice. A payment the policy declines comes back as an ordinary result with status: "failed" — the call did what it was asked and the answer was no. Only a malformed argument, a bad credential or an unknown id throws.

So try/catch is the wrong tool for detecting refusals: it misses every blocked payment and reads it as a success. Use paymentOutcome, and use movedRealMoney before telling anyone value moved — it returns false for a simulated settlement even though the status begins with "confirmed".

Reserve catch for what genuinely failed:

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; }

Never retry because you are unsure

If you cannot tell whether a payment worked, read it — do not create another. getPayment returns tx_ref once a real payment has settled, which is both your confirmation and what you show the recipient as proof. Reusing the same idempotency_key returns the original payment; a new key spends again. Veyra also sets possible_duplicate_of when an identical payment to the same recipient is already live.

VEYRA_TOOLS exports the tool definitions as JSON Schema, so you can register them with the Vercel AI SDK, LangChain, or plain function calling without a network round-trip. See veyra-examples for complete agents built with the Claude Agent SDK and the Vercel AI SDK.

What you are trusting

Worth being blunt, because this is money.

  • Veyra never holds your funds. Payments go from your wallet to the recipient. There is no Veyra balance in the middle.
  • Above your auto-approve limit nothing is delegated. You sign each transfer in your own wallet from the approval link. Veyra verifies the on-chain receipt matches the request.
  • Within your auto-approve limit you grant a capped ERC-20 allowance to a relayer Veyra operates, the same approve primitive every DeFi app uses. The token contract enforces the cap. Veyra's policy engine decides the destination within that cap, so size the allowance like a float you could lose, and use the recipient allowlist when you know who the agent should be paying. Revoke it any time.
  • The simulated rail exists so you can wire everything up before touching real funds. It is labelled everywhere: status confirmed_simulated, simulated: true.
  • Every decision is in the audit log, including limit changes and credential rotations.

Full details: How a payment actually moves and What you are trusting, exactly.

FAQ

Which networks and assets? USDC on Base. One stablecoin keeps the dollar limits exact without a price feed, and Base is where the agent-payment ecosystem already settles. More rails are on the roadmap; open an issue if you need one.

Does this work with x402 or pay-per-call APIs? Yes, in the sense that matters: the agent asks Veyra to pay the seller's address and gets a receipt. Veyra is the spending policy, not the protocol on the other end.

Can I self-host? Not today. This repo is the client and bridge; the policy engine is the hosted service at veyra.money. The wallet-approval path is fully non-custodial regardless.

What does it cost? There is a free plan. See pricing.

Where do I report a bad policy decision? From the dashboard, so support can see your audit log. This repo's issues are for the client and bridge.

Development

npm install

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

See CONTRIBUTING.md and SECURITY.md.

Links

MIT © Veyra

问 PopNx