Doof
БесплатноНе проверенA private line from an agent to its owner: hesitate before a doubtful act, confess after a mistake. MCP server.
Описание
A private line from an agent to its owner: hesitate before a doubtful act, confess after a mistake. MCP server.
README
Independent disclosure infrastructure for AI agents. An MCP server with two tools: hesitate before a doubtful action, confess after a mistake. The person the agent works for is told at once, on a channel they confirmed, and every disclosure lands in a signed record.
Connect an agent
Get a token by confirming your email at doof.com/start, then:
# Claude Code
claude mcp add doof --transport http https://www.doof.com/mcp --header "Authorization: Bearer <token>"
# Codex
export DOOF_TOKEN=<token>
codex mcp add doof --url https://www.doof.com/mcp --bearer-token-env-var DOOF_TOKEN
Cursor, Windsurf and other MCP clients:
{
"mcpServers": {
"doof": {
"url": "https://www.doof.com/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Nothing else to install. doof is three tool definitions, about 600 tokens in the prompt; there is no proxy and nothing in the path. Agent-facing instructions: doof.com/for-agents.md. Evidence that agents use it: doof.com/evidence.
doof gives an agent two MCP tools:
hesitate— before acting, when it is unsure whether an action goes beyond what the person intended.confess— after it learns that something it did may have been wrong.
The disclosure goes to the email address that person confirmed and into their private record. doof does not approve, block, reverse, or judge the action. It only records what the agent chose to report and delivers it directly.
Try the hosted product at doof.com, or run the same Apache-2.0 server yourself.
What is in this repository
This is the complete hosted product, not a client shim around a private backend:
- the MCP server and the
hesitate,confess, andmy_recordtools; - email confirmation and notice delivery;
- the private record and signed, hash-chained exports;
- the website and setup flow;
- the evaluation harness and published methodology.
The hosted service adds operations, a Postgres database, email delivery, a signing key, and backups. There is no separate closed-source control plane.
Run locally
Node 22 or later is required.
cp .env.example .env
npm ci
npm run dev
Open http://localhost:3005/start. The example configuration uses an in-memory store, prints emails to the terminal, and generates a throwaway signing key. Nothing survives a restart.
To inspect every setup and email state without repeatedly confirming an address, set ENABLE_PREVIEWS=true and open http://localhost:3005/_preview. Preview pages use fake details and never issue a working token.
Self-host in production
Production has three secret or service variables:
| Variable | What it provides |
|---|---|
DATABASE_URL |
Persistent Postgres storage |
DOOF_SIGNING_KEY |
Stable Ed25519 signatures for the record |
RESEND_API_KEY |
Email confirmation and disclosure delivery |
It also needs three non-secret deployment values:
| Variable | Example |
|---|---|
PUBLIC_URL |
https://doof.example.com |
ALLOWED_HOSTS |
doof.example.com |
NOTICE_FROM |
doof <[email protected]> |
Set STORE=postgres. If the app is behind one trusted reverse proxy, set TRUST_PROXY=1; otherwise leave it false. An incorrect proxy setting weakens the IP rate limits.
Optional product analytics are enabled with POSTHOG_KEY and POSTHOG_HOST. When unset, no analytics script or backend client is started. When enabled, doof sends page views with query strings removed, plus named setup, MCP, disclosure-delivery, record-view and export events. Session recording, automatic interaction capture, identified profiles, IP geolocation and private payload fields are disabled. Email addresses, tokens, disclosure text, record contents, signatures and hashes are never included in analytics events.
Generate a signing key once, store it as a secret, and keep it stable across deploys:
node -e "console.log(require('crypto').generateKeyPairSync('ed25519').privateKey.export({type:'pkcs8',format:'der'}).toString('base64'))"
Production startup deliberately fails if Postgres, email delivery, the signing key, HTTPS public URL, or allowed public host is missing. That prevents a deployment from silently losing records, changing its verification identity, or printing private notices to logs.
docker build -t doof .
docker run --rm -p 3005:3005 --env-file .env doof
The container runs migrations before starting the server and runs as an unprivileged user. You are responsible for Postgres, Resend, secrets, TLS termination, backups, monitoring, and retention policy.
Product routes
- Human setup:
/start - Private record:
/record - MCP endpoint:
/mcp - Agent-facing instructions: public/for-agents.md
- Trust and privacy:
/trust - Plain-text product promise: public/promise.md
- Public verification key:
/.well-known/doof-key.json
Verify a record
Every entry is hash-chained to the one before it and signed with Ed25519. Export a record and check it offline:
curl -s -X POST https://doof.com/record/export -d "token=$DOOF_TOKEN" > export.json
npx tsx scripts/verify.ts export.json
The expected result is OK: N entries .... Compare an export with an earlier export or email receipt to detect changes over time. Signatures make alteration detectable against that external evidence; they do not make a server operator incapable of changing its own database and signing a new chain.
Tests and evaluation
npm test
npm run build
The tests cover the MCP contract, email and setup flows, redaction, ledger verification, and the product boundaries described on the trust page. The latest preregistered controlled evaluation is published in docs/eval3/prereg.md, with the complete results in docs/eval3/results.md, the frozen product text in docs/eval3/doof-v2.md, and the reproducible harness in harness/eval3/. The earlier evaluation remains in docs/eval2/. Raw model-run transcripts are generated under harness/runs/ and intentionally excluded from Git because they are large and can contain provider payloads; the eval 3 archive is available on request.
Privacy boundary
On hosted doof, the operator can technically access the database and backups. Resend processes the confirmed address and each notice to deliver the email. PostHog receives page views with query strings removed and named product events with pseudonymous identifiers. Session recording, automatic interaction capture, identified profiles and IP geolocation are disabled; email addresses, tokens, disclosure text and record contents are excluded. doof does not sell disclosures or use them to train models. If that trust boundary is unacceptable, self-host the same code with your own database, email provider, key, and backups.
See SECURITY.md for reporting security issues.
Licence
Apache-2.0.
Установка Doof
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/doof-labs/doofFAQ
Doof MCP бесплатный?
Да, Doof MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Doof?
Нет, Doof работает без API-ключей и переменных окружения.
Doof — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Doof в Claude Desktop, Claude Code или Cursor?
Открой Doof на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
Roblox Studio
Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce
автор: paralovOpencode Omniroute Plugin
OpenCode plugin for the OmniRoute AI Gateway. Drives dynamic model discovery, /connect auth flow, and multi-instance OmniRoute providers via the official @openc
автор: GitHub ActionsAWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
автор: lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
MCPHub
Website to list high quality MCP servers and reviews by real users. Also provide online chatbot for popular LLM models with MCP server support.
Compare Doof with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
