veto

module
v0.1.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2026 License: Apache-2.0

README

Your entire API platform. Just 3 MCP tools.

Your APIs are already built. Make them agent-ready.

Turn existing OpenAPI services into intelligent, connected tools for AI agents, without building an MCP integration per endpoint.

3 MCP tools. Semantic discovery. Deterministic API relationships. CLI. Human approvals. All from one runtime.

No API rewrites. No hundreds of MCP tools. No separate integration for every service.

See it yourself: Run the Harbor demo — explore connected APIs, follow relationships, and see approval-gated execution in action.

100 endpoints. 1,000 endpoints. Still 3 MCP tools.

search → describe → invoke
  • Search. Find the right API using natural language.
  • Describe. Discover its schema and what to call next.
  • Invoke. Execute it with built-in controls.

Your API catalog grows. Your agent's tool surface stays the same.

Your APIs are connected. Your agents should know that.

Ask: "Who placed order 123?"

orders.get → customerId 7 → customers.get

Veto uses declared relationships to guide the next API call. No guessed endpoints. No invented relationships. No loading the entire API catalog into context.

Agents can act. You stay in control.

Ask: "Delete order 123."

Veto holds the operation until a human approves the exact caller, operation, and parameters. When approval is required, the operation cannot proceed without it.

One OpenAPI catalog. Multiple ways to use it.

Want to... Veto gives you
Connect AI agents MCP server with 3 discovery tools
Explore APIs in your terminal CLI
Build scripts and agent skills JSON-line interface (veto serve --json)
Integrate with Go applications A generated client for this runtime, not a new client per upstream API
Navigate across services Semantic search and declared relationships
Safely execute sensitive operations Human approvals and policy enforcement
Understand what executed Redacted audit traces

One catalog. One runtime. Consistent behavior across interfaces. Module github.com/aiveto/veto.

Get started

Already have OpenAPI specs? You're three commands away from your first MCP server.

brew install aiveto/veto/veto
veto init orders.yaml customers.yaml
veto serve --stdio

The setup guide has the block for Claude, Cursor, or ChatGPT.

See Veto in action

Harbor is a working example: orders, customers, billing, declared relationships, and a delete that waits. make demo runs it over the CLI, then over MCP.

No model API key for the local example in this repo: go run ./examples/two-apis.

You already have the APIs. Give your agents a better way to use them.

Get started · Try the demo · Explore the source

Directories

Path Synopsis
Package agent runs one turn.
Package agent runs one turn.
openai
Package openai calls the OpenAI HTTP API for the openai provider key.
Package openai calls the OpenAI HTTP API for the openai provider key.
Package agentmeta applies an agent.yaml overlay to a catalog.
Package agentmeta applies an agent.yaml overlay to a catalog.
Package auth places a credential on an upstream call.
Package auth places a credential on an upstream call.
Package bundle loads contracts, relations, and check cases.
Package bundle loads contracts, relations, and check cases.
Package capability is search, describe, and invoke.
Package capability is search, describe, and invoke.
Package catalog is the operation index shared by the runtime, the MCP server, and a generated client.
Package catalog is the operation index shared by the runtime, the MCP server, and a generated client.
cmd
veto command
Package main is the veto command.
Package main is the veto command.
Package config loads veto.yaml.
Package config loads veto.yaml.
Package credentials is how an embedder supplies material for one upstream call.
Package credentials is how an embedder supplies material for one upstream call.
Package eval runs agent cases with the scripted model and the real policy path.
Package eval runs agent cases with the scripted model and the real policy path.
examples
two-apis command
Package main runs two contracts through one catalog.
Package main runs two contracts through one catalog.
Package execute sends the HTTP call for one operation.
Package execute sends the HTTP call for one operation.
Package flow runs a sequence of steps the model may name.
Package flow runs a sequence of steps the model may name.
Package generate writes a Go client whose calls go through runtime.Invoke.
Package generate writes a Go client whose calls go through runtime.Invoke.
internal
atomicfile
Package atomicfile writes a complete file by renaming a temporary sibling.
Package atomicfile writes a complete file by renaming a temporary sibling.
jsonfield
Package jsonfield reads one field from a JSON object body.
Package jsonfield reads one field from a JSON object body.
yamlfile
Package yamlfile checks one YAML document before a typed decode.
Package yamlfile checks one YAML document before a typed decode.
Package jsonopts is the encode option for JSON sent to a client API.
Package jsonopts is the encode option for JSON sent to a client API.
Package mcpserver is the MCP adapter for search, describe, and invoke.
Package mcpserver is the MCP adapter for search, describe, and invoke.
Package memory stores turns for one run.
Package memory stores turns for one run.
Package opa evaluates a Rego overlay.
Package opa evaluates a Rego overlay.
Package openapi loads an OpenAPI document into a catalog.
Package openapi loads an OpenAPI document into a catalog.
Package policy allows, checks, and confirms.
Package policy allows, checks, and confirms.
Package replay reads OpenTelemetry spans.
Package replay reads OpenTelemetry spans.
Package result is an HTTP result and the invoke errors returned to a caller.
Package result is an HTTP result and the invoke errors returned to a caller.
Package runctx builds the context pack for one turn.
Package runctx builds the context pack for one turn.
Package runtime is the invoke sequence shared by the CLI, MCP, and the library.
Package runtime is the invoke sequence shared by the CLI, MCP, and the library.
Package semantics derives a note for an operation and applies a file overlay.
Package semantics derives a note for an operation and applies a file overlay.
Package telemetry exports OpenTelemetry spans.
Package telemetry exports OpenTelemetry spans.
Package valkey is a policy.Store for more than one veto process.
Package valkey is a policy.Store for more than one veto process.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL