mcpField
V
veto

veto

Local
github.comDeveloper Tools1Updated 6d ago

About veto

veto turns OpenAPI specifications into an agent-callable API catalog for teams that need controls around API use. Agents work through three tools—search, describe, and invoke—and sensitive operations can wait for human approval.

Key features

  1. 01Build an API catalog from OpenAPI specs
  2. 02Search APIs using natural language
  3. 03Inspect schemas and suggested next calls
  4. 04Require human approval for sensitive operations
  5. 05Use through CLI, scripts, or a Go client

Use cases

  1. 01Find the right endpoint across multiple APIs
  2. 02Follow declared relationships between services
  3. 03Review the caller and parameters before a deletion

MCP support

veto exposes its OpenAPI catalog as an MCP server with three tools: search, describe, and invoke.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"aiveto-veto": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/aiveto/veto:0.1.13"
]
}
}
}
Run commanddocker run -i --rm ghcr.io/aiveto/veto:0.1.13

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
ocighcr.io/aiveto/veto:0.1.13

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Your entire API platform. Just 3 MCP tools.

Your APIs are already built.

Point veto at your OpenAPI specs. An agent gets three tools: search, describe, and invoke. You name how the APIs connect. A delete waits until a person approves it.

No API rewrites. The agent does not get a tool for every endpoint.

veto init reads the OpenAPI specs. You name the customer and invoice links. scrap means delete the order. Claude, Cursor, or ChatGPT gets search, describe, and invoke. Order 10482 is Mara Ellison, a wool coat and two cedar trays, $556. The invoice is paid. Scrap the order, and the call is held. The order is still there.

See it yourself: Run the Harbor demo. Mara's order, the customer and invoice links, and a delete that waits.

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 an agentSearch, describe, and invoke
Use your terminalveto search, veto describe, veto invoke
Write a scriptveto serve --json
Call it from GoOne generated client for this runtime, shared by every API
Follow a link to another serviceSearch in plain language, then the links you wrote
Stop a sensitive callA person approves the exact caller, operation, and parameters
See what ranA record of what ran, with secrets left out

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, the links between them, 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.