npm @impri/mcpstdioMITupdated 7d ago
The imprimatur for your AI agents. Watchers watch the world, the Approval Inbox holds the agent's hands until a human says yes.
What can you do with Impri?
Impri — Approval Inbox for AI Agents
The imprimatur for your AI agents. Watchers watch the world, the Approval Inbox holds the agent's hands until a human says yes.
Quickstart
Two ways to run Impri — pick one. Both give you an API key and an inbox URL in under 5 minutes.
Cloud (no install)
curl -s -X POST https://api.impri.dev/v1/signup \
-H "Content-Type: application/json" \
-d '{"name": "my-agent"}'
# → { "key": "im_...", "project_id": "proj_...", ... }
Or skip curl and click Create an API key at app.impri.dev — same result. Your inbox is at app.impri.dev, the API base URL is https://api.impri.dev/v1. It's early beta but is the fastest way to try Impri with no Docker required.
Docker Compose (self-host, < 5 minutes)
git clone https://gitlab.com/sekera.radim/impri.git
cd impri
docker compose up
Open http://localhost:8080 in your browser.
On first start the server prints the bootstrap Admin API key to the logs:
╔══════════════════════════════════════════════════════╗
║ IMPRI — FIRST RUN BOOTSTRAP ║
╠══════════════════════════════════════════════════════╣
║ Admin API Key: im_... ║
║ Project ID: proj_... ║
║ Store this key securely — it will not be shown again.║
╚══════════════════════════════════════════════════════╝
Copy the key, paste it into the login screen, and you're in.
Dev mode (hot-reload, self-host)
Terminal 1 — server:
cd server
npm install
npm run dev
# Server starts on http://localhost:8484
Terminal 2 — UI:
cd ui
npm install
npm run dev
# UI starts on http://localhost:5173
# /v1 requests are proxied to localhost:8484
API at a glance
Base URL: https://api.impri.dev/v1 (cloud) or http://localhost:8484/v1 (self-host)
Auth: Authorization: Bearer im_<key>
| Method | Path | Description |
|---|---|---|
| POST | /v1/actions |
Push a new action for approval |
| GET | /v1/actions |
List actions (?status=pending&q=…&kind=…&since=…) |
| GET | /v1/actions/:id |
Get action detail + decision |
| POST | /v1/actions/:id/decision |
Approve or reject (single) |
| POST | /v1/actions/bulk-decision |
Approve or reject up to 50 actions at once |
| POST | /v1/actions/:id/result |
Report execution result |
| GET | /v1/openapi.json |
OpenAPI spec |
Push an action (curl example)
curl -X POST https://api.impri.dev/v1/actions \
-H "Authorization: Bearer im_..." \
-H "Content-Type: application/json" \
-d '{
"kind": "reddit.comment",
"title": "Reply to: Why is resume advice so conflicting?",
"preview": {
"format": "markdown",
"body": "The advice conflicts because..."
},
"target_url": "https://reddit.com/r/jobs/comments/...",
"expires_in": 86400,
"editable": ["preview.body"]
}'
Self-hosting instead? Swap the URL for http://localhost:8484/v1/actions.
MCP server (Claude Code / agents)
npx @impri/mcp
# cloud: IMPRI_API_KEY=im_... IMPRI_BASE_URL=https://api.impri.dev
# self-host: IMPRI_API_KEY=im_... IMPRI_BASE_URL=http://localhost:8484
Project structure
server/ TypeScript + Fastify + SQLite — REST API (port 8484)
mcp/ MCP server (stdio) — thin wrapper over the REST API
ui/ Vue 3 + Vuetify — web inbox (port 5173 dev / 8080 Docker)
docker/ Dockerfiles (server.Dockerfile)
docs/ Research, ADRs
CLI
The impri CLI lets humans manage the inbox from a terminal — approve, reject, tail pending actions, add watchers, and manage keys — without writing any code.
# Build and install (local, pre-npm)
cd sdk/typescript && npm install && npm run build
cd ../cli && npm install && npm run build
npm install -g ./cli
# Connect to your instance
impri init --cloud --signup # or: impri init (self-hosted)
# Common commands
impri inbox # pending actions
impri tail # live-tail new actions
impri approve act_abc123
impri watch add github-releases --param owner=fastify --param repo=fastify
SDKs & integrations
v0.1, pre-release — both cloud and self-host work today; expect rough edges either way.
| Package | Location | Language |
|---|---|---|
| CLI | cli/ |
Node 18+ |
| Python SDK | sdk/python/ |
Python 3.10+ |
| TypeScript SDK | sdk/typescript/ |
Node 18+ (native fetch) |
| MCP server | mcp/ / npx @impri/mcp |
Any MCP client |
pip install -e sdk/python # Python SDK (local, pre-PyPI)
npm install ./sdk/typescript # TS SDK (local, pre-npm)
npx @impri/mcp # MCP server (published)
- Python SDK reference
- TypeScript SDK reference
- Integrations — LangChain, OpenAI Agents, CrewAI, n8n, Make, Zapier, webhook receivers
- Cookbook — recipes for email approval, SQL gating, social posts, idempotent batches, webhook verification, key rotation
Documentation
- Web docs: https://impri.dev/docs
- CLI reference — install,
impri init, every command with examples, config + env precedence - Quickstart — signup → first approved action in < 5 min
- Example agent — a complete, dependency-free agent that proposes an action, waits for approval, then acts and reports back
- How to add human approval to an AI agent
- Self-hosting — Docker, env vars, backups, reverse proxy
- Webhooks — HMAC verification, retries, polling fallback
- Inbox UX & Bulk API — keyboard shortcuts, bulk approve/reject, search/filter parameters,
POST /v1/actions/bulk-decisionreference - Watcher presets — 18 ready-to-use templates (HN, Reddit, GitHub, npm, arXiv, …); REST + SDK + MCP usage
- Notification channels — Slack, Discord, Telegram, ntfy, email, and generic webhook; digest window, auto-disable, SSRF protection
- Telegram Approval Bot — in-chat Approve / Reject buttons; setup, security model, troubleshooting
- Audit log — event types, query API (
GET /v1/audit), export (NDJSON/CSV), retention, and security model llms.txt— machine-readable index for AI assistants
Self-hosting notes
- SQLite data is persisted in a Docker volume (
impri-data). - Set
WEBHOOK_SECRETenv var to a random string for HMAC webhook signing. BASE_URLshould match the public URL of your deployment (used in inbox_url links).
License
MIT — see LICENSE. Self-host the full core freely; the hosted cloud
and team features are the paid offering (see MONETIZATION.md).
Install
Add Impri to your client. Pick the one you use.
claude mcp add mcp -- npx -y @impri/mcpcodex mcp add mcp -- npx -y @impri/mcpamp mcp add mcp -- npx -y @impri/mcp{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"mcp","command":"npx","args":["-y","@impri/mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@impri/mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"@impri/mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @impri/mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 0 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.1.1Latest | Jul 12, 2026 |