EU AI Act — the deployer is accountable for what an AI agent does. VINCHY gives you the oversight + records to prove it.
How it works Features Roadmap Developers Gap Score EU AI Act Sign in Create account
Developer preview — part of V2

Embed the VINCHY gate
in your own stack.

A tiny SDK (Python & JavaScript, zero dependencies) and an MCP firewall that hold your agent's risky actions for human approval — and record every attempt on a tamper-evident, Ed25519-signed audit trail. Works with LangChain, CrewAI, AutoGen, n8n, Zapier, Claude Desktop or plain code.

Get the SDK ↓ Get an API key →
01

Request

Your code asks VINCHY before a risky action — one HTTP call, wrapped by the SDK.

02

Hold

VINCHY holds the action as pending. Nothing runs yet.

03

Approve

A named human approves or rejects it in the VINCHY Inbox.

04

Prove

Every step is hash-chained and Ed25519-signed — verifiable later, by anyone with the public key.

SDK

Python & JavaScript — one gate, three shapes LIVE

A decorator for functions, an inline gate for single actions, and a non-blocking request for long-running flows. Standard library only — drop the file next to your agent and go.

# configure once (key from vinchy.ai/app → Settings → Connect)
export VINCHY_API_KEY=pk_...
export VINCHY_AGENT_ID=...

Python

from vinchy import Vinchy
vinchy = Vinchy()

@vinchy.requires_approval(
    "financial_transaction",
    detail=lambda iban, amt: {"recipient": iban, "amount": amt},
)
def pay_invoice(iban, amt):
    return bank.transfer(iban, amt)  # runs ONLY after a human approves

# or inline:
if vinchy.gate("email_send", {"to": addr, "subject": subj}):
    smtp.send(addr, subj, body)

JavaScript / TypeScript

import { Vinchy } from "./vinchy.js";
const vinchy = new Vinchy();  // env-configured, Node 18+

// inline gate:
if (await vinchy.gate("financial_transaction", { recipient, amount }))
  await bank.transfer(recipient, amount);

// wrapper (same idea as the decorator):
const payInvoice = vinchy.requiresApproval(
  "financial_transaction",
  (iban, amt) => ({ recipient: iban, amount: amt }),
)(async (iban, amt) => bank.transfer(iban, amt));
Both SDKs include a client-side rate limit and a local audit echo — statically visible controls that code scanners and auditors can see. A rejected action raises ActionRejected; no decision in time raises ApprovalTimeout. Works inside Zapier Code steps and n8n Code nodes too.
MCP Firewall

Put a gate in front of your MCP tools LIVE

A Model Context Protocol server for Claude Desktop, Cursor or any MCP client. Risky tool calls — pay, send, delete, export — are held for a named human; low-risk reads pass straight through. It can also proxy your entire Zapier MCP and wrap its tools with the same gate.

Standalone firewall

Three built-in gated tools (send_email, make_payment, http_request) — the fastest way to feel the gate.

{
  "mcpServers": {
    "vinchy-firewall": {
      "command": "node",
      "args": ["/path/to/vinchy-mcp-firewall/server.js"],
      "env": {
        "VINCHY_API_KEY": "pk_your_key",
        "VINCHY_AGENT_ID": "your_agent_id"
      }
    }
  }
}

Zapier MCP proxy

Mirrors your Zapier MCP tools to the client — every risky call is held before it reaches the real app.

{
  "mcpServers": {
    "vinchy-zapier": {
      "command": "node",
      "args": ["/path/to/vinchy-mcp-firewall/proxy-server.js"],
      "env": {
        "ZAPIER_MCP_URL": "https://mcp.zapier.com/api/mcp/s/…/mcp",
        "VINCHY_API_KEY": "pk_your_key",
        "VINCHY_AGENT_ID": "your_agent_id"
      }
    }
  }
}
Anti-replay built in: each tool call gets a stable idempotency key, so a retry of the same call — including the post-approval retry of a held one — reuses the first approval instead of opening a duplicate. Classification is by exact map first, then name heuristics (pay/charge → financial, delete/remove → data_delete, get/list/search → auto-approved read).
Informational — not legal advice. VINCHY supports human-oversight and record-keeping duties (EU AI Act Art. 14 & 26); it is not a certification of compliance.

Gate your first action today

Create a free account, grab a project API key from Settings → Connect, and hold your first risky action for approval in minutes.

Open the app Questions? Write to us