Veyra
Give AI agents a wallet with a spending limit. Non-custodial USDC on Base, server-enforced limits.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"veyra": {
"command": "npx",
"args": [
"veyra-mcp"
]
}
}
}可运行的软件包
0.1.1stdio远程端点
https://veyra.money/api/mcpstreamable-http它能做什么
工具清单
工具(7)
🟢get_capabilities
Return the rails, networks, assets and policy constraints actually available to this endpoint right now, including any recipient allowlist. Read-only.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_budget
Return remaining daily allowance and policy summary. Read-only. If blocked by limits, ask the human user — do not retry.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_payment_sources
List masked payment sources available to this agent, including whether each can settle unattended. Never request secrets.
输入模式
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡create_payment(amount, asset, recipient, network, reason, ...)
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. Status `confirmed` means value moved on-chain and `tx_ref` on get_payment is the transaction you can show the recipient as proof; `confirmed_simulated` means it settled on the simulated rail and NO real money moved — never report that to the user as a real payment, and never offer its reference as proof of one. If status is awaiting_approval, give the user next_action.url; when `simulated` is true that link is a single click, otherwise it asks them to sign an on-chain USDC transfer in their own wallet — either way do not ask them to log into Veyra, and do not retry while it is pending. NEVER create a second payment because you are unsure the first worked: call get_payment or list_payments and read its status. Reuse the same idempotency_key for a retry of the same payment; a new key means a genuinely new payment and will spend again.
输入模式
{
"type": "object",
"properties": {
"amount": {
"type": "string",
"description": "Decimal string, e.g. 4.50"
},
"asset": {
"type": "string",
"description": "e.g. USDC"
},
"recipient": {
"type": "string",
"description": "Destination address. Must be a valid address for the network, e.g. 0x… on base."
},
"network": {
"type": "string",
"description": "e.g. base"
},
"reason": {
"type": "string"
},
"idempotency_key": {
"type": "string",
"description": "Agent-generated unique key; retries must reuse it"
}
},
"required": [
"amount",
"asset",
"recipient",
"network",
"reason",
"idempotency_key"
],
"additionalProperties": false
}🟢get_payment(payment_id)
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 this before concluding a payment failed.
输入模式
{
"type": "object",
"properties": {
"payment_id": {
"type": "string"
}
},
"required": [
"payment_id"
],
"additionalProperties": false
}🟢list_payments(limit)
List this agent's recent payments.
输入模式
{
"type": "object",
"properties": {
"limit": {
"type": "number"
}
},
"additionalProperties": false
}🔴cancel_payment(payment_id)
Cancel a payment only while still cancellable.
输入模式
{
"type": "object",
"properties": {
"payment_id": {
"type": "string"
}
},
"required": [
"payment_id"
],
"additionalProperties": false
}社区
证据