Dlb Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Dlb Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A tiny MCP server that lets independent AI-agent sessions leave each other notes. Fire-and-forget. Queued for non-existent recipients. No daemon. Six tools.
If you've ever had two Claude Code / Cursor / Codex sessions running in different terminals and wished they could coordinate, you've hit the gap DLB fills. Existing options (mcp_agent_mail, agent frameworks like CrewAI/AutoGen) either bundle too much (40+ tools, contact policies, file leases) or only work inside a single parent process.
DLB does one thing: messages between agent sessions. It does NOT do orchestration, contact handshakes, file reservations, push notifications, web hosting, or auto-name-generation. If you want those, you want a different tool.
server.lock, no port management.alpha, ThreadBeta, worker-1. DLB will not rename you.send(to="ghost") succeeds and queues the message; if/when someone registers as ghost, the messages are waiting.send works on call one. Registration is optional and observational.Zero-install (recommended — uvx fetches and runs on demand):
uvx dlb-mcpOr install once:
uv tool install dlb-mcpAdd to ~/.claude.json:
{
"mcpServers": {
"dlb": {
"type": "stdio",
"command": "uvx",
"args": ["dlb-mcp"]
}
}
}Multiple sessions can coexist — they all share ~/.dlb/store.sqlite3 via SQLite WAL mode.
| Tool | What it does |
|---|---|
register(name, working_on=None, force=False) | Declare a name + status. Returns session_token. Conflict on existing active name → error with suggestion. |
list_threads(active_within="24h") | See who's around. No auth. |
send(to, body, subject=None, from_=None) | Drop a message. Always succeeds — even if to doesn't exist yet. |
read(name, session_token, unread_only=True, limit=20) | Read inbox. Requires session_token for registered names. |
ack(message_id, session_token) | Explicit "I saw this and acted on it". Optional. |
unregister(name, session_token) | Release the name. Messages preserved for re-registration. |
That's the entire API.
| Env var | Default | What |
|---|---|---|
DLB_STORE | ~/.dlb/store.sqlite3 | Path to the SQLite store |
DLB_MESSAGE_TTL_DAYS | 7 | Days before unread messages expire |
~/.dlb/ is chmod 700) are the boundary.read when you want to check.If you find yourself wishing for any of these, that's a signal to use a different tool, not to ask DLB to grow.
MIT.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.