Runtime authorizationfor AI agents to authorize
Default-deny security for AI agents. Sub-10ms edge decisions. Full audit trail. MCP native.
1import { Veto } from '@useveto/node'23const veto = new Veto({ apiKey: process.env.VETO_API_KEY })45// Authorize an AI agent action6const decision = await veto.authorize({7 agent: 'customer-support-bot',8 action: 'send_email',9 resource: 'user:1234',10 context: { intent: 'refund_request' }11})1213if (decision.allowed) {14 await sendEmail(user)15}
Security that scales
with your agents.
Default Deny
Every action requires explicit permission. No implicit trust, no ambient authority. Your AI agents only do what you allow.
Sub-10ms Edge Decisions
Authorization at the edge via Cloudflare Workers. Decisions happen in milliseconds, not round-trips. Performance you can ship.
MCP Native
Built for the Model Context Protocol from day one. Seamless integration with Claude, GPT, and any MCP-compatible agent.
Full Audit Trail
Every authorization decision logged, queryable, and exportable. Know exactly what your agents did, when, and why.
Policy as Code
Define authorization rules in TypeScript. Version controlled, testable, reviewable. Security that lives with your code.
Multi-Tenant Ready
Isolate authorization contexts per customer, team, or environment. Enterprise-grade from the start.
Three steps.
Complete protection.
1npm install @useveto/node23import { Veto } from '@useveto/node'45const veto = new Veto({6 apiKey: process.env.VETO_API_KEY7})
Built for devs.
By devs.
A thoughtfully designed SDK that gets out of your way. Secure your AI agents with intuitive APIs and exceptional documentation.
TypeScript native
Full type safety with auto-generated types.
Zero config
Sensible defaults that just work.
Edge-first
Runs on Cloudflare Workers for <10ms latency.
Fail closed
Veto errors = deny. Never fails open.
import { Veto } from '@useveto/node'const veto = new Veto({ apiKey: process.env.VETO_API_KEY })const decision = await veto.authorize({agent: 'support-bot',action: 'send_email',resource: 'user:1234'})if (!decision.allowed) {throw new VetoError(decision.reason)}
Built for every
agent you ship.
Customer Support Agents
Control what your support bot can access. Allow reading tickets, restrict refunds above $100, block data deletion entirely.
allow("read", "tickets/*")
deny("refund", { when: amount > 100 })Coding Agents
Let coding agents read and write files, but block shell commands, network access, or changes outside the project directory.
allow("write", "src/**")
deny("exec", "shell:*")Data Pipeline Agents
Permit read access to analytics tables while blocking writes to production. Enforce row-level access by team.
allow("read", "analytics:*")
deny("write", "prod:*")MCP Tool Servers
Wrap every tool in your MCP server with authorization. Three lines of code, zero implicit trust, full audit log.
guard(tool, { agent, action })
// → allow | deny | escalateSimple, transparent
pricing
Start free, scale as your agents grow. Pay only for what you use.
Free
For side projects and experimentation
1,000 auth checks/mo
- 1,000 auth checks/month
- 1 project
- 7-day audit log retention
- Community support
- Basic policies
Pro
For production AI agents
100,000 auth checks/mo
- 100,000 auth checks/month
- Unlimited projects
- 90-day audit log retention
- Priority support
- Advanced policies
- Custom rules engine
- Webhook integrations
Enterprise
For teams at scale
Unlimited auth checks/mo
- Unlimited auth checks
- Unlimited projects
- Unlimited audit retention
- 24/7 dedicated support
- Custom integrations
- SLA guarantee
- Security audit report
- On-premise option
All plans include edge deployment, MCP support, and full audit logging. Compare all features
Start protecting
your AI agents.
Your agents are authenticated. But are they authorized? Start free with 1,000 auth checks per month.
No credit card required