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.
Your code asks VINCHY before a risky action — one HTTP call, wrapped by the SDK.
VINCHY holds the action as pending. Nothing runs yet.
A named human approves or rejects it in the VINCHY Inbox.
Every step is hash-chained and Ed25519-signed — verifiable later, by anyone with the public key.
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=...
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)
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));
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.
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"
}
}
}
}
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"
}
}
}
}
Create a free account, grab a project API key from Settings → Connect, and hold your first risky action for approval in minutes.