confirm-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@confirm-mcprequest approval to refund $500 to customer 78910"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
confirm-mcp
An MCP server that gives any MCP-compatible agent (Claude Desktop, Cursor, and others) a human-approval tool. Before the agent does something irreversible, it calls request_approval, a human approves or edits the action at confirm.dev, and the agent proceeds with the approved result. Every decision is logged.
Setup
Get an API key at confirm.dev, then add the server to your MCP client config.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"confirm": {
"command": "npx",
"args": ["-y", "confirm-mcp"],
"env": { "CONFIRM_API_KEY": "cfm_live_..." }
}
}
}That's it. The agent now has two tools.
Related MCP server: final-approval
Tools
request_approval
Pause and ask a human to approve a sensitive action. Blocks until the human decides or the wait elapses.
Input | Description |
| One line the human reads, e.g. "Refund $10,000 to customer #4821". Required. |
| Approver email, or |
| The exact action as structured data. The human can edit it before approving. |
| Why the agent wants to do this. |
| The agent's recent steps, for context (max 10). |
| How long the request stays valid (5 to 10080). |
| How long to block before returning "pending" (default 15). |
On APPROVED, the tool returns the effectivePayload to use (the human may have edited it). On REJECTED or EXPIRED, it tells the agent to stop. If the wait elapses while still pending, it returns the request id so the agent can poll later.
check_approval
Poll a previously created request by id to see whether a human has decided.
Why a tool, not a prompt
The approval is enforced server-side: the agent cannot fake a verdict, and every decision is recorded in an immutable audit log. Teaching the agent when to call this (via a system prompt or an agent skill) is the coverage layer; the tool is the enforcement layer.
For production agents where you need guaranteed coverage of specific actions, use the deterministic policy engine in @confirm/sdk (guard()) rather than relying on the model to remember to call the tool.
Docs: confirm.dev/docs. Node 18+.
Development
This package is developed in a private monorepo alongside the Confirm.dev service and mirrored here on every release, which is why the history starts at the first public release. Issues and PRs are welcome; PRs get cherry-picked upstream.
Build: npm install && npm run build. Test: node smoke.mjs (after a build; uses a mocked client, no network).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/brendanlim/confirm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server