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
}社群
證據