Free tool
AI agent spending policy generator
Set limits, merchants and approval rules for an AI agent that can pay, and get a readable policy plus the same thing as JSON and YAML. Free, no sign-up, and nothing leaves your browser.
Your policy
- Research agent may spend up to 25 USD in one payment.
- Across all payments: no more than 100 USD a day and 500 USD a month.
- Never pay: gambling, gift cards.
- Only pay: api.example.com, data and research APIs. Anyone else is refused.
- A person approves any payment over 10 USD; smaller ones go through on their own.
- Approval requests go to: Finance team.
- Test mode is on: run on a simulated or sandbox payment method, and no real money should move.
- Anything that breaks a rule is refused, not retried, and the agent tells you why.
{
"template": "generic-agent-spending-policy",
"version": 1,
"name": "Research agent",
"currency": "USD",
"limits": {
"per_transaction": "25",
"daily": "100",
"monthly": "500"
},
"merchants": {
"allowed": [
"api.example.com",
"data and research APIs"
],
"blocked": [
"gambling",
"gift cards"
],
"unlisted": "block"
},
"approval": {
"rule": "ask_above",
"ask_above": "10",
"reviewer": "Finance team"
},
"test_mode": true
}
A generic template for your own records, code or review. It is not a file Veyra or any other payment service imports as it is.
The same policy in Veyra
Veyra has no policy import. You type these into the endpoint's spend policy in the dashboard; the labels below are the ones it shows.
- Per transaction
- 25Larger payments are refused.
- Daily
- 100Per endpoint, per UTC day (resets at 00:00 UTC).
- Auto-approve ≤
- 10Up to this amount can go through without a person (Pro and Team plans only).
- Ask up to
- 25Between auto-approve and this, Veyra holds the payment and sends you an approval link.
- Recipient allowlist
- (empty)Empty allows any address within the limits, but nothing on a real wallet is auto-approved without an allowlist.
Not carried over
- Monthly limit: Veyra has per-payment and daily limits only.
- Blocked list: Veyra has no blocklist. An allowlist is exhaustive, so anything not on it is refused.
- Names, domains and categories (api.example.com, data and research APIs): Veyra matches recipient wallet addresses, not merchants or categories.
- Reviewer label: Veyra sends approval requests to the account owner (email, and browser push if turned on); the approval is signed in the bound wallet.
- Test mode is not a policy setting in Veyra: connect the simulated source instead. Its payments come back as confirmed_simulated and move no money.
What your agent reads back from get_capabilities
{
"assets": [
"USDC"
],
"networks": [
"base"
],
"allowed_recipients": [],
"constraints": {
"per_tx_limit": "25",
"daily_limit": "100",
"auto_max": "10",
"ask_max": "25"
}
}The policy fields of that read-only MCP tool's reply, with your values. The full reply also lists the payment rails and execution modes, which depend on the wallets you connect.
Have the limits enforced, not just written down
Veyra gives an AI agent one MCP endpoint and checks every payment against per-payment, daily, auto-approve and ask limits and an optional recipient allowlist on the server, outside the model. Payments in the ask band wait for you to approve them in your own wallet. Start free on a simulated wallet that moves no money; real payments are USDC on Base.
Start free with a simulated walletGeneral information, not financial advice. The tool writes down the rules you choose; it does not check that they suit your situation.
How to use it
- Name the agent and pick a currency. The name only labels the policy and the downloaded file.
- Set three limits. Per payment is the most one payment can be. Per day and per month cap the total across all payments; leave the monthly box empty for no monthly cap. Each limit has to fit inside the next one up.
- List merchants. Put one merchant, website, category or wallet address on each line. If you fill in the allowed list, anything not on it is refused. Leave it empty to allow anyone you have not blocked.
- Choose when a person approves. Above an amount, for any merchant not on the allowed list, for every payment, or never within the limits. The reviewer box is a label such as “Finance team” so whoever reads the policy knows who decides.
- Turn on test mode while you are trying an agent out, so the policy says no real money should move.
- Copy or download the JSON or YAML, and use the Veyra section if you want the limits enforced there.
How the policy is worked out
The summary lists the rules in the order a payment system would normally check them. First the hard stops: a payment over the per-payment limit, or one that would take the day's or month's total over its limit, is refused. Then the merchant lists: a blocked merchant is always refused, and with an allowed list in place an unlisted merchant is either refused or sent for approval, depending on the rule you chose. Last comes approval: under the “ask above an amount” rule, anything up to that amount goes through on its own and anything above it waits for a person.
The tool refuses to show a policy that contradicts itself, such as a per-payment limit above the daily limit, an approval amount above the per-payment limit, or the same merchant on both lists. Amounts are kept exactly as you typed them, without rounding, and lists are de-duplicated. In the JSON and YAML, merchants.unlisted spells out what happens to a merchant on neither list (allow, ask or block), so nobody has to infer it.
How it maps to Veyra
Veyra enforces a policy per MCP endpoint with four amounts and one list: a per-payment limit, a daily limit, an auto-approve limit and an ask limit, plus a recipient allowlist of wallet addresses. They must stay in order (auto-approve ≤ ask ≤ per-payment ≤ daily), and the tool shows Veyra's own error if yours wouldn't be accepted. Amounts are USDC on Base, and the daily limit resets at midnight UTC.
Payments up to the auto-approve limit can go through without you only on the Pro and Team plans, with an on-chain allowance granted and a recipient allowlist set; otherwise they wait for approval. Between the auto-approve and ask limits, Veyra holds the payment and sends you a link to approve it in your wallet. Above the ask limit, or over the day's total, it is refused. See the guide to setting spending limits and the auto-approve limit entry for more.
Common questions
Can I upload this JSON or YAML to Veyra?
No. Veyra has no policy import. The JSON and YAML are a generic template for your own records, code or review. The Veyra section of the result shows the values to type into an endpoint's spend policy in the dashboard, using the labels the dashboard shows.
What limits should an AI agent have?
Start with the most an agent should ever pay in one go, then a daily total you would be comfortable losing on a bad day, then a monthly total for budgeting. Keep the amount that goes through without a person small, and widen it only after you have watched the agent's payments for a while. There is no standard number; it depends on what the agent buys.
What is the difference between an allowed list and a blocked list?
An allowed list is exhaustive: anything not on it is refused, or sent for approval if you chose to be asked about new merchants. A blocked list names what is never paid and allows everything else. An allowed list is the stronger control, because a blocked list can only stop the merchants you thought of in advance.
Which settings does Veyra not have?
Veyra has a per-payment limit, a daily limit, an auto-approve limit, an ask limit and a recipient allowlist of wallet addresses. It has no monthly money limit, no blocklist, no merchant names or categories, no rule that asks only for new recipients, and no separate reviewer: approval requests go to the account owner. Test mode is a simulated payment source rather than a policy switch.
Is anything I type sent anywhere?
No. The policy is built in your browser as you type. Nothing is uploaded, stored or sent to an AI model, and the page works the same with no account.
Does writing a policy stop an agent from overspending?
Only if something outside the model enforces it. A policy pasted into a prompt is a request the model may ignore, misread or be talked out of by injected text. The limits need to be checked by the system that actually moves the money, before the payment is made.
Sources
- Veyra docs: changing a policy (limits and allowlist rules) (checked 27 Oct 2026)
- Veyra docs: approvals and notifications (checked 27 Oct 2026)
- Veyra docs: the simulated rail (checked 27 Oct 2026)
- Veyra pricing: what each plan allows (checked 27 Oct 2026)
- RFC 8259: the JSON data interchange format (checked 27 Oct 2026)
- YAML 1.2.2 specification (checked 27 Oct 2026)
This page explains how agent payments and the related technology work. It is not financial, investment, legal or tax advice. Protocols and provider features change; check the linked official sources before relying on a detail.