Veto CLI — one-command MCP setup for AI agent payment authorization.
Project description
Veto CLI
One-command setup for the Veto authorization layer — protect every payment your AI agent makes.
Veto is the policy and approval layer for AI agents that take real actions: x402 payments, Stripe Issuing transactions, on-chain transfers. The Veto CLI auto-configures Veto for any MCP-compatible client (Claude Desktop, Claude Code, Cursor, Zed, Continue) so your agent calls Veto before every transaction — and the transaction is allowed, denied, or escalated for human approval based on policies you define.
Install
pip install veto-cli
Requires Python 3.9+. No third-party dependencies — stdlib only.
Quickstart
# 1. Sign up at https://veto-ai.com to get an API key.
# 2. Auto-configure your MCP client:
veto init --api-key veto_test_xxxxxxxxxxxx
# 3. Verify the integration:
veto test
veto init detects which MCP clients you have installed (Claude Desktop, Cursor, etc.) and writes the Veto MCP server into their config. Restart the client and your agent now routes every payment through Veto.
Commands
| Command | What it does |
|---|---|
veto init |
Auto-detect MCP clients on your machine and add Veto to each one's config |
veto status [agent_id] |
Show your agent's current reputation tier and recent decision history |
veto test [agent_id] |
Fire a synthetic test transaction to confirm the integration works |
veto list |
List all agents linked to your Veto account |
veto uninstall |
Remove Veto from MCP client configs (does not delete your account) |
veto mcp |
Run the Veto MCP server in foreground (for debugging) |
What Veto evaluates on every authorize call
Each transaction passes through an 8-step pipeline before approval:
- Pre-checks — agent suspended? amount sane?
- Policy enforcement — per-tx limit, daily/monthly caps, merchant allowlist/blocklist
- Prompt injection detection — 40 regex patterns over the action description
- Merchant fraud screening — known-fraud database, typosquatting (SequenceMatcher), suspicious TLDs
- Intent verification — does the action match the agent's stated purpose?
- Anomaly detection — amount spike (>3× rolling avg), velocity, merchant diversity
- LLM final verdict — Claude Sonnet reviews the case
- Reputation weighting — agent trust tier modulates final risk score
Output: approve | deny | escalate (with risk score 0.0–1.0 and a human-readable reason).
Configuration
The CLI stores state in ~/.veto/config.json (mode 0o600). It contains your API key and known agent IDs. No transaction data is stored locally.
By default the CLI talks to https://veto-ai.com. To point at a self-hosted Veto:
veto init --api-key XXX --base-url https://veto.your-company.com
Links
- Sign up: https://veto-ai.com
- Docs: https://veto-ai.com/docs
- Discord: https://discord.gg/veto-ai
- GitHub: https://github.com/veto-protocol
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file veto_cli-0.1.1.tar.gz.
File metadata
- Download URL: veto_cli-0.1.1.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4f25bd2564e2a61f2ebc2ff8e1eed0acbd11538f0ebc590446c27f5efa443f3
|
|
| MD5 |
5b0e4e7142ca80c9b546c0447dc3f87a
|
|
| BLAKE2b-256 |
e10d24b5601aeb266d3ac97ef3fa144761dbd46d2106efb7d0736978e215355a
|
File details
Details for the file veto_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: veto_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
305ac56ff8950855d1f1b37aeecd4777cc610fe6f12f7ec7c1ca6ad203f45395
|
|
| MD5 |
d57907f7ea8dfbf3e6aa6ece3ee42dda
|
|
| BLAKE2b-256 |
2f03b9aea4adee0b53c6b3fa37c203f1ca1392886ef10138513b493f72dc3784
|