Skip to main content
Glama

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.

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.

Related MCP server: MCP Toolshed

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 agent

Search, describe, and invoke

Use your terminal

veto search, veto describe, veto invoke

Write a script

veto serve --json

Call it from Go

One generated client for this runtime, shared by every API

Follow a link to another service

Search in plain language, then the links you wrote

Stop a sensitive call

A person approves the exact caller, operation, and parameters

See what ran

A 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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to safely call enterprise tools through a governed MCP gateway with permission enforcement, blast-radius controls, input validation, and a full audit trail for every invocation.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables agents to securely discover and invoke a centrally governed catalog of tools from distributed internal and external providers, with policy enforcement, quotas, inspection, and audit controls.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables agents to discover and invoke operations from any OpenAPI service by managing deployments, authentication, and request building.
      48 PyPI
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Turns existing REST/OpenAPI APIs into governed MCP tools for AI agents without modifying the APIs themselves, generating agent-friendly tools from specs, Postman collections, HAR files or cURL commands. Owners enable tools and set policies, while every call injects upstream credentials, redacts PII, projects responses to fit context limits, and produces a full audit trail.
      49 npm
      5
      Apache 2.0